我有一个简单形式的页面。当我点击提交按钮时,我有一些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');
}
我该怎么办?或者我错过了什么?谢谢
答案 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/');
?>
解决方案1:在您的文件中,将PHP代码移至开头(即<html>
标记之上),并且在使用header()
函数之前也不要回显任何内容。
<强>溶液2:强>
如果您无法重构代码,则需要使用输出缓冲。将ob_start()
作为php页面的第一行,并在使用ob_end_flush()
后使用ob_end_clean()
或header()
。这有效地缓冲了所有输出,这允许您在实际打印任何输出之前调用标头功能。
注意: 请记住在设置exit
标题后始终die()
或Location
。