Autor Zpráva
david22
Profil *
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
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 *
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
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?

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:

0