Autor | Zpráva | ||
---|---|---|---|
GamerX Profil |
#1 · Zasláno: 20. 2. 2014, 09:53:06
Ahoj na svém webu jsem si udělal takovej mini-chat a komentáře apd. a chci si tam udělat ochranu proti botům protože ani jsem ješte web nikde nepublikoval a už to je zaspamovaný zprávama od botů takže jsem si udělal do inputu jednu položku z příkladem kde se vygenrujou dvě čísla ktere se vždy sčítají v kolonce se objevý Vypočítej: 5 + 5 tak napíše vysledek a odešle ale mám problem i když to zpravně vypočítam tak mi to pořád hlasí že to je špatně vypočítané a nevím si rady...
Mám to takto $cislo1 = rand(1,9); $cislo2 = rand(5,9); $vysledek = $cislo1 + $cislo2; } elseif($_POST['kontrola'] == $vysledek) { |
||
Taps Profil |
#2 · Zasláno: 20. 2. 2014, 10:08:46
GamerX:
V uvedeném zápise chybu nevidím. Chyba bude zřejmě v jiné části kódu |
||
Micruss Profil |
#3 · Zasláno: 20. 2. 2014, 15:30:20
hodnota $vysledek, pokud se odešle formulář, tak se vygeneruje znova... takže je v tomto příkladě malá šance, že se uživatel do správnýho výsledku... máš řešení buď správný řešení uložíš do session, nebo cookies a pak někam aby jsi ho pak vytáhnul a nebo dal do input="hidden".. ale to už je méně bezpečný ;-)
|
||
GamerX Profil |
#4 · Zasláno: 20. 2. 2014, 19:06:07
Mohl by jsi mu udělat nějaky příklad jak to do sessions uložit?
|
||
jenikkozak Profil |
#5 · Zasláno: 20. 2. 2014, 19:38:19
Na stránce s formulářem:
<?php session_start(); $cislo1 = rand(1,9); $cislo2 = rand(5,9); $_SESSION["vysledek-formulare"] = $cislo1 + $cislo2; //výpis formuláře echo "<label for='kontrola'>Kolik je $cislo1 + $cislo2?</label><input type='text' name='kontrola' id='kontrola'>"; Kontrola formuláře: <?php session_start(); //Tato funkce se standardně musí volat na začátku každého skriptu, který má se session pracovat. if($_POST["kontrola"] == $_SESSION["vysledek-formulare"]){/*Úspěch*/} ?> |
||
Časová prodleva: 6 dní
|
|||
GamerX Profil |
#6 · Zasláno: 27. 2. 2014, 05:59:43
Takže měl jsem čas se na to podívat až teď, skusil jsem to podle rad od 'jenikkozak' ale stále nefunguje pořát vypisuje že jsem vypočítal špatně příklad.
|
||
Časová prodleva: 10 let
|
0