我找到了我收到此错误的原因,我的代码没有任何问题,所以我从帖子中删除了它。
我的php页面编码为UTF-8,但必须编码为UTF-8而没有BOM(字节顺序标记)。
据我了解,BOM被解释为输出,或者至少创建一个。
感谢您的所有答案,我的问题是重复的,我为此道歉,我查看了其他帖子,但还不够。谢谢!
答案 0 :(得分:0)
如果您在使用setcookie之前已经完成HTML输出,则需要找到HTML输出开始的位置。在该行上方放置ob_start Docs函数,它将启动输出缓冲。
启用输出缓冲后,您的程序仍然可以“输出”HTML,但不会立即发送。然后你应该可以毫无问题地调用setcookie:
<?php
function login($username,$pwd)
{
$mysqli=dbconnect(); //no output
$query = "SELECT * FROM `users` WHERE `name`='$username' AND `password`='$pwd'";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
if($result->num_rows == 1) {
while($row = $result->fetch_assoc()) {
ob_start(); //set output buffering before setting cookies..
setcookie("ID", $row['userid'], time()+3600*24*365);
ob_end_flush(); // flush data
if (isset($_COOKIE['UNIQUE_ID']))
{echo 'Connected';}
else{echo 'No cookie today :(';}
}
}
dbclose($mysqli); //no output
}
?>
当您的脚本完成时,输出缓冲区将自动发送到浏览器,因此您无需关心更多内容,其余内容将自动生效。
答案 1 :(得分:0)
尝试在打开标记之前删除所有空格。
结束标签是可选的,可能有助于将空白误解为输出