Autor | Zpráva | ||
---|---|---|---|
mindrak Profil * |
#1 · Zasláno: 6. 12. 2009, 01:30:50
Mám problém s tímto kusem kódu:
if($drax->passwdcheck($_POST['username'],$_POST['password']) == $_POST['username']) { echo "<script>window.alert('".$drax->passwdcheck($_POST['username'],$_POST['password'])."--".$_POST['username']."')</script>"; } Pokud je username třeba dada a heslo ada, tak na mě vyskočí okno "0--dada", což znamená, že funkce passwdcheck vrací nulu, username je dada, ale přesto je podmínka splněna, proč??? |
||
Majkl578 Profil |
#2 · Zasláno: 6. 12. 2009, 01:41:10 · Upravil/a: Majkl578
----
|
||
Leo Profil |
#3 · Zasláno: 6. 12. 2009, 10:51:31
"že funkce passwdcheck vrací nulu, username je dada"
Protože v PHP třeba platí "ahoj" == 0 (string vs. intereger) ale už ne "5" == 0 ani "ahoj" === 0 (operátor identity místo ==) Leo |
||
mindrak Profil * |
#4 · Zasláno: 6. 12. 2009, 12:08:44
V passwdcheck je jen zatím "return 0".
Leo: Nějak to nechápu. Já myslel, že php automaticky převádí při porovnání dva rozdílné datové typy na jeden. Při použití === by se porovnávaly dva stejné datové typy, což by asi fungovalo, nicméně nechápu proč nefunguje tohle. Nemělo by to fungovat tak, že se všechno převede na string? |
||
Leo Profil |
#5 · Zasláno: 6. 12. 2009, 12:30:28
Ne, převede se to na číslo - z "ahoj" se stane 0 a ta je rovna 0, Leo
|
||
Alphard Profil |
#6 · Zasláno: 6. 12. 2009, 13:04:42
mindrak:
„Nemělo by to fungovat tak, že se všechno převede na string?“ To by v manuálu nebyla tabulka všech možných kombinací a jak se to převede :-) |
||
ninja Profil |
#7 · Zasláno: 6. 12. 2009, 14:01:03
mindrak: nebylo by lepší, aby metoda passwdcheck vracela při neúspěchu false? Případně při vůbec nenalezení uživatele null?
|
||
AM_ Profil |
#8 · Zasláno: 6. 12. 2009, 14:50:51
ninja:
spíš hlavně při úspěchu by měla vracet true, a ne username. Vůbec nějak logicky nechápu, proč passwdcheck, což bych volně přeložil jako "má tento uživatel toto heslo?" odpoví "tento uživatel". |
||
Časová prodleva: 14 let
|
0