$ _SESSION в PHP: переменная не читается при перезагрузке страницы - PullRequest
0 голосов
/ 18 февраля 2019

Когда я устанавливаю переменную сеанса, я думаю, что она не читается:

<?php
if(isset($_SESSION['last_activity'])){
if( $_SESSION['last_activity'] < time()-$_SESSION['expire_time'] ) { 
   //...
}else{ 
   session_destroy();
   session_start();    
   $_SESSION['last_activity'] = time(); // setting variable
   $_SESSION['expire_time'] = 8*60*60;  // calculate exp.time
   echo "branch 1";
}
}else{  
   session_start();
   $_SESSION['last_activity'] = time(); // setting variable
   $_SESSION['expire_time'] = 8*60*60; // calculate exp.time
   echo "branch 2";
}
?>

при перезагрузке страницы, она всегда считается "веткой 2".Если я поставлю 'session_start ();'вверху страницы, при каждой перезагрузке он переходит с ветки 1.1 на 1.2:

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Попробуйте, все работает нормально.

<?php
session_start();
if (isset($_SESSION['last_activity'])) {
    if ($_SESSION['last_activity'] < time() - $_SESSION['expire_time']) {

    } else {
        session_destroy();
        session_start();
        $_SESSION['last_activity'] = time();
        $_SESSION['expire_time'] = 8 * 60 * 60;
        echo "branch 1";
    }
} else {

    $_SESSION['last_activity'] = time(); // setting variable
    $_SESSION['expire_time'] = 8 * 60 * 60;
    echo "branch 2";
}
0 голосов
/ 18 февраля 2019

Добавить деталь: теперь, при каждой перезагрузке, она переходит с ветки 1.2 на ветку 2 ... это может быть до "session_destroy ();"???В этом случае я не знаю, как сбросить сеанс после его истечения.

0 голосов
/ 18 февраля 2019

Вам нужно начать сеанс раньше, если условие. Потому что вы не запускаете сеанс до проверки SESSION существует или нет

session_start(); 
if(isset($_SESSION['last_activity'])){
if( $_SESSION['last_activity'] < time()-$_SESSION['expire_time'] ) { 
   //...
}else{ 


   $_SESSION['last_activity'] = time(); 
   $_SESSION['expire_time'] = 8*60*60;  
   echo "branch 1";
   session_destroy();
}
}else{  
   $_SESSION['last_activity'] = time(); // setting variable
   $_SESSION['expire_time'] = 8*60*60; 
   echo "branch 2";
   session_destroy();
}

ОБНОВЛЕНИЕ:

Достаточночтобы начать сессию раньше, если условие и когда условие входит в другое, просто уничтожьте его

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