Autor Zpráva
Kajda
Profil *
Ahoj, lidi,

problém s ověřením (našel jsem si skript na Linuxsoftu a trochu poupravil),
když zadám nesprávné heslo, chtěl bych, aby bylo možno zkusit ještě jednou,
ale ono mi to napíše, že přístup jen na jméno a heslo.
Už se mi nepodaří udělat unset PHP_AUTH_USER a PHP_AUTH_PW a znovu
vyvolat Header Authenticate...

Poradí někdo?

K.



<?
if($_GET["znovu"]) {
unset($_SERVER["PHP_AUTH_USER"]);
unset($_SERVER["PHP_AUTH_PW"]);
}

if (!IsSet($_SERVER["PHP_AUTH_USER"]))
{
Header("WWW-Authenticate: Basic realm="Hesla"");
Header("HTTP/1.0 401 Unauthorized");
echo "Přístup pouze na uživatelské jméno a heslo.";
exit;
}
else
{
if ($_SERVER["PHP_AUTH_USER"]!="Honza") {
echo "Neplatné přihlašovací jméno!";
echo "<a href="index.php?znovu=1">znovu</a>"; exit;}
if ($_SERVER["PHP_AUTH_PW"]!="jezevec")
{ echo "Neplatné heslo!";
echo "<a href="index.php?znovu=1">znovu</a>";exit;}
}

echo "tajný obsah";
?>
Kajda
Profil *
nikdo neví ?!
:(
nebo jsem to blbě popsal?
:((
tiso
Profil
Kajda sú veci ktoré som neskúšal lebo som ich nepotreboval - ako napríklad tkáto autorizácia a kvôli tomu aby som poradil to skúšať nebudem... Neviem ako ostatný...
cmman
Profil
Já jsem HTTP autentizaci zkoušel a nerozchodil jsem to, přešel jsem na autorizaci na základě SESSIONS a je to lepší, i když s tím stále bojuji :)
Kajda
Profil *
Prosím Vás, nepište mi, že nevíte (a nehodláte se tím zabývat). Pokud nebude žádná odpověď, pochopím, že nikdo neví (a nehodlá se tím zabývat).
:)
tiso
Profil
Kajda tak ty nepíš:
nikdo neví ?!
:(
nebo jsem to blbě popsal?
:((
Kajda
Profil *
cmman:
Jo, se sessions bych to taky věděl. Zkoušel jsem tohle, abych to "dělal správně" ... :D
No, ještě pokoumám, a pokud to rozchodím, napíšu sem, kde je zakopanej pes.
Dík, K.
Kajda
Profil *
tiso:
Já fakt nikoho nikdy nehoním, obvzláště ne an konfeře, kde doufám, že mi někdo z dobré vůle poradí! Spíš jsem se jen zeptal, jestli snad můj popis není "nejasný".
Nechme toho, OK? Nic ve zlým.
Venku je jaro!
K.
k
Profil *
takze jestli to dobre chapu tak to co ty potrebujes je aby kdyz ti to vypise ze je spatne heslo tak aby si klikl na "znovu" a pak se ti znovu zobrazilo prihlaseni? Chapu to dobre?
Kajda
Profil *
k:
ano, přesně tak. Ale když třeba zadám správně jméno "Honza" a špatně heslo,
tak se skutečně zobrazí odkaz "znovu", ale okno na přihlášení se objeví s vyplněným jménem "Honza"!, a už se nepodaří zadat správné heslo :(, dvakrát se pokusím a pak se to na mě vykašle a znemožní autentifikaci.
K.
ic
Profil *
Myslím že problém je v tom, že

if($_GET["znovu"]) {
unset($_SERVER["PHP_AUTH_USER"]);
unset($_SERVER["PHP_AUTH_PW"]);
}

Tahle funkce podle me nevyprázdní obsah těch proměnných.
Taky jsem měl autorizaci přes session, nicméně tahle je taková na pohled hezčí... přihlášení funguje perfektně, jenže pořád mi nejde uživatele odhlásit.
Nejvíc mě na tom ale vadí, že to nějak jde, jen nevím jak.
Znám pár stránek, kde mají přihlášení přes WWW-Authenticate a pak se může uživatel klidně odhlásit a přihlásit se někdo jinej, jenže neřeknou jak na to XD.
Tak co neblejskne se někdo?
klucon
Profil *
Máš tam blbě uvozovky!!! na to si dávej bacha... jsem ten script vyzkoušel upravil uvozovky a normálně mi naběhl tajný obsah.... Potom jsem tam našel chybu v odkazech [pokud zadáš nesprávné jméno, heslo(jsem to měl uložené jako login.php a ty jsi tam měl odkaz na index.php)] tady ti přikládám kód.
kód:

<?
if($_GET["znovu"]) {
unset($_SERVER["PHP_AUTH_USER"]);
unset($_SERVER["PHP_AUTH_PW"]);
}

if (!IsSet($_SERVER["PHP_AUTH_USER"]))
{
Header("WWW-Authenticate: Basic realm='Hesla'");
Header("HTTP/1.0 401 Unauthorized");
echo "Přístup pouze na uživatelské jméno a heslo.";
exit;
}
else
{
if ($_SERVER["PHP_AUTH_USER"]!='Honza') {
echo "Neplatné přihlašovací jméno!";
echo "<a href='?znovu=1'>znovu</a>"; exit;}
if ($_SERVER["PHP_AUTH_PW"]!="jezevec")
{ echo "Neplatné heslo!";
echo "<a href='?znovu=1'>znovu</a>";exit;}
}

echo "tajný obsah";
?>


funguje pouze v opeře 9.10 a v mozile firefox 2.0 v IE 6 jsem nezkoušel a v IE 7 to nešlo, to nwm proč

S pozdravem klucon
Toto téma je uzamčeno. Odpověď nelze zaslat.