2014-06-20 2 views
2

У меня есть пример страницы содержание этого является следующий код:PHP SESSION работает только над HTTPS + PHPSESSID куки не послал

<?php 
session_start(); 
if (isset($_SESSION['test'])){ 
    echo 'Session variable is set '; 
    echo $_SESSION['test']; 
}else{ 
    echo 'Session variable is not set'; 
    $_SESSION['test'] = 'test'; 
} 

, когда доступ к странице через HTTPS (например: https://www.example.com/page.php) It хорошо работает. В первый раз он устанавливает переменную $ _SESSION, и после этого он восстанавливает ее в обычном режиме.

Однако, когда я получаю доступ к странице через обычный HTTP, каждый раз, когда я получаю «переменная сеанса не установлена». Когда я проверил куки запроса/ответа в обеих ситуациях, я обнаружил, что при использовании HTTPS cookie PHPSESSID извлекается из первого запроса страницы, а из второго запроса на тот же PHPSESSID отправляется как файл cookie запроса. Тем не менее, по сравнению с обычным HTTP каждый раз при загрузке страницы он загружается без отправки файлов cookie, он получает разные файлы cookie PHPSESSID, но не сохраняет их и использует для последующих запросов страницы.

Я хочу знать причины и решения этой проблемы.

спасибо.

ответ

0

Сессия печенье может быть наборы, как только обеспеченные

Попробуйте использовать session_set_cookie_params отключить только безопасные куки сессии

$oldparams = session_get_cookie_params(); 
session_set_cookie_params($oldparams["lifetime"], $oldparams["path"], $oldparams["domain"], false, true); 
session_start(); 
Смежные вопросы