2011-01-07 123 views
0

我有一个脚本可以将输入表单的电子邮件提交到数据库,我想知道在提交邮件后是否有重定向PHP脚本的方法?在脚本运行后重定向PHP

我的脚本 -

<?php 
$con = mysql_connect("localhost","User","Pass"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("emails", $con); 

$sql="INSERT INTO mlist (email) 
VALUES 
('$_POST[email]'')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 

mysql_close($con) 
?> 

请能有人给明确的指示,因为我学习PHP仍。

+0

如果不产生任何输出; `header(“Location:http://www.example.com/redirect/to/otherpage_or_samepage.php?with = different_variables“);`但要小心,如果你输出一些东西然后发送一个不同的头文件,你会得到一个错误... – acm 2011-01-07 10:19:12

回答

1

试试这个:

mysql_select_db("emails", $con); 

$sql="INSERT INTO mlist (email) VALUES ('$_POST[email]'')"; 

if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } 

mysql_close($con); 

header('Location: http://www.example.com/'); 
+0

哈哈,我们都使用example.com,伟大的思想和所有这一切 – 2011-01-07 10:16:03

+0

@jakenoble :不知道我们哪一个更具创新性:)但是如果不是最快的话,你可以告诉我的手速度更快:)) – Diablo 2011-01-07 10:18:05

0
header("Location http://www.example.com"); 

这将浏览器重定向到example.com,请注意,你只能用这个,如果输出尚未发送到浏览器,例如,要确保你有echoprintvar_dump语句使用header()

2

用途:

$url = 'http://your.redirect.url'; 
header('Location: ' . $url); 
1

此代码从header()手册页采取会重定向到另一个页面上的同一个域,并在同一目录下:

/* Redirect to a different page in the current directory that was requested */ 
$host = $_SERVER['HTTP_HOST']; 
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$extra = 'mypage.php'; 
header("Location: http://$host$uri/$extra"); 
exit; 
3

使此重定向更进一步。标题“位置”应与302响应代码一起使用,而不是经典的200响应代码。 Thios响应代码对HTTP响应是“全局”的。 302意味着'重定向'。即使没有302响应代码,大多数浏览器都会处理位置标题,但是您应该设置它(例如,可以帮助您处理响应的Ajax)。

header("Location: /foo.php",TRUE,302); 

现在更多一步。实际上,303响应代码(see-other)是更好的重定向响应代码。它也被称为重定向。这种特殊的重定向意味着你的浏览器并不是真正的重定向,因为他所问的页面在错误的地方,但它确实是一个重定向,因为在POST动作之后,你需要一个新的页面结果。

header("Location: /foo.php",TRUE,303); 

编辑:由thirtydot指出,更好的使用是绝对URL在重定向

header("Location: http://www.example.com/foo.php",TRUE,303); 

请记住,POST意味着潜在的数据变化(即GET请求should'nt暗示)。后跟303的POST是正确的方法,并且会阻止您的BACK按钮重新发布相同的请求。

0

加送头功能

<?php 
$con = mysql_connect("localhost","User","Pass"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("emails", $con); 

$sql="INSERT INTO mlist (email) 
VALUES 
('$_POST[email]'')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    }else{ 
header("Location: ".$_SERVER["HTTP_REFERER"]); 
} 

mysql_close($con) 
?> 

或发送的JavaScript代码为

<?php 
$con = mysql_connect("localhost","User","Pass"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("emails", $con); 

$sql="INSERT INTO mlist (email) 
VALUES 
('$_POST[email]'')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    }else{ 

echo "<script>"; 
    echo "window.location.href= '".$_SERVER["HTTP_REFERER"]."';"; 
echo "</script>"; 

} 

mysql_close($con) 
?>