Jump to content
php.lv forumi

Recommended Posts

Posted

ielogojoties lietotājam piešķir sesiju $_session['password']; ielogošanās, izlogošanās ir, kad bez aktivitātes kādu laiku tad iznīcina sesiju


if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > 900)) {
  header("location:".url."logout.php");
}
$_SESSION['last_activity'] = time();

 

tas taka strādātu, bet lieta sekojoša.. ielogojoties tiek ievadīts datubāzē pie lietotāju tabulas online='1' un izlogojoties online='0', bet tad kad last activity iznīcina sessiju tad netiek updeitota datubāze par to ka lietotājs vairāk nav online.

 

Tad nu es domāju, vai ir kāda iespēja online saturu uztausīt tikai no sesijām? Piem. saskaita cik ir aktīvas password sesijas un tad atiecīgi izvelk no membera tabulas informāciju

 

Paldies jau iepriekš.

Posted

Kemito, a ja aizver vnk ciet browseri? :)

Skaties uz `briedis` variantu.

Papildus kollona `last_online` pēc kura arī vadamies. Ja vairāk par 10min nav bijusi aktivitāte, tad nerādam online listē

Posted

Atkal tā lieta, ko apmēram pirms nedēļas izstāstīju uz trakoju par to, ka visu laiku jāstāsta tas pats.

 

P.S. Tu taču neglabā sesijā lietotāja paroli, vai ne?

Posted (edited)

anonīms, liela muiža. Paližu kronu, priekš čekiem šā vai tā, un lietu esmu atrisinājis bez problēmām ne tā?

Uzraksta nelielu cronjob, ar intervālu aptuveni 10 minūtes, jeb cik tur tā aktivitāte, domājams, nebūs viņam tur 10k lietotāju, lai smagi ietekmētu serveri.

Joprojām nesaskatu baigāko problēmu tur.

Edited by Kemito
Posted

> anonīms, liela muiža. Paližu kronu, priekš čekiem šā vai tā, un lietu esmu atrisinājis bez problēmām ne tā?

 

Āāā. Nepareiza pieeja!

Posted

> anonīms, liela muiža. Paližu kronu, priekš čekiem šā vai tā, un lietu esmu atrisinājis bez problēmām ne tā?

 

Āāā. Nepareiza pieeja!

 

 

Jo .... ?

Posted

logout.php ir update uz onlien='0'

 

ja es datubāzē pie members saglabāšu last_activity = 'laiks'

 

jāievada

mysql_query("update mambers set last_activity='laiks' where table='sesija' ") or die(mysql_error());

 

tad man online sadaļā kā jāizvada

mysql_query("select * from members where last_activity > 'laiks' ") or die (mysql_error());

??

Posted

> Jo .... ?

 

Lieki. Nav vajadzības.

 

**Skaidroju vēlreiz:**

 

Lietotājs var palikt onlainā pat ja tā nemaz nav. Tas neko nemaina kamēr neviens to neredz. Tieši tāpēc nav jēgas izmantot cron'u.

Tiklīdz kāds atver lapu kurā ir onlain lietotāju liste vai jebkas cits, kur tiek parādīts attiecīgā lietotāja status (online/offline) - tad tas tikai kaut ko maina.

Tiklīdz attiecīga lapa tiek atvērta, tikai tad čekojam pēdējo lietotāja aktivitāti pret pašreizējo laiku. Ja aktivitāte ir notikusi pārak sen (teiksim, 10 minūtes vai vairāk) - tad uzsetojam lietotāja statusu kā offline.

Gala lietotājs neredzēs nekādu starpību. Ieguvumi? Netiks izmantots cron, kas, kā zināms, izmanto resursus. Visi laimīgi! Šito es pinnoju lai nav simts un vienu reizi jāskaidro.

Posted

nu tad tā sanāk ka apdeitoju datubāzi ar last aktivity un tad kur vajag izvadu last activity kur ir mazāks par piem. 15 min ja ir lielāks tad viņu nerāda!

Posted

Nafig vispār tas online lauks vajadzīgs? Lieka rakstīšana/lasīšana katru reizi. Galu galā, "online " ir tika viens mainīgais, ko tu aprēķini PHP pusē balstoties uz pēdējās aktivitātes laiku.

Pilnīgi lieka kolonna!

 

$is_online = time() > ($row['last_activity'] + 10*60);

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...