2015-09-02 12 views
1

В соответствии с описаниями PHP.net session_reset() должен повторно инициализировать массив сеанса с исходными значениями. Тем не менее, когда я запускаю следующий код, вывод будет «Some New Value», тогда как вывод должен be «Some value». Также моя смонтированная версия PHP - 5.6.1.Пожалуйста, ответьте, если вы знаете, в чем проблема?session_reset() не работает должным образом

<?php 
session_start(); 

$_SESSION["A"] = "Some Value"; 

    echo $_SESSION["A"]; 

    $_SESSION["A"] = "Some New Value"; 

    session_reset(); 

    echo $_SESSION["A"]; 

?> 
+1

Что говорит об ошибке файла apache? – LeDoc

+0

Каков результат сеанса A? –

+0

Какой из них вы имеете в виду первую сессию A или вторую? –

ответ

1

session_reset() фактически возвращается $_SESSION в точку сразу после session_start(), точнее, до последних значений, которые были сохранены (либо сценарий, заканчивающийся или session_write_close).

Так что если при последнем закрытии сессии ничего не было задано для $ _SESSION ["A"], то для вашего второго echo вы получите Notice: Undefined index: A, однако, если у вас есть ранее присвоенное ему значение (например, значение «Некоторое новое значение» назначается, а затем сохраняется) - вы получите это значение. Скорее всего, это ваш пример.

+0

Спасибо. Но почему php.net говорит, что вывод должен быть «Некоторое значение» в этом коде? –

+0

Это не так. В нем говорится: «Повторно инициализирует сеанс с исходными значениями, хранящимися в хранилище сеансов». = означает восстановление сеанса до последнего ** сохраненного состояния **. Сеанс сохраняется либо при завершении сценария, либо путем явного вызова 'session_write_close()'. – uri2x

+0

Благодарим за информацию. Вы правы, я понял это неправильно. –

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