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

Тема в разделе "Как сделать...", создана пользователем sunyang, 22 апр 2012.

  1. sunyang

    sunyang

    Регистр.:
    25 апр 2009
    Сообщения:
    444
    Симпатии:
    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'$emailtime()+30);
    //$_SESSION['userid'] = $email;
     
    $arr = array('response'=>'error'"msg"=>$_COOKIE['save_user_id']." - cookie");
    echo 
    json_encode($arr);
    почему не ставится сессия?
     
  2. DrakonHaSh

    DrakonHaSh

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

    т.е. setcookie('x') никак не влияет на значение $_COOKIE('x') в рамках работы скрипта
     
  3. sunyang

    sunyang

    Регистр.:
    25 апр 2009
    Сообщения:
    444
    Симпатии:
    30
    у меня получается так, что форма в одном 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.

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



    оказывается при ajax запросе обязательно нужно указывать путь при установки куки: setCookie("cook", "CookieValue", time()+60, "/");