运行脚本后重定向PHP

时间:2011-01-07 10:12:25

标签: php mysql redirect submit

我有一个脚本将输入表单的电子邮件提交到数据库,我想知道在提交电子邮件后是否有办法重定向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,所以有人可以给出明确的指示。

7 个答案:

答案 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,请注意,如果尚未将输出发送到浏览器,则只能使用此功能,例如,确保您拥有echoprint或{{在使用var_dump

之前的1}}语句

答案 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)
?>