当我在本地主机上运行它时,此代码工作正常,但在我将其上传到服务器后,标头将无法正常工作。我使用了java脚本窗口定位方法,但重定向页面中的会话为空。当我运行它时它只显示消息。
function userHandle() {
global $conn;
global $email;
$sql = "INSERT INTO votes (Email) VALUES ('$email')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
$_SESSION["email"] = $email;
ob_start();
header("Location: https://sitename.com/login.php");
exit();
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
$_SESSION["email"] = $email;
ob_start();
header("Location: https://sitename.com/login.php");
exit();
}
}
$conn->close();
答案 0 :(得分:1)
标题函数不允许在它之前输出任何内容。因此,要么删除回声,要么使用ob_clean(); ob_start()
答案 1 :(得分:1)
你必须删除
echo "New record created successfully";
和
echo "Error: " . $sql . "<br>" . $conn->error;
答案 2 :(得分:0)
问题是
echo "New record created successfully";
对输出流进行回显后,不能使用标题() 只需删除它们,然后查看header:php.net/header
的手册页答案 3 :(得分:0)
也许你可以用JavaScript做直接页面
<script>window.location = 'URL'</script>
标题( “”);如果你把文件放在最上面,那就好了。
我不确定为什么localhost运行得很好,并且在托管上传后无法正常工作