Autor Zpráva
gardener
Profil
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
Vyřešeno, problém by, že jsem měl výstup před session_start().
AM_
Profil
proč tam máš proboha javascriptové přesměrování? nebylo by lepší to řešit přes header("location: url"); ?
gardener
Profil
Ale header může být použit jenom před výstupem ne?
fuckin
Profil *
a cemu to vadi? To je tak tezke dat vystup zato? Nebo to bufferuj...
kajaman
Profil
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
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
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í.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: