Автоматичен logout при неактивност?

pr0_gamer

Registered
Здравейте! Как може да се направи като не си активен пред последните 30 минути автоматично да те logout-ва ?
 
Ако използваш сесии, те умират след 20 мин. Друг вариант е да записваш кога за последно е цъкал на линк в БД и когато влезне пак да проверяваш разликата между двата клика. Ако е повече от 1800 сек. изтриваш сесията или бисквитката.
 
Със сесия е... Бисквитки не съм ползвал НИКОГА...
А възможно ли е когато му изтече сесията да се направя заявка да ъпдейтва БД?
 
Ами няма как без да се зарежда сайта. Може да пробваш така:

Поле online enum('yes','no') NOT NULL DEFAULT 'no'
и lastaction datetime NOT NULL DEFAULT '1000-01-01 00:00:00'

и всеки път изпълнявай

mysql_query("UPDATE users SET online='no' WHERE online='yes' AND NOW() - lastaction > 1800");
 
Karcho каза:
Кажи дали записваш дали са онлайн в timestamp формат и щи кажа :)

Аз ги записвам, когато се логнат, ама не е в timestamp, ами обикновенно yes и no. Как може да стане, със сесия съм, тя си изтича, но пък после не пише в БД дали е излязал, ами си остава както е било преди.

П.П.-Извинявам се на автора на темата, че тъй се натрапвам :) :?:
 
Слушай сега правиш ново поле при users да речем expiretime и в него ръгаш time()+60*30 (за 30 минути), след като го направиш в някой файл наример config.php който се инклудва навсякъде слагаш този тайм да се ъпдейтва и след него вече може да провериш когато time-a от базата данни стане по-малък от текущия да го препраща към logout.php :)
 
Нещо нестоплям идеята.

Ако е със сесия можеш да направиш нещо от сорта на:
Код:
if($_SESSION['lognat']==""){}
Така ако сесията която ти казва че той е логнат е изтекла би трябвало да стане равна на "" т.е. празна.

Обаче така или иначе твоя "човек" или потребител ще се логаутне чак когато се върне "на линия" защото ще трябва някак си да ти обнови страницата или да кликне някъде. Освен ако не направиш код който да ти рефрешва страницата на определено време, което пък ми се вижда досадно :) .
 
А ако го направя дървеняшки, без timestamp или каквито и да било други неща... просто с yes и no... Да речем последно активен е бил пред 23:00 часа... ( последният му клик е бил тогава... ) след колко време ще свърши сесията и ще излезе автоматично от своя акаунт?
 
Аз ти го обясних съвсем ясно но, ето примерен код :)
Направи да речем едно поле в потребителската таблица expire да речем.
Код:
$expire = time()+60*30; //задаваме време с 30 минути напред.
$sql = mysql_query("UPDATE users SET expire=$expire WHERE username='SESIQTA ZA USERNAME'"); //Ъпдейтваме юзъра за да видим последната му активност.
$rs = mysql_query("SELECT expire FROM `users` WHERE username='SESIQTA ZA USERNAME'");//заявка за взимане на expire
$row = mysql_fetch_assoc($rs); //взимаме 'expirе' полето на потребителя.
if(time() > $row['expire'])
{
header("Location: logout.php"); //когато сегашният таймщамп е по-голям от записания последно в базата т.е. потребителя не е бил активен перз последните 30 минути го пренасочваме към Logout.php или ако ти е друг файлът си го пиши
}
И ако сега не съм достатъчно ясен... :D
 
Така... слойих го в config.php какт ми каза.. промених 30 на 1, за да стане по бързо... изчаках една минута без да кликам никъде в сайта... и не става нищо... ще изчакам малко повечко... ако стане получаваш +1 :?:
 
Karcho каза:
Да, но изкача ли една минута и кликна другаде?

Да... сега изчаках 5 минути... даже бях затворил прозореца... връщам се току-що и не съм логаут-нат... Защо така :shock:
 

Back
Горе