[ veljovic @ 10.08.2004. 20:27 ] @
| napravio sam neke skriptove ali imam problem.
pristup stranama sam iskontrolisao kroz promenljivu koju
sam registrovao kroz sesiju session_register("promenljiva").
preko nje proveravam korisnika ali me muci logout. kada korisnik
pritisne submit=="logout" trenutni skript ga salje na
logout.php i sesija se prekida. to sam proverio i ako je
if(session_is_registered("promenljiva"))
onda vrsim session_unregister() pa session_destroy().
tada korisnika saljem na obicnu stranu za svakog korisnika ali sa par
"klik" na back u gornjem ulgu explorera i osvezanjem korisnik ponovo
biva vracen na neku od strana.
kako? zasto? kako da ga "oteram" ?! |
[ NetworkAdmin @ 10.08.2004. 23:01 ] @
Code: <?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();
// Unset all of the session variables.
$_SESSION = array();
// Finally, destroy the session.
session_destroy();
?>
[ bluesman @ 11.08.2004. 02:58 ] @
To sto ti pricas je savim normalno ponasanje. Znaci covek se uloguje, malo bleji po sajut pa se izloguje. A onda kazes da se vrati sa BACK na stranicu gde se ulogovao i uradi REFRESH. Pa sasvim je normalno da opet bude ulogovan jer sa REFRESH ponovo postujes sve podatke koje je on slao prilikom login, i script ga autorizuje kao i prethodni put.
[ Gojko Vujovic @ 11.08.2004. 03:01 ] @
Jeste da al zato koristi specijalno generisani parametar koji upišeš u bazu kada poseti stranicu gde kuca login podatke, pa to proveriš pri prvom logovanju i kreiranju sesije i markiraš kao "potrošeno" ili naprosto obrišeš, ako bude match-a. Ako nema matchovanja tj. već je potrošio jednom login sa te stranice, odbijaš da ga uloguješ opet.
To konceptualno pričam a za kod naravno snađi se pošto mnogo zavisi od same aplikacije.
[ broker @ 11.08.2004. 10:36 ] @
Ti izgleda u promenljivama sesija cuvas podatke o login statusu?
Radi to u bazi. Napravi posebnu tabelu u kojoj ces za tekucu sesiju da cuvas statuse.
Kada se korisnik izloguje, promenis mu status u tabeli i onda i ne moras da ubijas sesiju jer ce prilikom seldeceg ucitavanja neke strane, skript da proverava da li u tabeli sesija za tekucu sesiju postoji login, i ako ne postoji zna se sta mu sledi. Tad mu vracanje sa back dugmetom ne moze pomoci.
[ NetworkAdmin @ 11.08.2004. 15:53 ] @
ima jos folova se header no-cache i slicno ali to ne garantuje da ce raditi sa svim browserima.
Recimo fol koji je dobro poznat kod porn sajtova koji imaju mehanizam zastite member stranica sa sesijom gdje se kod logiranja provjeri user i pass i sad dodjelis mu sesiju i naravno polupismeni webmaster ne unistava sesije pa da bi gledao member pages samo ti treba link sa session ID i to je sve.
[ veljovic @ 12.08.2004. 18:12 ] @
ovako:
kao prvo da se zahvalim Gojku koji mi je dao dosta dobru ideju kako da
resim problem.
posto radim stranu na kojoj ce odredjeni broj korisnika pristupati
po nekoliko puta u toku dana, to ne mogu da im ogranicim vreme,
kolicinu (broj pristupa) ili sta vec ali sam dosao na jednu sjajnu ideju:
jednostavno dodam u tabelu polje koje ce se zvati recimo 'status' i koje
ce imati samo dve vrednosti. po default_u 0 i kada je aktivan onda 1.
na taj nacin mi ne promice nikako.
registrujem sesiju :
session_start()
session_register('kontrola')
onda toj promenljivoj dodelim vrednost i upisem u bazu.
prilikom upisa vrsim upload vrednosti za 'status' polje i umesto
0 pisem 1.
na sledecim stranama proveravam 'kontrola' i 'status' !
na svakoj strani takodje imam dugme 'logout'. ono ide na stranu na
kojoj radim:
session_unregister('kontrola')
session_destroy()
i pored ovog upisujem u polje 'status' vrednost 0 .
to ima sledecu prednost:
1. koliko ja znam zatvaranjem explorer_a se prekida sesija, sto znaci
da ako to uradi imace 1 u 'status' ali nece imati geristrovanu sesiju.
2. ako izvrsi logout nema vise 1 u 'status' pa i ako uspe da osvezi
zadnju stranu ne znaci mu jer nema 1 u 'status' bez obzira sto sesija
mozda moze tako da se prevari (nisam siguran ali sam sumnjam u sigurnost) !
isprobao sam razne kombinacije i mislim da ne moze da zaobidje kontrolu !
ako ipak imam propust u svemu tome neka neko kaze. vidim da je strana za kratko
vreme procitana oko stotinak puta pa se nadam da ce neko ko jos nema iskustva, kao
i ja, mozda naciti u ovoj temi !
[ u_m @ 11.10.2004. 00:45 ] @
Hajde da se ja zakacim za ovo izbacivanje.
Evo mali opis situacije: imam forum i jedan korisnik nonstop salje poruke kojima tu nije mjesto, kako da mu zabranim ulazak na njega?
Uslovi: ne mogu da blokiram ip, skoro svi koriste isti, trenutno pravim login sistem, ali i sa njim, kako da mu zabranim da se jos jednom prijavi pod drugim imenom?
ideje koje meni padaju na pamet: podmetnem mu kuki u kom kaze da je sutnut sa sajta (sta ako ne prima kukije?), zapamtim njegov ip, brouser i slicno (problem je sto je u pitanju mobilni telefon i blokiracu onda sve sa tim modelom)
[ Shinhan @ 11.10.2004. 08:11 ] @
Ako su mu poruke uvek iste onda bi mogao da mu jednostavno automatski
brises sve poruke.
[ broker @ 11.10.2004. 11:00 ] @
Iskljuci opciju automatske autentifikacije korisnika i autentifikuj ih rucno. Imaces malo vise posla ali sigurno neces imati problema sa "letacima".
[ Dr NIK @ 11.10.2004. 18:05 ] @
@veljovic:
Imao sam taj isti problem. Kada se izloguje kao da se nije izlogovao. I napravio sam ovu donju funkcjiu. Vidi se da je tu najveci problem oko toga da li je $_SESSION preko 'register_globals' postavljena kao globalna promenljiva
Code:
function logoutUser(){
$register_globals = ini_get('register_globals');
if ( isset($register_globals) ){
session_unregister('username');
session_unregister('password');
session_unregister('user_id');
}else{
unset($_SESSION["username"]);
unset($_SESSION["password"]);
unset($_SESSION["user_id"]);
}
session_destroy();
return true;
}
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|