- Време на сесия
WT форуми -> PHP MySQL ASP.NET -> Време на сесия
Създайте нова тема Напишете отговор 
Автор Съобщение
pro12
Турист
Турист

Регистриран на: 10/01/2013 5:08 pm

Support: 0
Bonus: 0
Мнения: 444
Мнение 24/01/2018 11:56 am     Време на сесия Отговорете с цитат


Това ми е кода
PHP code:
$_SESSION['tokentime'] = time() + 60;
$now = time();

if ( $_SESSION['tokentime'] > $now) {
return 'da';
} else {
return 'gagag';
}

Проблема, е че времето на сесията винаги е по голямо от $now. Как да оправя проблема?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 119
Bonus: 231
Мнения: 3075
Мнение 24/01/2018 2:04 pm     Re: Време на сесия Отговорете с цитат


pro12 написа:
Това ми е кода
PHP code:
$_SESSION['tokentime'] = time() + 60;
$now = time();

if ( $_SESSION['tokentime'] > $now) {
return 'da';
} else {
return 'gagag';
}

Проблема, е че времето на сесията винаги е по голямо от $now. Как да оправя проблема?

E та ти сетваш сесията и веднага след това проверяваш...
В моментаправиш така:
сесия = 1 + 60
време сега = 2
ако (сесия 62 е по-голяма > от времето сега 2)
то върни да или отговор не.

PHP code:
$_SESSION['tokentime'] = time() + 60;
sleep(61);
$now = time();

if ( $_SESSION['tokentime'] > $now) {
return 'da';
} else {
return 'gagag';
}

Заспивайки след променливата ще влезнеш веднага в else условието на if.
PHP code:

//Взимаш моментното време 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 "Сесията е по-голяма от сегашното време";
}


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

Регистриран на: 10/01/2013 5:08 pm

Support: 0
Bonus: 0
Мнения: 444
Мнение 24/01/2018 4:43 pm      Отговорете с цитат


Благодаря!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети