0
<?php
$user = mysql_real_escape_string($_POST['login']);
$password = mysql_real_escape_string(sha1($_POST['password']));
$query = mysql_query("SELECT * FROM  `users` WHERE name =  '$user' AND pass =  '$password' AND privileges = 'superuser'");
$num_rows = mysql_num_rows($query);

if($num_rows == '1') {
$expire = time()*60*60*60*60;
setcookie("user","$user",$expire);
$_SESSION['user'] = $user;
include '/views/admin/admin.php';
}
else {
echo "Username and Password are incorrect! (Maybe you don't have permission!)";
}
?>

它说

警告:无法修改标头信息 - 标头已由 Z:\home\test1.ru\www\views\ 中的(输出开始于 Z:\home\test1.ru\www\views\admin\validate.php:1)发送第 9 行的 admin\validate.php

第 9 行是 - setcookie("user","$user",$expire);

4

4 回答 4

2

HTTP 中的 cookie 将使用标头传输。setcookie()因此只是一个包装器header() ,如果该脚本中已经有输出,则无法使用。

我猜输出是由开始标记mysql_*之前的函数或空格|内容触发的错误消息<?php

于 2013-06-10T06:25:05.240 回答
1

我有类似的问题。原因是你可能在 php 标签之前有一个空格。删除空格,你很高兴。

于 2013-06-10T06:35:49.873 回答
0

您必须检查一些事情。但是我认为您的 php 脚本还可以。

  • 1.在 php 开始之前,您在此页面中有一些 html。2.您正在使用此站点的模板和模板首先发送标题 3.您在 php 标记之前有一些空白

检查并快乐

于 2013-06-10T09:04:17.970 回答
0

使用 ob_start(); 在php标签之后

$user = mysql_real_escape_string($_POST['login']);

ob_start();

$user = mysql_real_escape_string($_POST['login']);

于 2013-06-10T06:39:23.737 回答