| 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: 17 let
|
|||
0