Autor Zpráva
kesaj
Profil
Zdravím, mám vytvorený mailový formulár :

PHP :

<?php
$jmeno = $_POST['jmeno'];/*takto proměnné přidělíme to co bylo odesláno ve formuláři metodou POST s atributem name="jmeno"*/
$telefon = $_POST['telefon'];
$mail = $_POST['mail'];
$predmet = $_POST['predmet'];
$schodzka = isset($_POST['schodzka']) ? 'Zákazník má záujem o prezentačnú schôdzku.' : '';
$spam = $_POST['spam'];


$text = $_POST['text'];

$sprava ="Meno : $jmeno\r\n Telefon: $telefon\r\n Text: $text\r\n Schodzka: $schodzka\r\n";

$prijemce = "abra@abitec.sk";
/*vyplníte mail, na který se má formulář odesílat*/

$zahlavi = "From: " . $mail . "\r\n"
. "Content-Type: text/plain; charset=UTF-8; format=flowed\n"
    . "MIME-Version: 1.0\n"
    . "Content-Transfer-Encoding: 8bit\n"
    . "X-Mailer: PHP\n";
/*zobrazuje pak v mailu jako kdyby vám mail přišel přímo z tohoto mailu, můžete pak tedy rovnou odpovídat na mail, který uživatel uvedl*/

/*takto zajistíme, aby se mail neodeslal, pokud nejsou všechna pole vyplněna*/
if ( !empty($jmeno) and !empty($mail) and !empty($predmet) and !empty($text) and $spam=="2") {
mail($prijemce, $predmet, $sprava, $zahlavi);

echo "<script>alert('Ďakujeme. Vaša správa bola úspešne odoslaná. V krátkom čase Vás budeme kontaktovať.');</script>";

echo "<script type=\"text/javascript\">
setTimeout(\"self.location.replace('http://www.abitec.sk')\", 1*1000)
</script>";


/*toto se vypíše do dokumentu, pokud se mail odešle*/

} else {
echo "<script>alert('Prosíme Vás, aby ste vyplnili všetky údaje, prípadne správne zadali výsledok 1+1 a správu odoslali znova. Ďakujeme.');</script>"; /*toto se vypíše pokud nebudou vyplněna všechna pole, mail se neodešle*/
echo "<script type=\"text/javascript\">
setTimeout(\"self.location.replace('index.php?page=abra_objednavka')\", 1*100)
</script>";
}
?>


HTML :


<tr>
<td class="kontakt"><strong>Vypočítaj: 1 + 1 = ? </strong>  </td>

<td><input name="spam" size="3" type="text"/> (ochrana proti spamu)</td>
</tr>




Mám jednoduchú ochranu proti spamu, výpočet príkladu. Chcem to trošku zdokonaliť tým, že by sa po refreshe stránky sa zobrazil iný príklad, teda mal by som vytvorených 5 príkladov, ktoré by sa menili...ako to spraviť ?

Ďakujem.
YoSarin
Profil
1) vygeneruj si dvě náhodná čísla $a a $b (pomocí rand())
2) proveď s nimi požadovanou aritmetickou operaci (sčítání, odčítání, dělení, násobení, whatever) a výsledek ulož do session ($_SESSION['captcha']['code'] = $a + $b;)
3) uživateli zobraz odpovídající dotaz (echo $a . ' ' . $operator . ' ' . $b . ' = ';)
4) po odeslání formuláře zkontroluj jestli zaslaná hodnota odpovídá tomu co je uloženo v session ($_SESSION['captcha']['code'] == $spam;)
5) proti sofistikovaným robotům to moc nepomůže, protože může umět aritmetiku bez problémů :(
rad
Profil *
me funguje tohle - uplne jednoduse proste misto dat vlozim obrazek a ten pak overuji - zatim zadny spam ...

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