PHP cookie-код, вызывающий хаос - PullRequest
1 голос
/ 19 августа 2011

Мой скрипт довольно прост. Когда кто-то пытается войти, 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 ]

2 голосов
/ 20 августа 2011

PHP setcookie делает это через заголовки, и если вы не используете буферизацию вывода, echo ing перед попыткой setcookie отправит заголовки преждевременно и предотвратит установку cookie.

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

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

0 голосов
/ 20 августа 2011

Проблема в том, что вы не можете установить cookie после отправки данных в браузер. Если вы выводите текст, а затем пытаетесь установить cookie, он не будет работать.

Попробуйте поменять эхо и setcookie () и убедитесь, что текст не был передан в браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...