PC Ekspert Forum

PC Ekspert Forum (https://forum.pcekspert.com/index.php)
-   Web dizajn, programiranje i ostalo (https://forum.pcekspert.com/forumdisplay.php?f=39)
-   -   php zabrana istovremenog logiranja više korisnika sa istim usernameom i passwordom (https://forum.pcekspert.com/showthread.php?t=69295)

beroland 13.05.2007. 21:14

php zabrana istovremenog logiranja više korisnika sa istim usernameom i passwordom
 
Imam potrebu napraviti dio sajta na kojem bih želio dopustiti ulazak samo s usernameom i passwordom te pomoću php-a onemogućiti da se istovremeno logira više korisnika koristeći isti username i password. Za sada sam pokušao s dosta dobrim i često koprištenim php skriptama:
phpSecurePages
Login Redirect
vAuthenticate 3.0.1
ali na žalost niti jedna od njih nema tu mogućnost da kontrolira da li je netko u to vrijeme već ulogiran s istime usernamemom i paswordom.

Molio bih ako netko zna da li ima kakva skripta s kojom je to moguće ili ima neka druga sugestija. Prekopao sam hotscripts.com ali nisam uspio naći. I googlao sam o tome ali učinak je gotovo nikakav, što me vrlo čudi. Možda nisam prave pojmove tražio.

Hvala svima!

gog 13.05.2007. 21:27

Napiši sam skriptu, nije tako komplicirano kako zvuči, a i naučiš ćeš nešto korisno.

Samo kod autorizacije pohraniš IP adresu s koje je korisnik autoriziran i ako se pokuša netko s druge IP adrese logirati dok je ovaj još aktivan (npr. prošlo je manje od XX minuta otkad se netko s druge IP adrese logirao s istim usernamemom) onda ga otkantaj.

Jedini problem koji bi mogao imati su ti korisnici koji su iza NAT-a, jer iza jedne IP adrese može se nalaziti jako puno računala.

beroland 14.05.2007. 00:36

Nisam baš toliko dobar php programer, barem za sada ;-)
Znaš li možda neko gotovo rješenje za prijedlog.

gog 14.05.2007. 00:44

Nažalost ne, grozim se gotovih riješenja :)

beroland 14.05.2007. 00:55

Definitivno si u pravu, ali nemam toliko vremena koliko bi mi trebalo za kvalitetno mymade rješenje. Na kompu i oko njega volim uvijek sve manualno i sve znati što se događa, ali vjerojatno ću za ovo morati naći neko gotovo rješenje.

jonyb 14.05.2007. 02:10

nije to tak teško napraviti, upišeš u mysql bazu da je korisnik logiran, npr. stanje 1, kad se odlogira stanje 0. naravno adminu ne stavljaš restrikciju.

ak se drugi korisnik pokuša logirati provjeravaš zapis u bazi, ak je 1 ide na error ak je 0 normalno se logira...

bude 14.05.2007. 09:56

Citiraj:

Autor jonyb (Post 722477)
nije to tak teško napraviti, upišeš u mysql bazu da je korisnik logiran, npr. stanje 1, kad se odlogira stanje 0. naravno adminu ne stavljaš restrikciju.

ak se drugi korisnik pokuša logirati provjeravaš zapis u bazi, ak je 1 ide na error ak je 0 normalno se logira...

I sto ako se taj isti korisnik ne odlogira nego samo ugasi preglednik? Session je prekinut al se u bazu nije vratila 0 da je odlogiran. Nikad vise se nece moc ulogirat bez admin akcije

horza 14.05.2007. 10:15

Citiraj:

Autor bude (Post 722586)
I sto ako se taj isti korisnik ne odlogira nego samo ugasi preglednik? Session je prekinut al se u bazu nije vratila 0 da je odlogiran. Nikad vise se nece moc ulogirat bez admin akcije

pa za to se prilikom logina koristi vremenska provjera početka prethodnog sessiona, bez obzira spremaju li se sessioni u bazu, file, ili se koristi php session, zar ne?

beroland 14.05.2007. 11:12

Hvala ljudi, molim Vas još malo pomoći, malo detaljnije, ako imate vremena i volje :-)

jonyb 14.05.2007. 11:48

u tome je caka, ako se korisnik ne odlogira. kod svakog logina provjeravaš prošlo vrijeme od aktivnosti zadnjeg korisničkog logina. ak je korisnik neaktivan npr. preko 15min automatski je status 0 i logira se.

beroland 14.05.2007. 11:52

meni je problem to što bi se u tom dijelu održavale online prezentacije pa je vrlo lako moguće da ljudi sjede i gledaju u monitor bez da črčkaju po računalu, a to bi server onda protumačio kao neaktivnost više od 15min i zatvorio bi, a to ne bi bilo nikako dobro. Ima li tu kakvo rješenje?

IP9 14.05.2007. 11:56

ja bi to ovak napravil...

...napravio tablicu u koju se zapisuje username i vrijednost time();. kod logina bi se zapisivalo to obadvoje. korisnik oji se ulogira pri svakom refreshanju ("posebnih") stranica samo updejta taj time();. kad se netko drugi pokuša logirati provjerio bih u bazu zadnji time(); i ako je prošlo npr. 30 (60*30=1800 sekundi) minuta onda bih dopustio login, u suprotnome nebi.

IP9 14.05.2007. 12:10

Citiraj:

Autor beroland (Post 722695)
meni je problem to što bi se u tom dijelu održavale online prezentacije pa je vrlo lako moguće da ljudi sjede i gledaju u monitor bez da črčkaju po računalu, a to bi server onda protumačio kao neaktivnost više od 15min i zatvorio bi, a to ne bi bilo nikako dobro. Ima li tu kakvo rješenje?

