verificare daca un utilizator e on line(sesiune activa)

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

PHP_Junior
PHPRomania Supporter
Mesaje: 23
Membru din: Joi Feb 08, 2007 4:59 pm

verificare daca un utilizator e on line(sesiune activa)

Mesajde PHP_Junior » Sâm Dec 13, 2008 3:43 am

pai .. titlu cam spune tot .. adica:
scenariul este urmatorul:
site de matrimoniale , trebuie sa se afiseze atunci cand un utilizator intra pe un profil :-? daca utilizatorul vizitat este online , se folosesc sesiuni ,iar in sesiuni au fost captate: utilizatorul si cheia sesiunii (id-ul).

Problema mea ,.. pe care am stat o saptamana.. am cautat si pe google , am incercat diverse chestii .. este cum fac verificarea asta .. ma gandeam initial .. sa vad daca sesiunea cu userul(care este unic) al celui vizitat este setata cu isset .. dar nu a mers .. am incercat alte n variante dar nu am reusit, apelez in ultima instanta la voi ..

Multumesc anticipat , daca mai trebuiesc facute clarificari ..le voi face



oceans
Senior Member
Mesaje: 504
Membru din: Mar Noi 13, 2007 3:06 pm

Mesajde oceans » Sâm Dec 13, 2008 9:32 am

Salveaza sesiunile in baza de date gen: `id, sessionid, user, time` si faci diferenta dintre timpul actual si ala din baza de date si vezi daca e online,inactiv sau offline, asta-i ideea de baza.

PHP_Junior
PHPRomania Supporter
Mesaje: 23
Membru din: Joi Feb 08, 2007 4:59 pm

Mesajde PHP_Junior » Sâm Dec 13, 2008 3:16 pm

:-? da .. dar cum iau valorile sesiunii utilizatorului respectiv :-? ca la asta ma chinui eu .. adica .. imi ia numai valorile sesiunii curente .. cred ca imi scapa ceva :-?

oceans
Senior Member
Mesaje: 504
Membru din: Mar Noi 13, 2007 3:06 pm

Mesajde oceans » Sâm Dec 13, 2008 3:44 pm

Nu inteleg la ce te referi... id-ul sesiunii se pastreaza, doar daca deschide alt browser se schimba si atunci stergi sesiunea veche din baza de date.

PHP_Junior
PHPRomania Supporter
Mesaje: 23
Membru din: Joi Feb 08, 2007 4:59 pm

Mesajde PHP_Junior » Sâm Dec 13, 2008 5:07 pm

pai uite la ca m am gandit eu :-?

daca utilizatorul .. este logat .. atunci are cheie la sesiune .. adica .. pentru userul respectiv ,, corespunde o cheie :-? .. se salveaza in baza d date .. userul cu cheia .. respectiva .. acum .. daca cheia din baza de date .. corespunde cu vreo cheie .. din arrayul de sesiuni .. rezulta ca userul e activ :-? m am gandit ca nu pot exista doua chei identice in acelasi timp ..
ideea e sa compar cheia din baza de date .. cu cheia din arrayul de sesiuni .. cum iau alte informatii din arrayul de sesiuni .. inafara de informatiile despre sesiunea curenta .. :-? .. adica .. informatiile despre utilizatorul vizitat ... daca are cheie si egala cu cea din baza de date.. atunci e on .. daca nu are cheie .. nu e on .. :-? oricum s ar putea ca logica mea sa nu fie buna aici :-? m am gandit si la asta ,, oricum . uite ce contine fisierul : sesiuni

Cod: Selectaţi tot

<?
function verifica_logarea () { //functie ce verifica datele de logare
   $my_sql = mysql_query("SELECT count(*) FROM utilizatori WHERE utilizator = '".$_POST['utilizator']."' AND parola = '".$_POST['parola']."'");
   if (mysql_result($my_sql,0) != 1) { //daca datele de logare au corespondent in DB se intoarce 1
      $GLOBALS['_eroare'] = 'Date de logare incorecte !';
   }
   else {
      $_SESSION['utilizator'] = $_POST['utilizator'];  //se tine minte in variabile de tip global userul
      $_SESSION['keie'] = session_id(); //se tine minte in variabile de tip global id-ul sesiunii
   }
}
?>
[/code]

PHP_Junior
PHPRomania Supporter
Mesaje: 23
Membru din: Joi Feb 08, 2007 4:59 pm

Mesajde PHP_Junior » Sâm Dec 13, 2008 5:48 pm

Nu inteleg la ce te referi... id-ul sesiunii se pastreaza, doar daca deschide alt browser se schimba si atunci stergi sesiunea veche din baza de date.


problema e ca daca nu apasa butonul delogare... ramane informatie in tabel .. si imi apare on :-?

oceans
Senior Member
Mesaje: 504
Membru din: Mar Noi 13, 2007 3:06 pm

Mesajde oceans » Sâm Dec 13, 2008 6:02 pm

Da nu merge ce vrei tu sa faci, deoarece scriptul tau compara sesiunea user-ului pe care vrei sa-l afli daca e on cu sesiunea user-ului care apeleaza scriptul si normal ca nu se potrivesc.

problema e ca daca nu apasa butonul delogare... ramane informatie in tabel .. si imi apare on

Pai acolo intervine campul timp... include fisierul ala sesiuni.php in celelalte pagini si in el faci update la timp apoi calculezi daca au trecut 30/cate vrei/ de minute stergi inregistrarea. Poti sa te joci sa apara inactiv sau idle de X minute scazand din timpul actual timpul din baza de date.

70mmy
New Member
Mesaje: 1
Membru din: Lun Dec 15, 2008 2:21 pm

Mesajde 70mmy » Lun Dec 15, 2008 2:57 pm

Eu cred ca se poate face foarte ushor astfel:
cand userul incarca o pagina pune intro baza de date un timestamp la care a incarcat pagina respectiva
si daca in urmatoarele 5 min (sau depinde dupa cat timp consideri tu ca numai e activ) nu a mai incarcat nici o pagina atunci userul respectiv nu e activ

Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Mar Dec 16, 2008 10:43 am

Se poate si altfel: se face override pe directiva session.save_path, se seteaza pentru asta un folder accesibil, cu drept de scriere pentru apache, si se lucreaza pe acel folder, care va contine cookie-urile de sesiune pentru toti utilizatorii (un fisier/utilizator). Daca nu vrei sa depinzi de gc-ul de sesiune al lui PHP, atunci verifici file_mtime pentru fisierele respective si le iei in calcul doar pe cele modificate in ultimele x minute. Spor.


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 26 vizitatori