2017-02-07 5 views
0

Я знаю, что этот вопрос задавался несколько раз, но ни у одного из других сообщений SO, похоже, нет ответов, которые могут мне помочь.Переменная сессии PHP не работает после перенаправления страницы

У меня возникли проблемы с сайтом, который я создаю, и мне не удалось сохранить переменные сеанса. Я, наконец, решил просто поставить две простые страницы php ... один называется getsession.php, а другой называется setsession.php. Файлы скелетные, и выглядеть следующим образом:

setsession.php

<?php 
    session_start(); 
    $_SESSION['loggedinusername'] = "SomeName"; 
    header('Location: getsession.php'); 
    exit(); 
?> 

getsession.php

<?php 
    session_start(); 
    echo "The Set Variable is: ".$_SESSION['loggedinusername']; 
?> 

Как вы можете видеть, setsession.php просто устанавливает переменной сеанса, а затем перенаправляется на getession.php и пытается вернуть значение.

К сожалению, все переменные сеанса теряются после перенаправления. Выход я получаю

Примечание: Undefined индекс: loggedinusername в C: \ Inetpub \ Wwwroot \ MyTest \ getsession.php в строке 3 Set Variable является:

Я использую IIS и PHP 7.0. Я проверил журнал, и указанное выше сообщение об ошибке - единственное, что появляется там. Кроме того, мой файл PHP.INI имеет следующие настройки в сеансах:

session.save_handler = files 
session.use_strict_mode = 0 
session.use_cookies = 1 
session.cookie_secure = 1 
session.use_only_cookies = 1 
session.name = PHPSESSID 
session.auto_start = 0 
session.cookie_lifetime = 0 
session.cookie_path =/
session.cookie_domain = 
session.cookie_httponly = 1 
session.serialize_handler = php 
session.gc_probability = 1 
session.gc_divisor = 1000 
session.gc_maxlifetime = 720 
session.referer_check = 
session.cache_limiter = nocache 
session.cache_expire = 180 
session.use_trans_sid = 0 
session.hash_function = 0 
session.hash_bits_per_character = 5 

Спасибо.

+0

У вас есть доступ к php.ini? –

+0

У меня есть доступ к php.ini. Я также дал полный доступ к каталогу, в котором записываются файлы сеансов, чтобы узнать, поможет ли это. –

+0

Проверьте, нет ли register_globals в php.ini –

ответ

1

Как я понимаю, вы тестируете свой локальный компьютер и вряд ли настроили SSL. И у вас есть session.cookie_secure.

session.cookie_secure булево

session.cookie_secure определяет, будет ли печенье должны быть посланы только через безопасные соединения. По умолчанию отключено.

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

+0

Отлично! Я начинал сходить с ума. –

Смежные вопросы