AJAX + PHP: время ожидания сеанса - PullRequest
1 голос
/ 01 ноября 2009

Может кто-нибудь сказать мне, почему мои переменные $ _SESSION не переносятся на мою другую страницу PHP, которая вызывается с помощью ajax.

На всех страницах есть session_start ();

Он работает на моей локальной машине , но когда я загружаю его на свой сервер, он не работает, и при обновлении он возвращает меня к экрану входа ...

РЕДАКТИРОВАТЬ:

Переменные сеанса сохраняются при входе пользователя в систему

$_SESSION['user_id'] = $user_id;
$_SESSION['username'] = $user_email;
$_SESSION['name'] = $un; 
$_SESSION['login_times'] = $login_time;
$_SESSION['profile_pic'] = $profile_pic;

А когда скрипт ajax вызывает другой PHP:

 session_start();

 $user_id = $_GET['id'];
 $newsfeed_id = $_GET['nf_id'];
 $comment = $_GET['comment'];

 $conn = mysql_connect('localhost', 'admin', 'root') or die(mysql_error());
 mysql_select_db('main') or die(mysql_error());

 // insert new comment

 $query = "INSERT INTO newsfeed_comments ".
 "VALUES ('', '{$_SESSION['user_id']}', '{$comment}', '{$newsfeed_id}')";

  mysql_query($query) or die(mysql_error());

Но в тексте ответа ничего не возвращается, и значения $ _SESSION ['username'] были сброшены, и я перенаправлен обратно на вход в систему.

Кто-нибудь знает, в чем проблема?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 01 ноября 2009

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

Параметры файлов cookie сеанса могут быть определены с помощью session_set_cookie_params.

0 голосов
/ 01 ноября 2009

Я понял, в чем проблема ... Это действительно расстраивает, но это быстрое решение.

У меня есть 3 каталога

/ <- root / AJAX <- для файлов PHP AJAX / js <- для файлов JavaScript </p>

Я отправлял запросы в ajax / comment.php, и он обрабатывал каталог ajax / как другой домен. Поэтому я переместил все свои php-файлы Ajax в корневой каталог и переименовал их в ajax_File.php, отредактировал javascript и теперь он работает.

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

0 голосов
/ 01 ноября 2009

Теперь, когда я думаю об этом, вероятно, это потому, что вы сохраняете данные SESSION для определенного домена. На вашем локальном хосте вы просто localhost, но на сервере ваша сессия может быть сохранена только для определенной части вашего сайта. Передайте дополнительный параметр для указания домена.

Вы делали session_start () перед выводом чего-либо на страницу входа?

Конфигурация сеанса здесь: http://php.net/manual/en/session.configuration.php извините, запутался, вы использовали куки.

Попробуйте

var_dump($_SESSION); die();

на каждой странице, чтобы увидеть, что у вас есть.

Также вы вызываете header () где-нибудь после сохранения в сеансе?

Это хорошая статья об отладке вашей ситуации: http://www.chipmunkninja.com/Troubles-with-Asynchronous-Ajax-Requests-g@ удачи!

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