Autor | Zpráva | ||
---|---|---|---|
david22 Profil * |
#1 · Zasláno: 30. 5. 2014, 00:50:16
Ahoj, potřeboval bych vysvětlit co je zde špatně už fakt nevím..V jakém pořadí to běží..
if(strtolower($_POST['jmeno']) == "mojejmeno") { echo '<script> var pristup = "ne"; var pass = prompt("heslo:",""); var heslo = "mojeheslo"; if(pass == heslo) { pristup = "ok"; } </script>'; } else { $uzivatel = true; } if("<script>document.write(pristup);</script>" == "ok") { echo "provede skript dale.."; echo "<script>document.write(pristup);</script>"; } else { echo "neprovede"; echo "<script>document.write(pristup);</script>"; } výstup: "ok", ale dojde to do else bloku! zkoušel jsem to i házet do php proměnné a přetypovávat, ale nic.. nejhorší je natom, že když je hodnota "ok" tak i se to dostane do bloku else a vypíše to tam tam i hodnotu "ok", ale jak je to možné když ta hodnota odpovídá proč to skočí do else bloku? Hraje tam roli, že se vykoná něco dříve nebo nák tak..? |
||
Alphard Profil |
#2 · Zasláno: 30. 5. 2014, 01:02:26
Už jste zřejmě zpozoroval, že to nefunguje tak, jak by se „dalo“ očekávat. PHP script se vždy provede jako první na serveru. První PHP podmínka se vyhodnotí v závislosti na formulářové hodnotě. Druhá PHP podmínka vždy skočí do else větve, protože ty 2 řatězce se nebudu nikdy rovnat.
Výstup kódu si můžet prohlédnout, když si v prohlížeči zobrazíte zdrojový html kód. V něm už je jen javascript a ten se provede až v prohlížeči uživatele. |
||
david22 Profil * |
#3 · Zasláno: 30. 5. 2014, 01:10:36
Děkuji za odpověd. Takže když je to tak - takže využít Ajax? Nebo je tu ještě nějaké další řešení? Cíl skriptu je po zadání určitého jména vyzvat uživatele k zadání hesla pomocí JS (prompt) a podle vyhodnocení vykonat zápis do DB.
|
||
Alphard Profil |
#4 · Zasláno: 30. 5. 2014, 01:21:26
Není to zbytečné? Tohle navíc vypadá jako akce, která by mělá být funkční i bez js.
Nestačilo by třeba skrýt pole pro heslo, při vyplnění (čehokoliv) jako jména zobrazit druhé pole a na serveru si to potom ověřit? |
||
Časová prodleva: 10 let
|
0