проблема с cookie в PHP и AJAX - PullRequest
11 голосов
/ 15 июня 2011

Я сталкиваюсь с некоторой проблемой в моем скрипте, что я использую 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 alert "1" на моемстраница входа.

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

print_r($_COOKIE);

что-то не так?

Ответы [ 2 ]

18 голосов
/ 15 июня 2011

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

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

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

Поэтому попробуйте перейти на это:

setcookie("user_id", $_POST['username'], $expire, '/');
0 голосов
/ 15 июня 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";
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...