我的脚本非常简单。当有人尝试登录时,PHP会根据MySQL数据库检查表单数据,设置会话的cookie,并刷新页面。现在,我已经确定了cookie脚本会导致混乱并完全停止工作。但是,我不知道为什么。我正在使用的代码是:
<?php
header('Content-type: text/javascript');
$erroron="false";
$id='false';
$con = mysql_connect("localhost","***","***");
if (!$con)
{
die('$("#connecterror").stop().hide().fadeIn(); ');
}
mysql_select_db("***", $con);
$result = mysql_query("SELECT * FROM users");
while($row = mysql_fetch_array($result))
{
if( $row['username']==$_POST["user"]&&$row['password']==$_POST["pass"])
{
if($row['confirmed']==1){
$id=$row['id'];
}
else{
echo '$("#erroractivate").stop(false,true).hide().fadeIn(200);';
}
}
else if( $row['email']==$_POST["user"]&&$row['password']==$_POST["pass"])
{
if($row['confirmed']==1){
$id=$row['id'];
}
else{
echo '$("#erroractivate").stop(false,true).hide().fadeIn(200);';
}
}
else{
if($erroron=="false"){
$erroron="true";
echo '$("#error").stop(false,true).hide().fadeIn(200);';
}
}
}
if($id=='false'){
echo '$("#error").stop(false,true).hide().fadeIn(200);';
}
else{
echo '$("#page").text("You have logged in, redirecting...");$("body").css("cursor","wait");setTimeout("location.reload(true);",2000);';
setcookie("sessionid", $id,0,'/','profile.campatet.com',false,true);
}
mysql_close($con);
?>
现在,这是不起作用的部分:
setcookie("sessionid", $id,0,'/','profile.campatet.com',false,true);
如果我将其关闭,脚本会成功刷新页面,但由于没有设置cookie,因此无法登录。如果我坚持下去,它就什么都不做。
答案 0 :(得分:2)
PHP的setcookie
通过标题执行此操作,除非您使用输出缓冲,否则在尝试echo
之前setcookie
会过早发送标头并阻止设置Cookie。< / p>
答案 1 :(得分:0)
问题是,在将数据发送到浏览器后,您无法设置cookie。如果您回显文本然后尝试设置cookie,它将无效。
尝试反转echo和setcookie(),并确保在发送到浏览器之前没有文字。