2015-06-23 3 views
2

Я знаю, что есть много подобных вопросов, и я проводил дни, пытаясь найти решение, но я все еще не могу его решить, поэтому я здесь. Кажется, что идентификатор сеанса изменяется по каждому запросу (между страницами, при каждом обновлении и т. Д.). Переменные сеанса, похоже, не сохранялись на следующей странице, поэтому я попытался захватить идентификатор сеанса (попробовал печать & с использованием дополнения Live HTTP Headers на FF), и каждый раз он отличается.Идентификатор сеанса PHP меняется каждый запрос

Дело в том, что он работал около года назад, прежде чем я временно покинул проект, но когда я попытался вернуться к нему, он больше не работает. Я даже попытался создать очень простую страницу, которая просто печатает переменную сеанса, установленную на предыдущей странице, и до сих пор не повезло. Я убедился, что ничего не печатается до session_start(), проверил разрешение на путь, хранящийся в session.save_path, но не могу понять, почему он по-прежнему генерирует новый идентификатор сеанса для каждого запроса. Я подозреваю что-то с конфигурацией, но не могу поверить, что это может быть.

Вот простые страницы, которые я использовал для тестирования:

index.php:

<?php 
session_start(); 

    $_SESSION['hello'] = "TESTING"; 

?> 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Testing</title> 
</head> 
<body> 
    Hello! 
    <a href="testing.php">click me</a> 
</body> 
</html> 

testing.php:

<?php 
session_start(); 

echo session_id(); 
print "\nHello, "; 
print $_SESSION['hello']; 
?> 

Это то, что я вижу на живых заголовков HTTP :

Set-Cookie: PHPSESSID=some_id; path=/; domain=.DOMAIN.EXT 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 

Я вижу, что файл cookie истекает мгновенно - может ли это быть? Если это так, что мне нужно сделать, чтобы исправить это?

Все, что мне не хватает?

+0

запустить 'phpinfo()' и проверьте настройки сеанса –

+0

Попробуйте положить 'session_write_close()' в конце сценария. –

+0

@ MichałPrzybyłowicz Это все еще не получилось :(Спасибо, хотя! – Vero

ответ

0

Попробуйте установить это перед session_start?

ini_set('session.gc_maxlifetime', 30*60); // expires in 30 minutes 
+0

Просто попробовал это, и все-таки одно и то же :(Спасибо, хотя! – Vero

+0

Нет персонажа в начале вашего файла, прежде чем вы это ставите? Это действительно должно быть первым делом в вашем файле

+0

Да, я проверен несколько раз, чтобы убедиться, что перед session_start() нет ничего. – Vero

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