проблема с куки в PHP и AJAX

Я столкнулся с некоторой проблемой в своем скрипте: я использую PHP и jquery для создания системы входа в систему.

Сначала у меня есть страница PHP, содержащая форму для входа в систему. когда пользователь нажимает кнопку «Отправить», я использую jquery для отправки данных на сервер

$.post('server_login.php', {username:username.val(), password:password.val()}, function(data){
    alert(data);
}); 

в server_login.php у меня есть функция для входа пользователя.

if($_POST['username']=='username' && $_POST['password']=='1234'){
    $expire = time() + 60*60*24*30; //1 month expired.
    setcookie("user_id", $_POST['username'], $expire);
    echo true;
}

и предупреждение jquery «1» на моей странице входа.

проблема в том, что когда я обновляю свой сайт и получаю куки, он меня не показывает.

print_r($_COOKIE);

ничего плохого?


person Giffary    schedule 15.06.2011    source источник
comment
Вы можете найти new Cookie($name) и < полезный href="https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L104" rel="nofollow noreferrer">$cookie->setPath($path), как указано в < href="https://github.com/delight-im/PHP-Cookie" rel="nofollow noreferrer">эта отдельная библиотека.   -  person caw    schedule 21.09.2016


Ответы (2)


Если скрипт, который вы вызываете, находится в другой папке на сервере (или при перезаписи URL-адреса он отображается так, как будто он находится по другому пути), обязательно установите параметр пути файла cookie.

По умолчанию setcookie() устанавливает cookie только для текущего пути.

Если ваша страница www.domain.com и вы делаете вызов ajax для www.domain.com/auth/login.php, файл cookie будет установлен на /auth и будет недоступен за пределами /auth.

Итак, попробуйте изменить на это:

setcookie("user_id", $_POST['username'], $expire, '/');
person Maxim Krizhanovsky    schedule 15.06.2011

Я пытаюсь использовать код ниже в своем сценарии. Пожалуйста, попробуйте один раз этот код, если вы получаете значение cookie, чем что-то не так с вашим кодом, но если этот код также не работает, проверьте, включен ли параметр cookie вашего браузера или нет. если cookie отключен браузером, вы также не можете получить какое-либо значение cookie.

Для включения файлов cookie браузера перейдите по ссылке ниже http://www.blogpatrol.com/enable-cookies.php< /а>.

Тестовый код 1:

$expire = time() + 60*60*24*30; //1 month expired.

setcookie("TestCookie", "shashank patel here", $expire);

print_r($_COOKIE);

Тестовый код 2:

Также проверьте этот код с вашим скриптом, этот код сказал вам, что ваш браузер использует файлы cookie или нет.

error_reporting (E_ALL ^ E_WARNING ^ E_NOTICE);

// Check if cookie has been set or not

if ($_GET['set'] != 'yes')
{
  // Set cookie
  setcookie ('test', 'test', time() + 60);

  // Reload page
  header ("Location: test.php?set=yes");
} 
else
{
  // Check if cookie exists
  if (!empty($_COOKIE['test']))
  {
     echo "Cookies are enabled on your browser";
  } 
  else 
  {
    echo "Cookies are NOT enabled on your browser";
  }
}
person Shashank Patel    schedule 15.06.2011