Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Tatuator handpoke

Plaja de nudisti in Grecia?

Mufa microusb a telefonului mobil...

"Ciudatenii" control pasa...
 Impamantare

Apple maps pe Windows 10

Sfarsitul woke-ismului si al core...

Renovare completa + pompa de cald...
 Libre Office nu vad liniile

Modalitați amuzante și ...

O disparitie de ani buni, Acces D...

Mancarea e scumpa
 Parere achiziționare BMW G20

Schimbarea bateriei moderne la VA...

Rostschreck Lidl

Si noi suntem Florin Piersic? / J...
 

Seseiuni

- - - - -
  • Please log in to reply
14 replies to this topic

#1
alex2300

alex2300

    Junior Member

  • Grup: Members
  • Posts: 226
  • Înscris: 16.04.2009
Am pe site-ul meu un formular de logare si inregistrare. Le-am testat si functioneaza.
La logare transmit o variabila $_SESSION['logat'] la da si $_SESSION['user'] la numele utilizatorului daca a bagat parola corect.
Acum vreau ca pe o pagina sa imi apara toti utilizatorii logati. Se poate asa ceva prin sesiune? Sau trebuie sa modific cu cookie-uri?

#2
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
Fiecare sesiune e un fisier separat pe server, intr-un anumit director. Trebuie sa le deschizi si sa citesti continutul. Problema e ca sesiuni au si utilizatoriii nelogati - sesiuni goale.

Te complici. Mai bine tii intr-un tabel din baza de date utilizatorii logati, si ii stergi de acolo dupa x minute de inactivitate.

#3
alex2300

alex2300

    Junior Member

  • Grup: Members
  • Posts: 226
  • Înscris: 16.04.2009

View Postdon_dannielo, on 18th December 2009, 21:42, said:

Fiecare sesiune e un fisier separat pe server, intr-un anumit director. Trebuie sa le deschizi si sa citesti continutul. Problema e ca sesiuni au si utilizatoriii nelogati - sesiuni goale.

Te complici. Mai bine tii intr-un tabel din baza de date utilizatorii logati, si ii stergi de acolo dupa x minute de inactivitate.

1. Si cum imi dau seama sa sterg userii dupa x min de inactivitate? Adica de exemplu pot masura timestampul in care a fost ultima data activ. Presupun ca pentru asta trebuie cron, ceea ce eu nu am la dispozitie pe servrul meu nou.

2. Chiar daca as fi avut cron, cum mi-as fi dat seama sa adaug din nou userii dupa ce revin din inactivitate?

3. Cu alta modalitate se poate? Sau macar sa  incerc sa vad sesiunile. Acelea unde le gasesc? Ca sa vad daca sunt goale pot masura lungimea fisierului.

LE: Sau poate stie cineva ce metoda se foloseste in phpbb3 pentru detectarea starii?

Edited by alex2300, 18 December 2009 - 22:27.


#4
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
Daca site-ul e cat de cat vizitat nu ai nevoie de cron.

Folosesti de ex doua campuri, id-ul userului si timestamp. (Sau IP in loc de id, daca vrei sa vezi si "guest"ii)

Si pentru orice pagina vizitata de un anume id, faci trei lucruri in acest tabel:

1) daca id-ul nu exista in tabel, il adaugi
2) daca exista, updatezi campul timestamp pentru acel id, cu timestampul curent.
3) stergi din tabel toate inregistrarile care au timestampul mai mic cu x secunde fata de timestampul curent.
Deci tabelul va contine intotdeauna useri activi in ultimele x secunde.

Sesiunile, normal, sunt in /usr/tmp/ , dar trebuie sa ai acces acolo.

Edited by don_dannielo, 18 December 2009 - 22:39.


#5
alex2300

alex2300

    Junior Member

  • Grup: Members
  • Posts: 226
  • Înscris: 16.04.2009

View Postdon_dannielo, on 18th December 2009, 22:31, said:

Daca site-ul e cat de cat vizitat nu ai nevoie de cron.

Folosesti de ex doua campuri, id-ul userului si timestamp. (Sau IP in loc de id, daca vrei sa vezi si "guest"ii)

Si pentru orice pagina vizitata de un anume id, faci trei lucruri in acest tabel:

1) daca id-ul nu exista in tabel, il adaugi
2) daca exista, updatezi campul timestamp pentru acel id, cu timestampul curent.
3) stergi din tabel toate inregistrarile care au timestampul mai mic cu x secunde fata de timestampul curent.
Deci tabelul va contine intotdeauna useri activi in ultimele x secunde.

Sesiunile, normal, sunt in /usr/tmp/ , dar trebuie sa ai acces acolo.

Multumesc de sfat. O sa ma apuc sa implementez.

#6
alex2300

alex2300

    Junior Member

  • Grup: Members
  • Posts: 226
  • Înscris: 16.04.2009
M-am impotmolit putin:

