переменная сеанса уже установлена - PullRequest
0 голосов
/ 02 января 2012

У меня есть переменная сеанса loginStatus, которая устанавливается при первой загрузке страницы.У меня есть if / else, чтобы повторить 'настройку для первого' комментария к браузеру, когда этот 'loginStatus' устанавливается в самый первый раз.«Настройка в первый раз» никогда не появляется!Я очистил кэш, я попытался перейти на страницу index.php в окне браузера за пределами моей среды разработки Netbeans - не имеет значения.Это похоже на то, как будто сеанс остается живым на моем локальном веб-сервере.

Вот код, который обнаруживает для неинициализированной переменной сеанса 'loginStatus' при первой загрузке страницы и создает / инициализирует переменную сеанса только один раз.

if ( isset($_SESSION['loginStatus']))
{
    // we get here ONLY if the 'loginStatus' session variable has already been
    // created for this user's session.  
    $_SESSION['loginStatus'] = "loginStatus already set!"; 
    echo '<br />Just set the loginStatus to: ' .  $_SESSION['loginStatus'] . '<br /><br />';    
}
else
{
    // we only get here the first time this is sent by the server
    // to the user's browser -- so we need to create the 'loginStatus' session
    // variable because the user just came to our site
    // and has not yet logged in. 
    $_SESSION['loginStatus'] = "First-time initialization of loginStatus"; 
    echo '<br />Just set the loginStatus for the first time!<br /><br />';
}

I никогда см. В окне браузера "Просто установите loginStatus в первый раз!"

Все, что я вижу в окне браузера, это: "Просто установите для loginStatus значение: loginStatus уже установлено!"

Другими словами - isset () ошибочно возвращает true при первой загрузке моей страницы!
Я не вижу никакого оправдания для переменной сеанса, котораяволшебно уже там, когда я впервые загружаю страницу в браузере!

Хотя я загружал вышеупомянутую страницу несколько раз сегодня вечером во время написания кода, я понял, что когда вы покидаете последнюю страницу, сеанс разрушается,Так почему же моя переменная $ _SESSION ['loginStatus'] висит как родственник, который измотал свое приветствие?

Ответы [ 2 ]

1 голос
/ 02 января 2012

Сессия уничтожается, когда и по установленным ей правилам (для GC сеанса) в файле php.ini. Это не обязательно происходит, когда вы закрываете браузер или просматриваете другие страницы.
Прочитайте руководство по сессиям на php.net и установите правила сессий, которые вам наиболее подходят.

Например, на сайтах с высоким уровнем безопасности я даю сеансу время из нескольких минут. Означает, что если пользователь не выполнит действие, которое делает запрос к серверу в течение этого срока, сеанс истечет.

0 голосов
/ 02 января 2012

не уверен, но может, потому что вы сохранили эти значения в ваших куки,

попробуйте очистить куки и перезагрузить страницу

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