下面显示的这段代码使用 php 标头重定向在本地工作,但不在我的 Bluehost 服务器上:
if ($_POST['submit']=='No')
{
$url ='Location: index.php?id='.$id.'&page='.$page;
header($url);
exit;
}
当服务器到达这段代码时,绝对没有任何反应。没有错误,没有警告,只是一个空白页。我的表单提交重定向到的页面不应该做任何事情,除了将用户重新路由到相关页面。
我非常肯定它与在重定向之前包含 HTML 的常见问题无关(因为它在本地工作)。因此我怀疑这与我的 php.ini 文件之间的差异有关。我已经为两台服务器提取了 PHPinfo(),我的本地服务器有一个名为 mod_headers 的模块,而我的 Bluehost 服务器没有。我认为这可能是问题所在,尽管通常我的 Bluehost 使用标头重定向没有问题,但在这种情况下除外。
所以我怀疑这个问题与我的ini文件有关,但我不知道到底是什么。
让这个问题更加奇怪的是,还有其他代码块可以正常工作,例如
if(!empty($_POST['id']))
{
$id = htmlentities(strip_tags($_POST['id']));
$sql = "UPDATE entries SET title=?, entry=? WHERE id=? LIMIT 1";
$stmt = $db->prepare($sql);
$stmt->execute(array($title,$entry,$id));
$stmt->closeCursor();
$url= 'Location: ../index.php?id='.$id.'&page='.$page;
header($url);
exit;
}
效果很好。