09/10/2018, 23:34

Nhập viện với bệnh Cannot modify header information của PHP-MySql

khi chạy đoạn code sau:
code:
Code:
<?php
//ob_start();
//ob_end_clean();
// Connects to your Database 
require_once("configuration.php");
//Checks if there is a login cookie
if(isset($_COOKIE['ID_my_site']))
//if there is, it logs you in and directes you to the members page
{ 
	$username = $_COOKIE['ID_my_site']; 
	$pass = $_COOKIE['Key_my_site'];
	$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
	while($info = mysql_fetch_array( $check )) 	
		{
		if ($pass != $info['password']) 
			{
			}
		else
			{
			header("Location: members.php");
			}
		}
}
//if the login form is submitted
if (isset($_POST['submit'])) { // if form has been submitted
// makes sure they filled it in
	if(!$_POST['username'] | !$_POST['pass']) {
		die('You did not fill in a required field.');
	}
	// checks it against the database
	if (!get_magic_quotes_gpc()) {
		$_POST['email'] = addslashes($_POST['email']);
	}
	$check = mysql_query("SELECT * FROM users WHERE username = '".$_POST['username']."'")or die(mysql_error());
//Gives error if user dosen't exist
$check2 = mysql_num_rows($check);
if ($check2 == 0) {
		die('That user does not exist in our database. <a href=register.php>Click Here to Register</a>');
				}
while($info = mysql_fetch_array( $check )) 	
{
$_POST['pass'] = stripslashes($_POST['pass']);
	$info['password'] = stripslashes($info['password']);
	$_POST['pass'] = md5($_POST['pass']);
//gives error if the password is wrong
	if ($_POST['pass'] != $info['password']) {
		die('Incorrect password, please try again.');
	}
else
{
// if login is ok then we add a cookie 
$_POST['username'] = stripslashes($_POST['username']);
$hour = time() + 3600; 
setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);	
//then redirect them to the members area
header("Location: members.php");
}
}
} else {	
// if they are not logged in
require_once("header.php");
?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<table border="0">
<tr><td colspan=2><h1>Login</h1></td></tr>
<tr><td>Tên truy cập:</td><td>
<input class="inputbox" type="text" name="username" maxlength="40">
</td></tr>
<tr><td>Mật khẩu:</td><td>
<input class="inputbox" type="password" name="pass" maxlength="50">
</td></tr>
<tr><td colspan="2" align="right">
<input class="button" type="submit" name="submit" value="Đồng ý">
<input class="button" type="reset" name="clean" value="Huỷ bỏ">
</td></tr>
</table>
</form>
<?php
require_once("footer.php");
}
?>
thì bị lỗi sau:


Warning: Cannot modify header information - headers already sent by (output started at D:xampphtdocsetestlogin.php:1) in D:xampphtdocsetestlogin.php on line 54

Warning: Cannot modify header information - headers already sent by (output started at D:xampphtdocsetestlogin.php:1) in D:xampphtdocsetestlogin.php on line 55

Warning: Cannot modify header information - headers already sent by (output started at D:xampphtdocsetestlogin.php:1) in D:xampphtdocsetestlogin.php on line 57

Mong các "Bác Sỹ" cho xin thuốc và phác đồ điều trị
3do viết 01:45 ngày 10/10/2018
kiểm tra 3 kí tự BOM ở đầu file này và các file liên quan, nếu có thì xóa nó đi xem sao
jiSh@n viết 01:42 ngày 10/10/2018
PHP mà gặp bệnh này là ko có thuốc chữa đâu, chuyển sang ASP.NET đi.
cuongdh viết 01:40 ngày 10/10/2018
<?php
ob_start();---> Bỏ dấu // đi là được.
anhln viết 01:35 ngày 10/10/2018
Quote Được gửi bởi cuongdh View Post
<?php
ob_start();---> Bỏ dấu // đi là được.
Vẫn ko được, nó vẫn váo lỗi đó ở các dòng:

setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);
//then redirect them to the members area
header("Location: members.php");

Có lẽ phải nhờ các bác giải thích cho tại sao lại bị thế, bị trong trường hợp nào ???
levanvy83 viết 01:48 ngày 10/10/2018
Nó báo lỗi này là do bạn dùng 2 lệnh header("Location: members.php"); trong file này. Trong PHP bạn chỉ được dùng 1 lệnh header("Location:..."); trong 1 file thôi. Nếu bạn vẫn muốn viết theo kiểu trên thì có thể dùng javascript để redirect thay cho lệnh header hoặc muốn tối ưu thì viết lại để có 1 lệnh header thôi.
PS: Bạn nên dùng CODE để chèn code vào cho có indent cho mọi người dễ nhìn và nếu thể thì hightlight các dòng báo lỗi.
vietgiaitri viết 01:43 ngày 10/10/2018
Thường thì file php rất hay bị lỗi này. Cái lỗi này ít ảnh hưởng đến trang web vì web vẫn có thể chạy bình thường chỉ có điều là nó show cái thông báo trên đầu nhìn mất cảm tình.
Mình đang xài IPB nó có 1 cách là só6ng chung với cái thông báo trên bằng 1 cách nào đó họ "dấu" cái thông báo đó đi thế là xong web vẫn chạy bình thường mà lại không show thông báo
anhtuannd viết 01:36 ngày 10/10/2018
Quote Được gửi bởi vietgiaitri View Post
Thường thì file php rất hay bị lỗi này. Cái lỗi này ít ảnh hưởng đến trang web vì web vẫn có thể chạy bình thường chỉ có điều là nó show cái thông báo trên đầu nhìn mất cảm tình.
Mình đang xài IPB nó có 1 cách là só6ng chung với cái thông báo trên bằng 1 cách nào đó họ "dấu" cái thông báo đó đi thế là xong web vẫn chạy bình thường mà lại không show thông báo
PHP Code:
<?
error_reporting(0);
?>
anhln viết 01:38 ngày 10/10/2018
Quote Được gửi bởi levanvy83 View Post
PS: Bạn nên dùng CODE để chèn code vào cho có indent cho mọi người dễ nhìn và nếu thể thì hightlight các dòng báo lỗi.

dùng CODE để chèn code vào thế nào nhỉ? Em mới học nên chưa biết.
anhln viết 01:45 ngày 10/10/2018
Quote Được gửi bởi vietgiaitri View Post
Thường thì file php rất hay bị lỗi này. Cái lỗi này ít ảnh hưởng đến trang web vì web vẫn có thể chạy bình thường chỉ có điều là nó show cái thông báo trên đầu nhìn mất cảm tình.
Mình đang xài IPB nó có 1 cách là só6ng chung với cái thông báo trên bằng 1 cách nào đó họ "dấu" cái thông báo đó đi thế là xong web vẫn chạy bình thường mà lại không show thông báo
Có cách nào tốt hơn cách "dấu" không bác? Có đúng là lỗi này không ảnh hưởng tới trang web không? Các nhà phát triển có biết không sao không sửa?
Bài liên quan
0