提交表单时,我收到此警告:
警告:无法修改标头信息 - 已发送的标头 (输出从/home/domainname/public_html/test.php:4开始) 第19行/home/basewars/domainname/test.php
我已经看过How to fix "Headers already sent" error in PHP了,我相信这是因为我回应了<title>
,但是我想不出办法解决这个问题。
<!DOCTYPE html>
<html lang="en">
<head>
<?php
if(strpos($_SERVER["SCRIPT_NAME"], 'user') == true) {
echo '<title>'.$username.' - Hello</title>';
}else{
echo '<title>Hello</title>';
}
?>
</head>
<body>
<form method="post">
<input type="submit" name="submit">
</form>
<?php
if(isset($_POST['submit'])) {
header('Location: login.php');
exit();
}
?>
</body>
</html>
答案 0 :(得分:2)
请记住,在任何实际输出之前必须调用header() 通过普通HTML标记,文件中的空行或PHP发送。 使用include或require读取代码是一个非常常见的错误, 函数或其他文件访问函数,并且有空格或空 调用header()之前输出的行。一样的问题 使用单个PHP / HTML文件时存在。
http://php.net/manual/en/function.header.php
<?php
if(isset($_POST['submit'])) {
header('Location: login.php');
exit();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<?php
if(strpos($_SERVER["SCRIPT_NAME"], 'user') == true) {
echo '<title>'.$username.' - Hello</title>';
}else{
echo '<title>Hello</title>';
}
?>
</head>
<body>
<form method="post">
<input type="submit" name="submit">
</form>
</body>
</html>
答案 1 :(得分:0)
标题已经发送,因为文件中的第一行是HTML。输出!DOCTYPE
标记或其他任何内容将导致首先发送标头。在发送任何数据之前,您需要先进行测试和标题输出。
答案 2 :(得分:0)
**Try this code for redirect**
echo '<script>window.location.href ="'.Your url.'";</script>';
答案 3 :(得分:0)
你应该在顶部使用ob_start()。
但是,我不确定你想要达到什么目的?因为你的脚本什么都不做。