Autor Zpráva
lowaczek
Profil
Dobrý den, mám takový dotaz. Chtěl bych udělat asi tohle:
Na stránce jsou vygenerovány dvě čísla mezi nimi je + a za tim = a pak input pole .. u me t vypadá asi takhle:
<p><u>Od 0 do 100</u>
<form method="post" action="scitani.php" target="_blank">
<?php
$scitani1 = rand(0,100);
$scitani2 = rand(0,100);
echo $scitani1."+".$scitani2;
?>
&nbsp;<input type="text" name="soucet1"/>
<p><input type="submit" name="odeslano" value="Kontrola">
</form>

pak mám php soubor scitani.php a já potřebuju nastavit podmínku asi takovoudle: pokud
$scitani1+$scitani2==$soucet1 {echo "Správný výsledek"} 

asi něco takového jenže jsem pochopil že to jaksi nepujde protože ty dvě proměnné $scitani1 a $scitani2 jsou v tom původním souboru. A vás se tedy ptám jestli nevíte jak to udělat díky moc za odpověď.
xmark
Profil
To záleží na tom, jakou neprůstřelné to má být. Úplně nejjednodušší by bylo ten součet dát v tom formu do hidden pole. Poněkud beypečnější varianta by byla, že bys to pro účely toho přenosu zašifroval.
lowaczek
Profil
xmark:
Nikdyj sem to nepoužíval prosím mohl by si uvést příklad abych to měl před sebou? lépe se to pak chápe. Díky moc.
mattyZEM
Profil
lowaczek:
Formulář:
<?php
$s1=rand(0,100);
$s2=rand(0,100);
?>
Napište součet čísel <?php echo $s1." a ".$s2; ?> <input type="text" name="soucet">
<input type="hidden" value="<?php echo md5($s1+$s2); ?>" name="soucet_hidden">

Zpracování:
<?php
if(md5($_POST['soucet'])==$_POST['soucet_hidden'])echo 'Správný výsledek.';
?>
xmark
Profil
lowaczek:
<input type="hidden" name="soucet" value="<?php echo ($scitani1+$scitani2); ?>">


A tam, kde načítáš data z formuláře, načteš o navíc toto. A porovnáš.
marcus33cz
Profil
Pokud chceš, aby ten součet nebyl nikde uvedený, máš poměrně dost možností. Jako první mě napadlo ho hashovat - neříkám, že je to to nejlepší, účel to ale snad splní.

<p><u>Od 0 do 100</u>
<form method="post" action="scitani.php" target="_blank">
<?php
$scitani1 = rand(0,100);
$scitani2 = rand(0,100);
echo $scitani1."+".$scitani2;
$hashovanySoucet=$scitani1+$scitani2;
$hashovanySoucet=sha1($hashovanySoucet);
?>
&nbsp;<input type="text" name="soucet1"/>
<input type="hidden" name="hashovanySoucet" value="<?php echo $hashovanySoucet?>">
<p><input type="submit" name="odeslano" value="Kontrola">
</form>


V souboru scitani.php pak můžeš mít:
$soucet1 = sha1( $_POST['soucet1'] );
if ( $soucet1 == $_POST['hashovanySoucet'){
    echo "Správný výsledek"} 


Toto je takový základ, vyššího stupně zabezpečení můžeš dosáhnout "solením" (tzv. salting). A samozřejmě bys měl ošetřit údaje zadávané uživatelem (v $_POST poli), aby nebyla stránka zranitelné.
lowaczek
Profil
Ok díky moc..

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