не записываются cookies

sunyang

Мастер
Регистрация
25 Апр 2009
Сообщения
440
Реакции
30
не могу понять в чем дело.

делаю логинизацию с ajax

форма:
HTML:
<div id="loginForm">
* Имя пользователя(e-mail):
<input type="text" id="email"><br />
* Password:
<input type="password" id="password"><br />
<div class="loginButton">Войти</div><br />

ajax:

Код:
$(document).ready(function(){
$("#loginForm .loginButton").click(function() {
$('#loginLoader').show();
$.ajax({
  url: "mode/login.php",
  dataType: "json",
  type:"POST",
  data: { 
    password:$("#password").val(),
    email:$("#email").val(),
    persistent:$("#persistent").val()
  },
  success: function(data){
if(data.response==="success") { $("#errorInfo").html(data.msg) }
else {$("#errorInfo").html(data.msg)}
  }
});
});
});

и собственно обработчик, который не хочет записывать куки:

PHP:
$email = trim($_POST['email']);
setcookie('save_user_id','');
setcookie('save_user_id', $email, time()+30);
//$_SESSION['userid'] = $email;
 
$arr = array('response'=>'error', "msg"=>$_COOKIE['save_user_id']." - cookie");
echo json_encode($arr);

почему не ставится сессия?
 
до конца проблему не понял, но есть один важный нюанс про который надо знать:
setcookie - это установка кук для ответа клиенту (посылка в headers ответа браузеру)
$_COOKIE - это куки, полученные в запросе от клиента (то, что прислал браузер в заголовке запроса)

т.е. setcookie('x') никак не влияет на значение $_COOKIE('x') в рамках работы скрипта
 
у меня получается так, что форма в одном php файле, ajax обработчик в другом js, а куки устанавливаются в третьем php файле.
в третьем файле поставил условие:
PHP:
 if(!empty($_POST['email'])) {
setCookie("cook", "CookieValue", time()+60);
// $_COOKIE["cook"]
if(!empty($_COOKIE["cook"])) {
$arr = array("response" => "success", "msg" =>  $_COOKIE["cook"]);
echo json_encode($arr);    }
}

в первом появляется надпись " CookieValue ", т.е. куки как бы записались, НО обновляешь страницу и ошибка: Notice: Undefined index: cook in Z:\home...
просто куки почему-то не сохраняются в броузере, если обращаться к скрипту через ajax.

в общем нашел решение в нете:

 
Назад
Сверху