Autor | Zpráva | ||
---|---|---|---|
kockomel Profil * |
Zdravím,
potřeboval bych prosím poradit. Vytvářím antispamovou otázku pomocí jednoduchého příkladu (např. Kolik je 1+1 ? - uživatel zadá 2 ). Generuji dvě náhodné čísla, které poté sčítám a vypisuji do uvedené otázky. Uživatel zadá výsledek do formulářového inputu a pokud umí sčítat měla by být podmínka OK. Při načtení stránky se čísla vygenerují a příklad se zobrazí....můj problém je v tom, že když uživatel klikne na submit button Odeslat, tak dříve než se ověří podmínka znovu se provede kod a čísla se opět vygenerují, takže podmínka není nikdy splněna.....(tedy pouze v případě, že se náhodou vygeneruje stejný příklad, pak výsledek sedí). Potřeboval bych nějakým způsobem zajistit, aby se při kliku na Odeslat čísla znovu negenerovala. zde je můj kód: <?php @$spam = $_POST['spam']; $cislo1 = rand(1, 5); $cislo2 = rand(1, 5); $vysledek = $cislo1 + $cislo2; if ( isset($_POST['submit']) ) { if ($spam == $vysledek) { echo ("Spravne !!! "); }else { echo ("Spatne !!! "); } } echo ("Aktualni stav pred klikem na Odeslat: ".$cislo1." + ".$cislo2." = ".$vysledek); ?> <form action="pokus.php" method="post"> <p><?php echo ("Kolik je ".$cislo1." + ".$cislo2." ?");?><input type="text" name="spam"/></p> <input type="submit" name="submit" value="Odeslat" /> </form> Děkuji za každou radu Moderátor Chamurappi: Pojem „generace“ znamená pokolení, nikoliv výroba, opravuji titulek.
|
||
mckay Profil |
#2 · Zasláno: 16. 3. 2010, 16:15:51
kockomel:
Vytvoř si sadu výsledků, a potom jen zjišťuj, jestli odpovídá číslo jednomu z výsledků, nebo zpracuj formulář externím skriptem. Mimochodem, když kód obalíš do , lépe se to čte a lépe radí. |
||
Libe Profil * |
#3 · Zasláno: 16. 3. 2010, 16:19:31
Předgeneruj si to do
<input type="hidden" name="nahodne1" value="<?php echo rand(0, 99); ?>"> a pak dále pracuj s proměnnýma $nahodne1, $nahodne2. |
||
kockomel Profil * |
#4 · Zasláno: 16. 3. 2010, 18:43:04
Libe:
Díky za radu, kontrola už funguje.....jak ale udělat to, aby se hodnota atributu value v hidenn inputu generovala hned po spuštění skriptu (ne až po kliku na input submit). Jde to vůbec ? V této fázi je to pro mě zatím nepoužitelné :/ Díky za každý nápad. |
||
Libe Profil * |
#5 · Zasláno: 16. 3. 2010, 19:48:30
Myslíš tohle?
<?php $cislo1 = rand(1, 5); $cislo2 = rand(1, 5); $vysledek = $cislo1 + $cislo2; if (isset($_POST['submit'])) { if ($_POST['spam'] == $_POST['soucet']) { echo 'Spravne !!!'; } else { echo 'Spatne !!!'; } } echo 'Aktualni stav pred klikem na Odeslat: '.$cislo1.' + '.$cislo2.' = '.$vysledek; ?> <form action="pokus.php" method="post"> <?php echo 'Kolik je '.$cislo1.' + '.$cislo2.'?'; ?> <input type="text" name="spam" /> <input type="hidden" name="soucet" value="<?php echo $vysledek; ?>" /> <input type="submit" name="submit" value="Odeslat" /> </form> |
||
Sirius Profil |
#6 · Zasláno: 16. 3. 2010, 20:01:18 · Upravil/a: Sirius
<?php if (isset($_POST['submit'])) { // Zpracování odeslaných dat if ($_POST['spam'] == $_POST['vysledek']) { echo "Spravne !"; } else { echo "Spatne !"; } } else { // Generování čísel a formuláře $cislo1 = rand(1, 5); $cislo2 = rand(1, 5); $vysledek = $cislo1 + $cislo2; ?> <form action="pokus.php" method="post"> <p> <?php echo ("Kolik je ".$cislo1." + ".$cislo2." ?");?><input type="text" name="spam"/> </p> <input type="hidden" name="vysledek" value="<?php echo $vysledek; ?>"> <input type="submit" name="submit" value="Odeslat" /> </form> <?php } ?> |
||
kockomel Profil * |
#7 · Zasláno: 16. 3. 2010, 20:20:41
Libe:
To je přesně ono ! Nějak mi to nešlo vypotit. Díky moc za pomoc :) |
||
Časová prodleva: 14 let
|
0