PHP $ _SESSION сохраняется, но не может быть получен без задержки - PullRequest
2 голосов
/ 26 октября 2011

Прежде всего, я попытался найти ответ на вопрос SO, но не смог найти ничего, что было бы конкретно для моей проблемы.

Теперь проблема заключается в следующем:

  1. Я отправляю строку JSON с AJAX на сервер, все находится в одном домене, на том же сервере
  2. Я декодирую строку JSON, взрываю ее, используя запятые в качестве разделителей, получаю строку в видевернуть и сохранить эту строку в переменную $ _SESSION
  3. В целях тестирования я даже делаю print_r для переменной $ _SESSION сразу после ее установки, и я вижу, что она устанавливается
  4. КогдаЯ пытаюсь использовать эту переменную $ _SESSION на другой странице, она больше не существует.Доступ к $ _SESSION возможен, но только этой переменной не существует.

И вот лучшая часть:

Это сработает, если я поставлю sleep(1)перед установкой переменной $ _SESSION или выполнением чего-либо, что занимает много времени для выполнения

1 Ответ

0 голосов
/ 26 октября 2011

Похоже, что ваша проблема в функции записи вашего обработчика записи сеанса.Инструкция SQL выглядит немного странно:

Попробуйте:

 Core::Database()->query_execute("REPLACE INTO sessions VALUES (" . 
                                 Core::Database()->query_escape($id) . "'," . 
                                 time() . ",'" . 
                                 data = '" . Core::Database()->query_escape($data) . "')");

вместо:

 Core::Database()->query_execute("REPLACE INTO sessions SET 
                                        id = '" . Core::Database()->query_escape($id) . "',
                                        lastaccess = '" . time() . "',
                                        data = '" . Core::Database()->query_escape($data) . "'");

В основном используйте VALUES с REPLACE вместо SET.

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