PHP cookie代码导致混乱

时间:2011-08-19 19:46:35

标签: php cookies login

我的脚本非常简单。当有人尝试登录时,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,因此无法登录。如果我坚持下去,它就什么都不做。

2 个答案:

答案 0 :(得分:2)

PHP的setcookie通过标题执行此操作,除非您使用输出缓冲,否则在尝试echo之前setcookie会过早发送标头并阻止设置Cookie。< / p>

http://php.net/manual/en/function.setcookie.php

http://www.php.net/manual/en/intro.outcontrol.php

答案 1 :(得分:0)

问题是,在将数据发送到浏览器后,您无法设置cookie。如果您回显文本然后尝试设置cookie,它将无效。

尝试反转echo和setcookie(),并确保在发送到浏览器之前没有文字。