PHP错误:警告:无法修改标头信息

编程入门 行业动态 更新时间:2024-10-28 04:23:56
PHP错误:警告:无法修改标头信息 - 已由[重复]发送的标头(PHP Error : Warning: Cannot modify header information - headers already sent by [duplicate])

这个问题在这里已有答案:

如何修复PHP 11答案中的 “Headers already sent”错误

请帮助我:当我锁定LOGIN按钮,显示错误时,我无法解决这个问题。 我是php新手。

警告:无法修改标题信息 - 已在第56行的/home/kanak/public_html/celltopc/login.php中发送的标题(在/home/kanak/public_html/celltopc/login.php:33中开始输出)

我的代码是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Login</title> <link href="css/usercss.css" rel="stylesheet" type="text/css" /> <style type="text/css"> <!-- body { background-image: url(images/LoginForm_bg.jpg); background-repeat: repeat; } --> </style></head> <body> <div class="shadow" id="login"> <div id="login-body"> <form action="login.php" method="post" name="loginform"> <strong>Username:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="username" type="text" class="input" value="username" maxlength="10" /> <p><br /> <strong>Password:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="password" type="password" class="input" value="password" /> <p><br /> <input type="submit" name="submit" value="Login" width="30" class="myButton"> </form> <p> <br /> <?php ob_start(); @session_start(); include'include/config.php'; include'include/opendb.php'; @$username=$_POST['username']; @$password=$_POST['password']; if($username&&$password) { $connect=mysql_connect("$dbhost","$dbuser","$dbpass")or die("Couldnt connect to Database"); mysql_select_db("$dbname") or die ("Could not find to Database"); $query = mysql_query ("SELECT * FROM user WHERE username='$username'"); $numrows = mysql_num_rows($query); if ($numrows != 0) { while ($rows = mysql_fetch_assoc($query)) { $dbusername = $rows['username']; $dbpassword = $rows['password']; } if($username==$dbusername&&$password==$dbpassword) { header("location:main.php"); $_SESSION['username']=$dbusername; } else die("<p class=error>*&nbsp;Increate Password</p>"); } else die("<p class=error>*&nbsp;The username doesnot exist</p>"); } else die ("<p class=text>*&nbsp;Please entre a username and password</p>"); ?> </div> </div> </body> </html>

This question already has an answer here:

How to fix “Headers already sent” error in PHP 11 answers

Plese Help me : when I lock LOGIN button, show the error, I can not fix this proplem. i am new in php.

Warning: Cannot modify header information - headers already sent by (output started at /home/kanak/public_html/celltopc/login.php:33) in /home/kanak/public_html/celltopc/login.php on line 56

My code is :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Login</title> <link href="css/usercss.css" rel="stylesheet" type="text/css" /> <style type="text/css"> <!-- body { background-image: url(images/LoginForm_bg.jpg); background-repeat: repeat; } --> </style></head> <body> <div class="shadow" id="login"> <div id="login-body"> <form action="login.php" method="post" name="loginform"> <strong>Username:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="username" type="text" class="input" value="username" maxlength="10" /> <p><br /> <strong>Password:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="password" type="password" class="input" value="password" /> <p><br /> <input type="submit" name="submit" value="Login" width="30" class="myButton"> </form> <p> <br /> <?php ob_start(); @session_start(); include'include/config.php'; include'include/opendb.php'; @$username=$_POST['username']; @$password=$_POST['password']; if($username&&$password) { $connect=mysql_connect("$dbhost","$dbuser","$dbpass")or die("Couldnt connect to Database"); mysql_select_db("$dbname") or die ("Could not find to Database"); $query = mysql_query ("SELECT * FROM user WHERE username='$username'"); $numrows = mysql_num_rows($query); if ($numrows != 0) { while ($rows = mysql_fetch_assoc($query)) { $dbusername = $rows['username']; $dbpassword = $rows['password']; } if($username==$dbusername&&$password==$dbpassword) { header("location:main.php"); $_SESSION['username']=$dbusername; } else die("<p class=error>*&nbsp;Increate Password</p>"); } else die("<p class=error>*&nbsp;The username doesnot exist</p>"); } else die ("<p class=text>*&nbsp;Please entre a username and password</p>"); ?> </div> </div> </body> </html>

最满意答案

您在调用ob_start()之前发送了HTML。 因此,当PHP尝试设置会话cookie时,它不能,并且您会收到警告。

要解决此问题,请将ob_start()的PHP代码移动到文件的最顶层:

<?php ob_start(); session_start(); ?> <!DOCTYPE....

You sent HTML before calling ob_start(). So when PHP tries to set your session cookie, it can't, and you get the warning.

To fix it, move the PHP code for ob_start() to the very top of the file:

<?php ob_start(); session_start(); ?> <!DOCTYPE....

更多推荐

本文发布于:2023-07-28 16:12:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1306863.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:错误   信息   PHP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!