Сессия PHP пуста на странице обратного вызова - PullRequest
2 голосов
/ 02 апреля 2011

У меня есть копия живого сайта Wordpress на моем локальном компьютере с использованием Xampp.Мой путь к сеансу в php.ini - session.save_path = "C: \ xampp \ tmp", а файл с этими переменными сеанса указан ниже.После того, как я установил сеанс и перенаправил сеанс, он пуст на странице обратного вызова.Что мне не хватает?Папка видна в Xammp для папки tmp.

У меня также есть файл хоста, указывающий URL-адрес домена на мой localhost, если это имеет значение.

session_start();

 $_SESSION['oauth_token'] = $request_token['oauth_token'];  
 $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];  

Также он не работает на живом сайте.

Ответы [ 2 ]

8 голосов
/ 02 апреля 2011

Убедитесь, что вы звоните session_start(), прежде чем пытаться использовать переменные сеанса на целевой странице. Когда вы перенаправляете, вы заставляете браузер отправлять новый запрос на новую страницу. Этот новый запрос еще не имеет доступа к сеансу, который вы использовали в начальном запросе. Вызов session_start() восстанавливает сеанс, чтобы вы могли использовать содержащиеся в нем данные.

, например

FirstFile.php:

 session_start();
 $_SESSION['my_variable'] = "my data";
 header("Location: http://example.com/SecondFile.php");

SecondFile.php:

 session_start(); // **This line recovers the session**
 echo $_SESSION['my_variable']; // This line will now print "my data"
1 голос
/ 07 октября 2012

Вы можете избежать необходимости выполнять session_start () в WordPress перед чтением / записью $ _SESSION. Просто сделайте это в файле вашего плагина или functions.php темы:

if (!session_id()) {
  add_action('init','session_start');
}

Обратите также внимание, что если вы используете следующее перед вызовом session_start (), это будет работать во многих приложениях PHP, но заставит WordPress ERASE переменную сеанса по какой-то странной причине:

session_set_cookie_params(0,'/');

Итак, я исключил это утверждение и теперь использую трюк в functions.php, и теперь мои плагины и темы поддерживают сессии просто отлично.

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