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/




