Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako da znam da se korisnik izlogovao sa sajta

[es] :: PHP :: Kako da znam da se korisnik izlogovao sa sajta

[ Pregleda: 2846 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mixmashine
Ristic Predrag
Beograd

Član broj: 19551
Poruke: 26
*.dynamic.sbb.co.yu.



Profil

icon Kako da znam da se korisnik izlogovao sa sajta01.08.2007. u 12:58 - pre 203 meseci
Pozdrav svima. Da odmah predjem na stvar:

Koristim Mysql za bazu korisnika i sesiju za login.
U tabeli korisnici nalaze se sve informacije o korisniku, bitna polja su ( korisnicko ime - korime), (poslednji login - poslednji_login), (login - login).

Kako bih prikazao ko se trenutno nalazi na sajtu od registrovanih korisnika koristim update baze gde, kada se korisnik uloguje, polje login ima vrednost "1", inace je default vrednost "0".
Code:
mysql_query("UPDATE korisnici SET login=1 WHERE korime='$korime'");

Kada korisnik klikne na logout, polje login se vraca na vrednost "0", ali problem se javlja kada se browser zatvori tada korisnik ostaje ulogovan, tj polje login ostaje "1".

Nasao sam neko resenje ovde na forumu, neko je imao isti problem, ali nikako da uspem da napravim to,evo posle 3 dana pokusavanja nisam uspeo da dodjem do rezultata, jednostavno ne mogu da napisem u php-u to sto sam zamislio u glavi, pretpostavljam da veliki je problem sto sam ja to verovatno pogresno zamislio. Funkciju time() ne razumem bas najbolje, tj kako da iz time() vratim "H.m.s"


Nadam se da sam detaljno i jasno objasnio moj problem, pa ako bi neko mogao da mi pomogne oko ovoga. Unapred hvala svima!
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.co.yu.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta01.08.2007. u 13:13 - pre 203 meseci
Pa bila je ne tako davno tema bas o ovom problemu. http://www.elitesecurity.org/t255524-0
mislim da je tu dosta stvari objasnjeno. a za funkciju time, otvori manual, to ti je najlakse...
 
Odgovor na temu

mixmashine
Ristic Predrag
Beograd

Član broj: 19551
Poruke: 26
*.dynamic.sbb.co.yu.



Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta01.08.2007. u 14:14 - pre 203 meseci
Citao sam manual, citao sam srodne teme ovoj, ali i dalje mi nije jasno. Palo mi je napamet ovo sa sesijama i bazom ali ne ne pada mi napamet kako to da odradim. Znam da iskusniji, tj majstori ovog zanata nemaju vremena da se bakcu sa ovim pocetnickim problemima, pa ako moze neko ko ima malo vremena. Nalazim da je problem sto ne razumem neke stvari koliko god da citam manual. Potrebna mi je ideja sa objasnjenjem, potreban mi je kod za to. Naravno ne trazim da mi neko napise i ja to kao iskopiram i to da radi, ne, hocu sam, ako bi neko mogao da me uputi sa nekim prakticnim primerom pa cu se za ostalo snaci.
Vidim da ima dosta ljudi koji kazu " e treba mi skripta za to i to , jel moze neko da napise " nisam ja od tih ljudi, hocu sam, al sam zapeo... Stvarno ne mogu da nadjem resenje, Hvala Vam.
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.co.yu.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta01.08.2007. u 14:27 - pre 203 meseci
ajde da se ne ponavljamo, evo konkretan Sinisin post (hatebreeder)
http://www.elitesecurity.org/t255524-0#1538036
Da li ti odgovara ovo sto je on napisao u postu?
mozes i da nastavis na tamosnjoj temi, da se ne bi ponavljali
 
Odgovor na temu

1r0nM4n
Nenad Vasić
Web Developer
Beograd

Član broj: 55970
Poruke: 441
*.ikomline.net.

ICQ: 303614173
Sajt: www.nenadvasic.com


+1 Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta01.08.2007. u 14:59 - pre 203 meseci
Citat:
kako da iz time() vratim "H.m.s"

Code:
<?php
$time = time()-3600*5;
echo "Vreme pre 5 sati je bilo:".date(("H.i.s"), $time);
?>

I "m" je mesec a ne minut.
http://www.php.net/manual/en/function.date.php

p0z
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
91.150.115.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta01.08.2007. u 19:14 - pre 203 meseci
Ljudi, dokle da prepisujemo manual na ovaj forum?
Ovo za formatiranje datuma/vremena iz timestamp-a mora da zna svako ako hoće bilo šta da uspe da radi u PHP-u. Daj uozbiljite se malo...
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

mixmashine
Ristic Predrag
Beograd

Član broj: 19551
Poruke: 26
*.dynamic.sbb.co.yu.



Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta01.08.2007. u 20:18 - pre 203 meseci
Moja je greska bila sto sam napisao m kao minut, izvinjavam se.Ovo mi je pomoglo da resim neke stvari. Hvala 1r0nM4n-u na objasnjenju.
Ja sam izgleda malo glup i slabije kapiram, pa zato jos uvek nisam resio kako da napravim kombinaciju PHP-MySQL da izloguje korisnika koji nije aktivan duze od 5-10 min, tj da mu stavi polje login="0". :(

[Ovu poruku je menjao mixmashine dana 01.08.2007. u 21:32 GMT+1]
 
Odgovor na temu

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 246
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta01.08.2007. u 21:49 - pre 203 meseci
Ma nisi glup, vecina clanova ovog furuma na pocetku svoje karijere su se susreli sa ovim problemom.
Najbolje bi bilo da kreiras jos jednu tabelu recimo users_online. U tu tabelu najneophodnije su sledece kolone:
id, session_id, zadnaja_akcija, user.
E sad logika je sledeca.
Kada se neko pojavi na sajt, bilo da se radi o registrovanom korisniku ili obicnom posetitelju, uzimas id sesije "session_id()" . Prvo proveravas dali u tabeli users_online postoji taj sesson_id. Ako ne postoji upisujes u tabelu
session_id -> session_id(), zadnja_akcija -> time() i user . Ako je user registrovan korisnik upisi id korisnika ako nije mozes da postavis 0. Tako ces znati ko je na sajtu.

Ako session_id() postoji u bazi onda samo pravis update na "zadnja_akcija -> time()"

E sada je ono sto ti nije jasno. Treba da definiras neki vremenski interval prema kome ces znati dali je korisnik trenutno na tvom sajtu ili nije. To moze da bude interval od 30 minuta t.e. 1800 sec.
Sve sto treba da napravis je to da proveris i da izbrises sve redove iz tabele users_online gde je zadnja_akcija < time()-1800

 
Odgovor na temu

mixmashine
Ristic Predrag
Beograd

Član broj: 19551
Poruke: 26
*.dynamic.sbb.co.yu.



Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta01.08.2007. u 22:17 - pre 203 meseci
Sta da kazem sem SVAKA CAST. Pa upravo to mi je trebalo, ta logika i takvo objasnjenje.... Stvarno ti svaka cast, javicu da li sam uspeo.

Hvala puno na ovom odgovoru.
Pozdrav.
 
Odgovor na temu

mixmashine
Ristic Predrag
Beograd

Član broj: 19551
Poruke: 26
*.dynamic.sbb.co.yu.



Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta02.08.2007. u 23:25 - pre 203 meseci
Pozdrav,

odradio sam sledece: ( session_start() mi se nalazi u config.php kao i ostali podaci za bazu )
Code:
include "config.php";

$sessionID = session_id();
$sad = time();
$postoji = @mysql_query("SELECT * FROM kor_online WHERE sessionID=$sessionID ");
$not_null = @mysql_num_rows($postoji);  

//Provera da li je korisnik/posetilac na sajtu
if ( $not_null != 0 ) {
mysql_query("UPDATE kor_online SET zadnja_akcija=$sad WHERE sessionID=$sessionID ");

else { //Ako je korisnik nov, upisi u bazu 


mysql_query("INSERT INTO kor_online (sessionID, zadnja_akcija)
                   VALUES ('$sessionID','$sad')");
} //Kraj provere korisnika i upisa u bazu
$minuti = 5;
$sekunde = $minuti*60;

$proslo = $sad-$sekunde;

mysql_query("DELETE * FROM kor_online WHERE zadnja_akcija < $proslo");
 
 

Ljudi, meni ovo ne radi :( Sve sto radi jeste da kada god odem na sajt, on puni bazu sa istim sessionID -om i menja time() i nista vise.
Prijavljivao mi je gresku kada radim mysql_num_rows bez @ znaka ne znam zasto, resenje da stavim to @ sam nasao ovde na forumu mada ne znam sta znaci i koja je razlika izmedju @ i bez @.

Upravo sam probao i sa $not_null = count($postoji)-1; opet isto.

Nisam do sada naisao na ovakvu situaciju i problem pa molim za pomoc, Hvala.

[Ovu poruku je menjao mixmashine dana 03.08.2007. u 00:55 GMT+1]

[Ovu poruku je menjao mixmashine dana 03.08.2007. u 01:00 GMT+1]
 
Odgovor na temu

centaur
Beograd

Član broj: 65691
Poruke: 407
*.ikomline.net.

ICQ: 249678363
Sajt: www.pavko.net


+24 Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta02.08.2007. u 23:54 - pre 203 meseci
Ajd sad polako.

prvo:
Kada stavis @ ispred neke funkcije, nece ti ispisivati gresku ukoliko do nje dodje.To znaci da si gresku sakrio od samog sebe :)

drugo:
Kada u upitu koristis varijablu tipa string (a session_id jeste string), moras je staviti pod ' (polunavodnik).
Znaci probaj da napises upit ovako:

Code:

$postoji = @mysql_query("SELECT * FROM kor_online WHERE sessionID = '$sessionID'");


To naravno primeni kod svih upita.

I jedan tip za kraj:
Ne moras da selektujes sva polja u bazi kada te interesuje da li postoji odredjeno polje..
Tebe interesuje da li to polje postoji ili ne (mislim na session_id).
Sa count() bi to bilo mnogo optimizovanije.
npr:
Code:

$postoji = @mysql_query("SELECT count(*) FROM kor_online WHERE sessionID = '$sessionID'");



Powered by Slackware 13
 
Odgovor na temu

mixmashine
Ristic Predrag
Beograd

Član broj: 19551
Poruke: 26
*.dynamic.sbb.co.yu.



Profil

icon Re: Kako da znam da se korisnik izlogovao sa sajta03.08.2007. u 00:34 - pre 203 meseci
Upravo sam hteo da napisem to :) Primetio sam da je greska jer nisam stavio pod navodnike ovako, '$sessionID'.
Ali dobro da si mi objasnio zasto se koriste jer sam mislio da sam pogresio prilikom kucanja.
Uporedjivao sam kod sa jednim slicnim gde mi cita koliko ima komentara za odredjenu vest i tamo nisam koristio navodnike samo sam upisivao $lalal i to je radilo.
Primetio sam da i kada sam izmenio, tj stavio pod navodnike $sessionID nije htelo da radi, ne znam iz kog razloga, ali kada sam umesto $sessionID=session_id(); stavio $sesija=session_id() da je proradilo. Ne znam da li to ima neke veze..... Pomislio sam da slucajno nisam vec definisao $sessionID, ali nisam...
Sad mi je sve mnogo jasnije, hvala puno. Za sad misim da necu imati vise pitanja... A ako budes imao vremena objasni mi samo ovo gore sto sam napisao.
Hvala majstore jos jednom, puno si mi pomogao!

---Dopuna--
Sve radi kako treba!!! Hvala centaur-u, glavince-u i 1r0nM4n-u na velikoj pomoci, naucio sam dosta toga iz prethodnih postova.

[Ovu poruku je menjao mixmashine dana 03.08.2007. u 02:34 GMT+1]
 
Odgovor na temu

[es] :: PHP :: Kako da znam da se korisnik izlogovao sa sajta

[ Pregleda: 2846 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.