我有一个脚本将输入表单的电子邮件提交到数据库,我想知道在提交电子邮件后是否有办法重定向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 :(得分:3)
将此重定向更进一步。标题“location”应与302响应代码一起使用,而不是经典的200响应代码。 Thios响应代码是HTTP响应的“全局”。 302表示“重定向”。即使没有302响应代码,大多数浏览器也会处理位置标题,但您应该设置它(它可以帮助您例如ajax处理您的响应)。
header("Location: /foo.php",TRUE,302);
现在又多了一步。实际上,303响应代码(参见其他)是更好的重定向响应代码。它也被称为重定向后发布。这种特殊的重定向对您的浏览器来说意味着它不是真正的重定向,因为他问的页面位置错误,但它确实是一个重定向,因为在你的POST操作之后你需要一个新的页面结果。
header("Location: /foo.php",TRUE,303);
如thirtydot所述编辑,更好的用法是重定向中的绝对网址
header("Location: http://www.example.com/foo.php",TRUE,303);
请记住POST意味着潜在的数据更改(GET请求不应该暗示)。 POST后跟303是正确的方法,并且会阻止您的BACK按钮重新发布相同的请求。
答案 1 :(得分:2)
使用:
$url = 'http://your.redirect.url';
header('Location: ' . $url);
答案 2 :(得分: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/');
答案 3 :(得分: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;
答案 4 :(得分:0)
在控制器中重定向。
标题('位置:http://www.yoursite.com/new_page.html');
答案 5 :(得分:0)
header("Location http://www.example.com");
这会将浏览器重定向到example.com,请注意,如果尚未将输出发送到浏览器,则只能使用此功能,例如,确保您拥有echo
,print
或{{在使用var_dump
答案 6 :(得分: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)
?>
或发送包含代码的javascripts
<?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)
?>