我已经花了好几个小时来解决这个问题。在我确定主机出现问题之前,我将在这里尝试。我不得不将该网站从一个主机移到另一个主机上,除了该文件之外,网站上的所有内容都在工作。这是一个CRM系统,这是“删除客户端”选项。它会删除客户端,但仅显示消息“客户端已删除。请稍等...”,它不会重定向。停留在此消息的页面上。我真的很茫然,因为其他文件具有完全相同的重定向并可以正常工作吗?
<?php
include('dbopen.php');
$delete_id = $_GET['details_id'];
// sql to delete a record
$sql = "DELETE FROM details WHERE details_id= $delete_id";
if ($conn->query($sql) == TRUE) {
//delets record but does not re-direct?
header("refresh:3; url=clients.php");
echo "client deleted. Please hold...";
} else {
echo "Error deleting record: Contact Dylan";
}
$conn->close();
?>
答案 0 :(得分:1)
将标头发送到浏览器时,代码无法正常工作的原因是,文件开头有空白。注意单个空格字符。发送任何内容后,即使它是空白,也无法将任何其他标头发送到浏览器。如果您检查日志文件或enable error display,您会注意到它给您一个错误,表明标题已发送。
答案 1 :(得分:1)
使用
header("Location: clients.php");
应该可以。但是,在标头函数之前,不应存在任何html或空格。 在您的代码中,
之前有一个小的空白<?php
标签。
答案 2 :(得分:0)
尝试这个:-
if ($conn->query($sql) == TRUE){
//header("refresh:3; url=clients.php");
echo "<script>alert('client deleted. Please hold...');</script>";
echo "<script>setTimeout(function(){window.location = 'clients.php' ;}, 3000) ; </script>" ;
}
使用此代码,它将按预期工作,但它使用JavaScript重定向而不是PHP标头,因为PHP标头在执行过程中不起作用。