Autor Zpráva
GamerX
Profil
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
GamerX:
V uvedeném zápise chybu nevidím. Chyba bude zřejmě v jiné části kódu
Micruss
Profil
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
Mohl by jsi mu udělat nějaky příklad jak to do sessions uložit?
jenikkozak
Profil
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*/}
?>
Se superglobální proměnnou $_SESSION se pak pracuje jako s jiným polem.
GamerX
Profil
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0