我的PHP表单没有将页面重定向到另一个页面

时间:2012-05-21 09:18:17

标签: php html

我有一个简单形式的页面。当我点击提交按钮时,我有一些sql代码,最后我需要将页面重定向到另一个页面(contact.php)。我的sql代码工作正常,它存储在数据库中,但它不会重定向到另一个页面(对index.php)并显示具有表单(contact.php)的同一页面。 我使用以下代码重定向我的页面:

header('Location: index.php');

我的表格和php代码如下:

  <form  name="contact" action="contact.php"  id="contact_form" method="post" >
 <input  type="hidden" id="ID" name="ID" value="<?php echo $yid ?>" />

 <textarea  id="Reason" name="Remark" placeholder="Write your Reason here" class="required" cols="10" rows="10"></textarea>


  <input class="button altbutton" type="submit" name="submit" value="submit" />

 </form>

 if (isset($_POST['submit'])) {

       $Remark = @$_POST ['Remark'];
       $ID= @$_POST ['ID'];

$query=" my sql code";
$result = mysql_query($query);

header('Location: index.php');

}

我该怎么办?或者我错过了什么?谢谢

5 个答案:

答案 0 :(得分:1)

我想这是因为你把它放在页面上的输出之后,但是没有看到你的代码,这只是在黑暗中刺伤。

要重定向到新页面,您应该使用:

header("Location: index.php");
exit();

另外,请确保将上面的内容放在页面上的任何输出之前,否则它将无效。

执行上述操作时,如果您获得空白页面,则表示出现问题(请检查错误日志或确保错误报告已开启)。

答案 1 :(得分:1)

是否在标题之前发送了一些html?甚至是空白?

也尝试这个(来自here

$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");

答案 2 :(得分:0)

HTTP标题“位置”似乎无法在所有浏览器上正常工作(根据我的经验)。如果您在回显“位置”标题之前已经“回显”了一些HTML(或文本,无论如何),那么PHP函数“标题”将无效。

使用此代码:

<?php
$Js_Redirect = 
"<script>"+
"top.location = 'index.php';"+
"</script>";

echo $Js_Redirect;
exit();
?>

而不是

<?php
header('Location: index.php');
?>

答案 3 :(得分:0)

   if(isset($your_set_values)
    {
         header("Location:index.php");
    }

如果它似乎不起作用: -

首先尝试查找是否有错误?

使用 -

error_reporting(E_ALL & ~E_NOTICE);

如果你没有发现任何错误....尝试打印你的查询和什么..

答案 4 :(得分:0)

请记住,在发送任何实际输出之前必须调用header(),无论是普通HTML标记,文件中的空行还是PHP。使用include或require,函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题。

<html>
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header('Location: http://www.example.com/');
?>

[reference]


解决方案1:在您的文件中,将PHP代码移至开头(即<html>标记之上),并且在使用header()函数之前也不要回显任何内容。

<强>溶液2:
如果您无法重构代码,则需要使用输出缓冲。将ob_start()作为php页面的第一行,并在使用ob_end_flush()后使用ob_end_clean()header()。这有效地缓冲了所有输出,这允许您在实际打印任何输出之前调用标头功能。 注意: 请记住在设置exit标题后始终die()Location