if($_SESSION['logat1'] != 'Da') 
{

// Nu e logat

// Verifica daca IP-ul se afla in tabelul online_useri

$cerereSQL = "SELECT * FROM `online_useri` WHERE ip = '".$_SERVER['REMOTE_ADDR']."' ";
$rezultat = mysql_query($cerereSQL);
if(mysql_num_rows($rezultat) == 1) {
  // Daca se afla updatez timestamul
  while($rand = mysql_fetch_array($rezultat))
  {
	$cerereSQL = "UPDATE `online_useri` SET `time` = '".time()."' WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."' LIMIT 1";
	mysql_query($cerereSQL);
  }
}

else {
  // Daca nu se afla, il bag
mysql_query("INSERT INTO `online_useri` SET ".
						"`ip` = '".$_SERVER['REMOTE_ADDR']."', ".
						"`time` = '".time()."'");
}

// Sterg userii inactivi de 5 minute

// Prima data m-am gandit asa, dar nu a mers: mysql_query("DELETE FROM `online_useri` WHERE `time` >= '".time()-300."'");
mysql_query("DELETE FROM online_useri WHERE time >= 'time()-300'");


}

else
{

// E logat

// Verifica daca userul-ul se afla in tabelul online_inregistrati




// Daca se afla updatez timestamul




// Daca nu se afla, il bag




// Sterg userii inactivi de 5 minute

mysql_query("DELETE FROM online_useri WHERE time >= 'time()-300'");

}

Am facut codul complet doar pentru userii nelogati(salveaza ip-ul). Am vazut ca il adauga si ca merge.
Apoi am incercat si stergerea si nu ii sterge pe cei care nu sunt activi de 5 minute.

#7
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
Scaderea aia nu cred ca ajunge sa fie executata intre single quotes.
Si semnul pare gresit.

Incearca:

time <= ".time()."-300

Edited by don_dannielo, 22 December 2009 - 12:41.


#8
alex2300

alex2300

    Junior Member

  • Grup: Members
  • Posts: 226
  • Înscris: 16.04.2009

View Postdon_dannielo, on 22nd December 2009, 12:30, said:

Scaderea aia nu cred ca ajunge sa fie executata intre single quotes.
Si semnul pare gresit.

Incearca:

time <= ".time()."-300

Acum nu mai sterge nimic

#9
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
Sunt pe mobil n-am cum sa te ajut mai mult.

Fa scaderea separat atunci, salveaza valoarea intr-o variabila si lucreaza cu ea.

Si mai verifica logica scriptului. Nu inteleg de ce delete-ul se afla intr-un else{}

Edited by don_dannielo, 22 December 2009 - 13:02.


#10
alex2300

alex2300

    Junior Member

  • Grup: Members
  • Posts: 226
  • Înscris: 16.04.2009

View Postdon_dannielo, on 22nd December 2009, 12:58, said:

Sunt pe mobil n-am cum sa te ajut mai mult.

Fa scaderea separat atunci, salveaza valoarea intr-o variabila si lucreaza cu ea.

Am incercat si asa. Vad eu. Cred ca renunt la treaba asta.

#11
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
Mai verifica logica scriptului.

De ce delete-ul se afla intr-o conditie else? Ar trebui sa stearga fara vreo conditie.

#12
alex2300

alex2300

    Junior Member

  • Grup: Members
  • Posts: 226
  • Înscris: 16.04.2009

View Postdon_dannielo, on 22nd December 2009, 13:06, said:

Mai verifica logica scriptului.

De ce delete-ul se afla intr-o conditie else? Ar trebui sa stearga fara vreo conditie.

Pai e in else deoarece am pus conditia if sa vad daca nu e logat.
Deci practic ar suna cam asa:

1. Daca nu e logat:
a ) Vede daca este introdus in baza de date ip-ul
I) Daca nu este, il introduce
II) Daca este upgradeaza timestampul
b ) Sterge ip-urile inactive de 5 min

2. Daca nu e logat (else-ul):
...
b ) Sterge ip-urile inactive de 5 min

Edited by alex2300, 22 December 2009 - 13:16.


#13
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
La delete trebuie sa se ajunga oricand, la orice rulare a scriptului, chiar daca e si un vizitator nelogat.

#14
alex2300

alex2300

    Junior Member

  • Grup: Members
  • Posts: 226
  • Înscris: 16.04.2009

View Postdon_dannielo, on 22nd December 2009, 13:20, said:

La delete trebuie sa se ajunga oricand, la orice rulare a scriptului, chiar daca e si un vizitator nelogat.

Da, stiu. Dar incepusem codul cu verificarea si nu mi-am dat seama si ajunsesem la else si l-am continuat asa. Il modific repede, nu e problema, dar oricum trebuia sa mearga si asa.

#15
pxcjs

pxcjs

    Junior Member

  • Grup: Members
  • Posts: 31
  • Înscris: 29.08.2009
In locul tau as incerca sa cataloghez un user ca inactiv prin cookie; Atata timp cat cookie-ul este existent userul sa fie pastrat activ, in caz contrar cookieul se sterge singur si necesita logarea.

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate