ziedinjsh Posted July 24, 2011 Report Share Posted July 24, 2011 (edited) Nav ne jausmas kā to uztaisīt!? kad izlogojās tad online statusu uzliek false, bet kad ielogojās uzliek true.. viss baigijauki, bet kad lietotājs pamet lapu bez izlogošanās.. pāši jau saprotat.. rāda kad ir online! Kā lai panākt ka ja lietotājs pamet lapu bez izlogošanās pēc 5 min noņem online statusu? meiģināju šādi, bet protams nekas nesanāca session_start(); $offline = time() - 300; mysql_query("UPDATE users SET online='false' WHERE lastseen<'$offline'") or die(mysql_error()); session_destroy(); šo biju ielicis iekš index.php bet kā refrešoju tā nodzēsa sessija.. tas būtu diezgan loģiski Edited July 24, 2011 by ziedinjsh Quote Link to comment Share on other sites More sharing options...
briedis Posted July 24, 2011 Report Share Posted July 24, 2011 Varbūt loģiski būtu loģiski, kad ienāk jebkurš lietotājs, tad paskatāmies users tabulā lietotājus, kuri ir veikuši kādu aktivitāte ne ilgāku laiku iepriekš, ka tas ir noteikts. Kad lietotājs veic aktivitāti, atzīmē tabulā pēdējās aktivitātes laiku. Lai uzzinātu, vai šis lietotājs skaitās tiešsaistē, paskaties, vai nav pagājušas, teiksim, vismaz 5 minūtes kopš pēdējās aktivitātes. Quote Link to comment Share on other sites More sharing options...
ziedinjsh Posted July 24, 2011 Author Report Share Posted July 24, 2011 kā lai atzīmē un dabo zināt kad veic kādu aktivitāti!? Quote Link to comment Share on other sites More sharing options...
briedis Posted July 24, 2011 Report Share Posted July 24, 2011 To jau nu tu pats varētu izdomāt. Quote Link to comment Share on other sites More sharing options...
ziedinjsh Posted July 24, 2011 Author Report Share Posted July 24, 2011 lab.. it kā būtu.. datubāzē tabulā lastseen ieraksta date("Y-m-d H:i:s"); kā tagad pārbaudīt vai ir pagājušas 5 min un izmest ārā no lapas!? Quote Link to comment Share on other sites More sharing options...
briedis Posted July 24, 2011 Report Share Posted July 24, 2011 Nu, ja tas ir datetime formāts kolonnai, tad var atlasīt vajadzīgo izmantojot kādu no šīm funkcijām: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html Quote Link to comment Share on other sites More sharing options...
ziedinjsh Posted July 24, 2011 Author Report Share Posted July 24, 2011 uzmurgoju kaut ko šādu, bet neesmu pārliecināts, ka viņš strādās! $lastseen = TIME($data['lastseen']); if (!isset($_SESSION['email'])) { $lastseen = time(); } if (time() - $lastseen > 1200) { header("location:process/logout_process.php"); } else { $lastseen = time(); } Quote Link to comment Share on other sites More sharing options...
Code Posted July 24, 2011 Report Share Posted July 24, 2011 Tev jau briedis pateica visu, tu tikai turpini domāt citā virzienā. Tev jāskatās tikai pēdējās aktivitātes laiku, kad attēlo online lietotājus. To "online" lauku tev būtībā nemaz nevajag. Kad lietotājs kaut ko izdara, tad apdeito to $lastseen un pie tiešsaistes lietotāju saraksta atlasi tikai tos, kuriem tas $lastseen ir piemēram to pašu 5min robežās. Ja nu ļoti vēlies to "online" lauku, tad tajā pašā brīdī arī vari pārējiem taisīt apdeitu. Quote Link to comment Share on other sites More sharing options...
EdgarsK Posted July 25, 2011 Report Share Posted July 25, 2011 1. Lietotājs veic kaut kādu aktivitāti $sql = mysql_query("update lietotaji set last_seen=now()"); 2. Tu gribi parbaudit vai shis lietotajs vel tiek skaitits ka online if(mysql_fetch_object(mysql_query("select count(id) as cnt from lietotaji where last_seen>".(time()-300)))->cnt){ echo "online"; } Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted July 26, 2011 Report Share Posted July 26, 2011 / /pēc 5min iznīcina sesiju un izlogojās // sesijai var iestatīt 'dzīves ilgumu' Vai nu tieši php.ini vai katrai aplikācijai pēc vajadzības Sīkāk par sesiju konfigurēšanu skaties šeit Quote Link to comment Share on other sites More sharing options...
daGrevis Posted July 27, 2011 Report Share Posted July 27, 2011 Labs risinājums, GW. Tas jau nekas, ka, tas arī nozīme, ka pat neizlogojoties sesija tiks iznīcināta. Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted July 27, 2011 Report Share Posted July 27, 2011 Labs risinājums, GW. Tas jau nekas, ka, tas arī nozīme, ka pat neizlogojoties sesija tiks iznīcināta. un ja pirmajā lapā (index) ieliksi laika pārbaudi, un session_destroy(), tad sesija netiks iznīcinata? :P ja nebūs pagājušas 5 minūtes tad pie pirmā session_start() sesijas laika skaitītājs nonullēsies .. un atkal varēsi gaidīt 5 minūtes (etc. citu laiku). Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.