ako se ne varam... na moodlu postoji neka skripta pri slanju privatnih poruka koja uvijek provjerava jel otvorena stranica od moodla. i izgleda mi kao da javascript uvijek refresha tu stranicu svakih x sekundi. ali ne na način da cijeli prozor refresha, nego samo neke dijelove. možda je složeno s frameovima. mislim da bi tebi tak nešt trebalo.

beroland 14.05.2007. 12:31

Citiraj:

Autor IP9 (Post 722703)
ako se ne varam... na moodlu postoji neka skripta pri slanju privatnih poruka koja uvijek provjerava jel otvorena stranica od moodla. i izgleda mi kao da javascript uvijek refresha tu stranicu svakih x sekundi. ali ne na način da cijeli prozor refresha, nego samo neke dijelove. možda je složeno s frameovima. mislim da bi tebi tak nešt trebalo.

Dobra ideja ovo s JavaScriptom. Možda bi to bio put, samo nemam pojma kako to iskombinirati s php-om i bazom (MySQL).

jonyb 14.05.2007. 15:14

neznam točno koji je kontekst weba koji radiš i koliko ljudi če ga koristiti, ali možda ti je bolje ne zamarati se time. nego več ako imaš više ljudi koji koriste taj web jednostavno im napraviš ovlasti i restrikcije, a to se vrlo lako da riješiti u svakoj skripti.

a za login svaki korisnik nek imam svoj pasw i username.

beroland 14.05.2007. 16:12

Citiraj:

Autor jonyb (Post 722852)
nego več ako imaš više ljudi koji koriste taj web jednostavno im napraviš ovlasti i restrikcije, a to se vrlo lako da riješiti u svakoj skripti.

a za login svaki korisnik nek imam svoj pasw i username.

da, to je već napravljeno za dio sajta u kojem su relativno statičke stvari i sve šljaka, ali ovo sa ovakvim logiranjem bi mi trebalo za poseban dio sajta koji planiram napraviti, a radi se o real-time podcastingu i za to mi treba takav login s tim restrikcijama.

kagjes 16.06.2007. 11:04

moja ideja:

dakle, pri pocetku svakog novog sessiona, neka server posalje korisniku poseban ID (moze cak i neki obicni inkrement broja) a korisnik ga spremi u cookie. neka korisnik pri svakom dohvatu informacija salje taj ID, kako bi se identificirao taj session, a na server nek se sprema zadnje vrijeme dohvata. dalje, napravi na klijentskoj stranici ovo sa refreshom na jednom iframeu. ustvari ne moras cak ni refresh vec slozi mini popup (kao recimo u phpBBu kad dobijes novu poruku) koji bi odrzavao session (iako ovakvo rjesenje trazi jos malo prtljanja, moras provjeravat da li se popup otvorio). mislim da ti za periodicki refresh cak ne treba javascript vec imas drito za to u htmlu nekakav tag (pogledaj si source od iskrica.com kad se logiras, tamo se radi periodicki refresh stranice) gdje ce se samo slati taj ID, a server ce tako osvjezavat vrijeme zadnjeg pristupa. ako pokusa netko dobiti novi ID ili pristupit sa nekim drugim IDom za vrijeme sessiona, server ce ga odbiti. server zadrzava ID sve dok ne prodje odredjeno vrijeme i dok neko ne zatrazi drugaciji ID, sto ce reci da korisnik koji je zadnji pristupao moze sve pozatvarat otvorit i da opet mu sve funkcionira, jer klijentski ID je spremljen u cookieu a server je njega zadnjeg zapamtio.


eto, ovo bi ti ziher sljakalo. malo bi trebo programirat al to ti je super:)

bude 19.06.2007. 02:25

Citiraj:

Autor kagjes (Post 747610)
moja ideja:

dakle, pri pocetku svakog novog sessiona, neka server posalje korisniku poseban ID (moze cak i neki obicni inkrement broja) a korisnik ga spremi u cookie. neka korisnik pri svakom dohvatu informacija salje taj ID, kako bi se identificirao taj session, a na server nek se sprema zadnje vrijeme dohvata. dalje, napravi na klijentskoj stranici ovo sa refreshom na jednom iframeu. ustvari ne moras cak ni refresh vec slozi mini popup (kao recimo u phpBBu kad dobijes novu poruku) koji bi odrzavao session (iako ovakvo rjesenje trazi jos malo prtljanja, moras provjeravat da li se popup otvorio). mislim da ti za periodicki refresh cak ne treba javascript vec imas drito za to u htmlu nekakav tag (pogledaj si source od iskrica.com kad se logiras, tamo se radi periodicki refresh stranice) gdje ce se samo slati taj ID, a server ce tako osvjezavat vrijeme zadnjeg pristupa. ako pokusa netko dobiti novi ID ili pristupit sa nekim drugim IDom za vrijeme sessiona, server ce ga odbiti. server zadrzava ID sve dok ne prodje odredjeno vrijeme i dok neko ne zatrazi drugaciji ID, sto ce reci da korisnik koji je zadnji pristupao moze sve pozatvarat otvorit i da opet mu sve funkcionira, jer klijentski ID je spremljen u cookieu a server je njega zadnjeg zapamtio.


eto, ovo bi ti ziher sljakalo. malo bi trebo programirat al to ti je super:)

ideja je ok, pomocu AJAX-a izvest refreshanje i odrzavanje sessiona i to bi trebalo radit


Sva vremena su GMT +2. Sada je 10:53.

Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger