警告:无法修改标题信息 - 已发送的标题 - 由回显标题引起?

时间:2017-07-01 10:02:00

标签: php html forms

提交表单时,我收到此警告:

  

警告:无法修改标头信息 - 已发送的标头   (输出从/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>

4 个答案:

答案 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()。

但是,我不确定你想要达到什么目的?因为你的脚本什么都不做。