这个问题在这里已有答案:
如何修复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> <input name="username" type="text" class="input" value="username" maxlength="10" /> <p><br /> <strong>Password:</strong> <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>* Increate Password</p>"); } else die("<p class=error>* The username doesnot exist</p>"); } else die ("<p class=text>* 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 answersPlese 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> <input name="username" type="text" class="input" value="username" maxlength="10" /> <p><br /> <strong>Password:</strong> <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>* Increate Password</p>"); } else die("<p class=error>* The username doesnot exist</p>"); } else die ("<p class=text>* 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....更多推荐
发布评论