Време на сесия

pro12

Registered
Това ми е кода
PHP:
$_SESSION['tokentime'] = time() + 60;
       $now = time();
         
         if ( $_SESSION['tokentime'] > $now) {
                return 'da';
            } else {
                return 'gagag';
            }
Проблема, е че времето на сесията винаги е по голямо от $now. Как да оправя проблема?
 
pro12 каза:
Това ми е кода
PHP:
$_SESSION['tokentime'] = time() + 60;
       $now = time();
         
         if ( $_SESSION['tokentime'] > $now) {
                return 'da';
            } else {
                return 'gagag';
            }
Проблема, е че времето на сесията винаги е по голямо от $now. Как да оправя проблема?
E та ти сетваш сесията и веднага след това проверяваш...
В моментаправиш така:
сесия = 1 + 60
време сега = 2
ако (сесия 62 е по-голяма > от времето сега 2)
то върни да или отговор не.

PHP:
$_SESSION['tokentime'] = time() + 60;
       sleep(61);
       $now = time();
         
         if ( $_SESSION['tokentime'] > $now) {
                return 'da';
            } else {
                return 'gagag';
            }
Заспивайки след променливата ще влезнеш веднага в else условието на if.
PHP:
//Взимаш моментното време 1 секунда примерно 
$now = time();
//Ако не е сетната сесия, то се задава сегашното време + 60 секунди
if (!isset($_SESSION['tokentime'])) {
	//Задаваме 1 + 60 
    $_SESSION['tokentime'] = $now + 60;
} 
//Правим проверка на сесията и ако е по-малка от сегашното време ресетваме променливата
//та при следващ рефреш да се зададе нова нейна стойност + 60 секунди отгоре
// 61 < 1 
if ($_SESSION['tokentime'] < $now) {
	$_SESSION['tokentime'] = false;
	//Тук изпълняваме логиката ако 61 секунди са < от 1 секунда 
	return "Сесията е по-малка от сегашното време";
} else {
	//Тук следва логиката ако 61 секунди са > от 1 секунда
	return "Сесията е по-голяма от сегашното време";
}

При този код докато рефрешваш ти ще натрупваш моментното време с по-голяма стойност и при първият рефреш в който сегашното време стане по-голямо от съхранената сесия, то в този момент ти ще ресетнеш сесията ще изпълниш условието и ще започнеш ново отброяване на логиката.
 

Горе