Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 8. 6. 2009, 13:25:36
Zdravím,
mám jeden problém, tuším, že se bude týkat session ale nevím kde by mohla být chyba, jde o to, že mám skript pro ověření uživatele, podle dat uložených v DB. Pokud se na localhostu přihlásím jako admin je mi nastavena session prihlasen a is_admin na hodnotu 1 a jsem presmerovan na obsah webu, kde hned na zacatku skiptu jestli je SESSION nastavena na pozadovanou hodnotu a pokud ne, tak ukoncim beh. Problem je ten, ze na LH probehne vse o.k ale na serveru sice dojde k presmerovani ale pri overovani hodnoty session, se podminka nesplni, tzn, beh skriptu se ukonci. Zjistil jsem ale, ze pokud se vratim zpet na form a zadam udaje znovu, tak se overeni provede. Netuší někdo prosím, kde by mohla být chyba? Díky za každou radu <?php //FUNKCE PRO OVERENI ZDA JE UZIVATEL ADMIN, CI NENI, PODLE TOHO ZDA MA V TABULCE UVEDENO 0 CI 1 //POKUD SE VSE OSTATNI SHODUJE, T. PRIJMENI A MAIL, TAK PRESMERUJEME BUD NA ADMIN.PHP NEBO NA VYPIS.PHP function overeni($log, $password) { $_SESSION['prihlasen'] = 0; $_SESSION['is_admin'] = 0; $q = mysql_query("SELECT je_admin FROM uzivatele WHERE log='$log' AND heslo='$password'"); if (mysql_num_rows($q) > 0) { list($jeadmin) = mysql_fetch_row($q); if ($jeadmin) { $_SESSION['prihlasen'] = 1; $_SESSION['is_admin'] = 1; } else { $_SESSION['prihlasen'] = 1; $_SESSION['is_admin'] = 0; } } else { $_SESSION['prihlasen'] = 0; $_SESSION['is_admin'] = 0; } } ?> Tady přesměruji overeni($log, $password); if(($_SESSION['prihlasen'] == 1) && ($_SESSION['is_admin'] == 1)) { echo "<script>location.href=\"$prihlasen_admin\";</script>"; } A tady se to pokazí <?php session_start(); if(($_SESSION['prihlasen'] != 1) && ($_SESSION['is_admin'] != 1)) { die ("Neplatné přihlášení, vraťte se prosím tlačítkem zpět a zadejte údaje znovu"); } ?> |
||
gardener Profil |
#2 · Zasláno: 8. 6. 2009, 14:06:25
Vyřešeno, problém by, že jsem měl výstup před session_start().
|
||
AM_ Profil |
#3 · Zasláno: 8. 6. 2009, 14:23:33
proč tam máš proboha javascriptové přesměrování? nebylo by lepší to řešit přes header("location: url"); ?
|
||
gardener Profil |
#4 · Zasláno: 8. 6. 2009, 14:35:17
Ale header může být použit jenom před výstupem ne?
|
||
fuckin Profil * |
#5 · Zasláno: 8. 6. 2009, 14:44:53
a cemu to vadi? To je tak tezke dat vystup zato? Nebo to bufferuj...
|
||
kajaman Profil |
#6 · Zasláno: 8. 6. 2009, 14:45:57
a co ti brání udělat něco takového:
1, session_start(); 2. if(over_id()) {nastav_si_session_promenne} else {header("location:www.domain.cz/prihlaseni?vysledek=spatne_credentials");} 3. <html>...........</html> |
||
gardener Profil |
#7 · Zasláno: 8. 6. 2009, 15:04:22
Nic, jen mi přišlo, že by to mohlo být matoucí..ale asi máte pravdu, bylo by vhodnější to přsměrovat pomocí header.
|
||
AM_ Profil |
#8 · Zasláno: 8. 6. 2009, 15:39:57
gardener
rozhodně, jediný zmatený bude uživatel, který bude mít javascript vypnutý :) pokud tam bude mít header, ani přesměrování krom změny URL nepocítí. |
||
Časová prodleva: 15 let
|
0