10/10/2018, 09:43
lỗi Warning: Cannot modify header information - headers already sent by chính xác là gì ?
Warning: Cannot modify header information - headers already sent by
có bro nào hiểu rõ cái lỗi này ko. vì em bị nó quần cho 1 hồi điên quá !
phân tích theo lịch sử :
- trước kia em bắt đầu làm web với dreamweaver 8 , mọi thứ vẫn suôn sẻ tốt đẹp , dù cho em có xài setcookie kiểu gì.
- bắt đầu chuyển sang notepad++ vài ngày gần đây , vì nó nhẹ .bắt đầu lỗi như trên . do em setcookie trong <body></body>
- lang thang trên mạng đủ kiểu , tìm kiếm giải pháp , nghe các bro nói trên trời dưới đất đủ kiểu về cái lỗi này . nào là xóa các kí tự ẩn , thêm ob_start() ..,chỉnh php.ini , chuyển mã utf-8 without bom ...
đủ kiểu mà vẫn ko được .
- rồi làm theo kiểu cho setcookie ra ngoài <html></html>
thì lúc này mọi thứ đã ổn, ko có lỗi nữa
vậy vấn đề nằm ở đâu . khi trước kia em cũng để setcookie trong cặp tag body mà nó vẫn chạy rất bình thường , cái hồi còn làm với dreamweaver ( nửa năm )
và bi giờ cũng vậy , 1 file khác cũng chứa setcookie trong tag body vẫn chạy bình thường . còn cái file kia thì phải để setcookie lên đầu trang .
trùng hợp cái là bắt đầu có lỗi khi dùng notepad++
Bài liên quan
Do đó cần phải xem trong file mà setcookie nằm trong <body></body> ta đã test tới case đó chưa đã (tức là case có gọi được setcookie).
Về nguyên tắc là đặt nó lên trước khi có bất kỳ output nào. Chứ không phải là do Dreamweaver hay do Notepad++.
Thân mến.
nhưng trước đây , với file đó , cấu trúc em vẫn xài rất bình thường . nhưng chỉ mới bị chỉ vài ngày nay . nên ko hiểu rõ nguyên do của nó lắm .
chính xác là chỉ mới chuyển sang notepad++ gõ gõ vài ngày nay và cũng là thời điểm nó bị tưng tưng .
có khi vấn đề nằm ở việc chuyển encode từ ansi -> utf-8 và utf-8 without bom . em chỉ mới quan tâm mấy cái này lúc xài notepad++ , còn trước kia dreamweaver thì ko bận tâm nên có thể chưa phát sinh lỗi .
Đó là lý do khi bỏ setcookie lên đầu file thì chạy không có lỗi.
hồi lâu chạy bình thường , nhưng giờ thì tưng tưng . lỗi ko hoàn toàn như vậy , có lẽ còn nhiều điều uẩn trắc bên trong ...
[=========> Bổ sung bài viết <=========]
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>xem anh</title>
<link href="other/site.css" type="text/css" rel="stylesheet">
<script src="other/avim.js" type="text/javascript"></script>
</head>
<body class="body">
<?php include("site/codeall.php");?>
<div align="center" class="containimage">
<div class="banner">
<a href="index.php"><img src="images/banner.jpg" alt="banner"></a></div>
<div class="ads1" align="center">
<?php echo $lienket1;?></div>
<div align="center">
<?php
if (is_numeric($_GET["id"]))
$id=$_GET["id"];
else
$id="1";
$ket_qua0=mysql_query("SELECT `stt` FROM `hinh_anh` WHERE `stt_album`='$id' ORDER BY `stt` LIMIT 0,1");
$firstImage=mysql_fetch_row($ket_qua0);
if (is_numeric($_GET["image"]))
$image=$_GET["image"];
else
$image=$firstImage[0];
$ket_qua1=mysql_query("SELECT * FROM `album_anh` WHERE `stt`='$id'");
$album=mysql_fetch_row($ket_qua1);
$luotXemAlbumMoi=$album[7];
$tenCookie="album_anh$id";
if(!isset($_COOKIE["$tenCookie"]))
{
$luotXemAlbumMoi=$album[7]+1;
setcookie("$tenCookie","1",time()+3600);
mysql_query("UPDATE `album_anh` SET `luot_xem`='$luotXemAlbumMoi' WHERE `stt`=$id");
}
echo "<div style=\"width:600px\">
<div class=\"timecontent\">Ngày $album[4] - Lượt xem $luotXemAlbumMoi - Bình luận $album[8] - Số hình $album[6]</div>
<div class=\"headcontent\" align=\"center\"><a href=\"viewImage.php?id=$id\">$album[1]</a></div><br>
<div class=\"introcontent\">$album[2]</div><br>
</div>
<br>";
include("otherimage.php");
$ket_qua2=mysql_query("SELECT * FROM `hinh_anh` WHERE `stt`='$image'");
$thisImage=mysql_fetch_row($ket_qua2);
$luotXemAnhMoi=$thisImage[4];
$tenCookie="hinh_anh$image";
if(!isset($_COOKIE["$tenCookie"]))
{
$luotXemAnhMoi=$thisImage[4]+1;
setcookie("$tenCookie","1",time()+3600);
mysql_query("UPDATE `hinh_anh` SET `luot_xem`='$luotXemAnhMoi' WHERE `stt`='$image'");
}
echo "<div class=\"introcontent\" align=\"center\"><img src=\"$thisImage[3]\" align=\"center\"></div><br>
<div class=\"introcontent\" align=\"center\">$thisImage[2]</div>
<div align=\"center\">Lượt xem $luotXemAnhMoi</div><br>";
include("otherimage.php");
echo " <br><br><b>Các hình khác trong album : </b><br>" ;
$result2=mysql_query("SELECT `stt` FROM `hinh_anh` WHERE `stt_album`='$id' and `stt`!='$image'");
while ($otherImage=mysql_fetch_row($result2))
{
echo "<a href=\"viewImage.php?id=$id&image=$otherImage[0]\"> $otherImage[0] </a>";
}
echo "<div class=\"boxwhile\" align=\"center\">";
$result=mysql_query("SELECT `stt` FROM `binh_luan4` WHERE `stt2`='$id' and `trang_thai`!='ẩn' ");
if (mysql_num_rows($result)<>0)
{
echo "<iframe src=\"site/comment.php?id=$id\" width=\"550\" height=\"400\"></iframe><br>";
}
?>
<div class="oneline"></div>
<div class="sectioncontent" align="center">Gửi bình luận</div>
<form action="<?php echo "index.php?view=action&a=1&type=5&id=$id"?>" method="post">
<table>
<tr>
<td>Tên</td><td><input type="text" name="ten" class="textinput"></td>
</tr>
<tr>
<td>Email</td><td><input type="text" name="yahoo" class="textinput"></td>
</tr>
<tr>
<td>Nội dung</td><td><textarea name="noi_dung" class="textinput" rows="5" cols=""></textarea></td>
</tr>
<tr>
<td>
<img src="site/captcha.php" width="100" height="50" alt="captcha">
</td>
<td>
Hãy nhập dòng chữ trong ảnh bên <br>
<input type="text" name="captcha" class="textinput">
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="binh_luan" value="Bình luận">
<input type="reset" value="Làm lại">
</td>
</tr>
</table>
<fieldset style="width:500px">
<legend>Kiểu gõ </legend>
<input id="him_auto" onclick="setMethod(0);" type="radio" name="viet_method" checked><label for="him_auto">Tự động</label>
<input id="him_telex" onclick="setMethod(1);" type="radio" name="viet_method"><label for="him_telex">telex</label>
<input id="him_vni" onclick="setMethod(2);" type="radio" name="viet_method"><label for="him_vni">vni</label>
<input id="him_viqr" onclick="setMethod(3);" type="radio" name="viet_method"><label for="him_viqr">viqr</label>
<input id="him_viqr2" onclick="setMethod(4);" type="radio" name="viet_method"><label for="him_viqr2">viqr*</label>
<input id="him_off" onclick="setMethod(-1);" type="radio" name="viet_method"><label for="him_off">Tắt</label><br>
<input id="him_ckspell" onclick="setSpell(this);" type="checkbox" name="viet_method"><label for="him_ckspell">Kiểm tra chính tả</label>
<input id="him_daucu" onclick="setDauCu(this);" type="checkbox" name="viet_method"><label for="him_daucu">Bỏ dấu kiểu cũ</label></fieldset>
</form>
<br>
</div> </div>
<div class="footer" align="center">
<?php echo $banquyen;?>
</div>
</div>
</body>
</html>
em đến là bó tay khi ko hiểu nổi thực sự nó bị lỗi gì ?
cách trình bày , đặt biến hơi lộn xộn vì đây là web đầu tiên em code , mong các bro bỏ qua , bớt chặt chém
thôi dùng ob_start(); fix được rồi , khỏi phải chỉnh lại cấu trúc file , lập trình few. thank các bác đã giúp đỡ .