Kontaktní formulář s CAPTCHA v PHP
Rádi byste si dali na své webové stránky kontaktní formulář a ideálně ještě s ochranou proti spamu CAPTCHA, ale nevíte jak na to? Rozhodl jsem se jeden takový pro Vás připravit. A když už CAPTCHA, tak proč ne přímo taková, jakou má Google?
Kontaktní formulář má 4 políčka – Jméno, E-mail, Text a kontrolu proti spamu. Nijak jsem jej nestyloval, protože vzhled si asi každý upraví následně podle svého gusta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <?php session_start(); if (!empty($_REQUEST['captcha'])) { if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha']) { $oznameni= 'Opište prosím správně text z obrázku'; } else { if($_SERVER["REQUEST_METHOD"] == "POST") { // promenne $jmeno = $_POST["jmeno"]; $email = $_POST["email"]; $txt = $_POST["txt"]; $moje_adresa = "info@pcdays.cz"; // zmente na svoji adresu $predmet = "Nastavte_svuj_predmet"; // zde nastavite co bude uvedeno v predmetu $zprava = ("Jméno: " . $jmeno . "\n\n" . "Text: \n" . $txt . "\n\nOdesílatel: " . $email); // odeslani emailu mail($moje_adresa,$predmet,$zprava); $oznameni= 'Zpráva byla odeslána'; } } unset($_SESSION['captcha']); } ?> <!DOCTYPE HTML> <html> <head> <title>Formulář</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <div style="margin:20px "> <form method="post"> <fieldset> <legend>Kontaktní formulář</legend> <table> <tr><td colspan="2"><div style="width:300px;background:#ff99ff; margin-bottom:20px"><?php echo $oznameni; ?></div></td> <tr><td>Jméno:</td><td><input type="text" name="jmeno" /></td></tr> <tr><td>E-mail:</td><td><input type="email" name="email" /></td></tr> <tr><td>Zpráva:</td><td><textarea name="txt" cols="50" rows="5"></textarea></td></tr> <tr><td colspan="2"><b>Pro zabránění spamu opište prosím text z následujícího obrázku:</b></td></tr> <tr><td><input type="text" name="captcha" id="captcha-form" /></td><td><img src="captcha.php" id="captcha" /></td></tr> <tr><td colspan="2"><a href="#" onclick="document.getElementById('captcha').src='captcha.php?'+Math.random(); document.getElementById('captcha-form').focus();"id="change-image">Je obrázek nečitelný? Zkuste jiný!</a></td></tr> </table> <input type="submit" value="Odeslat"/> </fieldset> </form> </div> </body> </html> |
<?php session_start(); if (!empty($_REQUEST['captcha'])) { if (empty($_SESSION['captcha']) || trim(strtolower($_REQUEST['captcha'])) != $_SESSION['captcha']) { $oznameni= 'Opište prosím správně text z obrázku'; } else { if($_SERVER["REQUEST_METHOD"] == "POST") { // promenne $jmeno = $_POST["jmeno"]; $email = $_POST["email"]; $txt = $_POST["txt"]; $moje_adresa = "info@pcdays.cz"; // zmente na svoji adresu $predmet = "Nastavte_svuj_predmet"; // zde nastavite co bude uvedeno v predmetu $zprava = ("Jméno: " . $jmeno . "\n\n" . "Text: \n" . $txt . "\n\nOdesílatel: " . $email); // odeslani emailu mail($moje_adresa,$predmet,$zprava); $oznameni= 'Zpráva byla odeslána'; } } unset($_SESSION['captcha']); } ?> <!DOCTYPE HTML> <html> <head> <title>Formulář</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <div style="margin:20px "> <form method="post"> <fieldset> <legend>Kontaktní formulář</legend> <table> <tr><td colspan="2"><div style="width:300px;background:#ff99ff; margin-bottom:20px"><?php echo $oznameni; ?></div></td> <tr><td>Jméno:</td><td><input type="text" name="jmeno" /></td></tr> <tr><td>E-mail:</td><td><input type="email" name="email" /></td></tr> <tr><td>Zpráva:</td><td><textarea name="txt" cols="50" rows="5"></textarea></td></tr> <tr><td colspan="2"><b>Pro zabránění spamu opište prosím text z následujícího obrázku:</b></td></tr> <tr><td><input type="text" name="captcha" id="captcha-form" /></td><td><img src="captcha.php" id="captcha" /></td></tr> <tr><td colspan="2"><a href="#" onclick="document.getElementById('captcha').src='captcha.php?'+Math.random(); document.getElementById('captcha-form').focus();"id="change-image">Je obrázek nečitelný? Zkuste jiný!</a></td></tr> </table> <input type="submit" value="Odeslat"/> </fieldset> </form> </div> </body> </html>
Toto samotné vám ale vlastně k ničemu nebude. K plné funkčnosti totiž budete potřebovat také soubory, které se budou využívat k vytváření CAPTCHA.
Stáhněte si tedy proto raději celou složku s tímto kontaktním formulářem.
Po stažení si budete muset v souboru index.php upravit na lince 17. vaši emailovou adresu a pak na 18. lince předmět zprávy, která vám bude na email zasílána.
Formulář vypadá takto:
Kód na ověření proti spamu byl použit z: http://code.google.com/p/cool-php-captcha/