Autor | Zpráva | ||
---|---|---|---|
kesaj Profil |
#1 · Zasláno: 10. 3. 2011, 10:29:42 · Upravil/a: kesaj
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 |
#2 · Zasláno: 10. 3. 2011, 11:55:53 · Upravil/a: YoSarin
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 * |
#3 · Zasláno: 10. 3. 2011, 12:05:51
me funguje tohle - uplne jednoduse proste misto dat vlozim obrazek a ten pak overuji - zatim zadny spam ...
|
||
Časová prodleva: 13 let
|
0