ситуация следующая:
имею mail форму, хочу прикрепить однавреммено проверку captcha, но как это сделать не знаю!
У меня есть два скрипта:
1. форма php
<?
$mailto="
[email protected]";
if (empty($ok))
{
?>
<form action="<?echo $PHP_SELF;?>" method="post">
<table class="white">
<tr>
<td align="right">* Ваше имя:</td>
<td> <input type="text" name="username" size="30" maxlength="20"></td>
</tr>
<tr>
<td align="right">* Телефон:</td>
<td> <input type="text" name="tel" size="30" maxlength="20"></td>
</tr>
<tr>
<td align="right">E-mail адрес:</td>
<td><input type="text" name="mailfrom" size="30" maxlength="50"></td>
</tr>
<tr>
<td align="right">Дата мероприятия:</td>
<td><input type="text" name="date" size="30" maxlength="50"></td>
</tr>
<tr>
<td align="right">* Заявка <br>(в свободной форме):</td>
<td><textarea cols="50" rows="10" name="question"></textarea></td>
</tr>
</table>
<input type="submit" name="ok" value="отправить">
</form>
<?
}
else
{
if (empty($tel))
{
$error .= "Не заполнено поле: <b>Телефон</b><br>";
}
if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mailfrom))
{
$error = "Не верно заполнено поле: <b>E-mail</b><br>";
}
if (empty($question))
{
$error .= "Не заполнено поле: <b>Ваш вопрос</b><br>";
}
if ($error)
{
echo $error;
echo "<br><a href=\"javascript:history.go(-1)\" class=\"text\">Вернуться назад</a>";
echo " | <a href=\"javascript:window.close()\">Закрыть окно</a>";
exit;
}
$subject="Заказ от $mailfrom";
$body="Имя:
$username
Телефон:
$tel
E-mail:
$mailfrom
Дата мероприятия:
$date
Комментарии:
$question";
$body=convert_cyr_string (stripslashes($body),w,k);
$subject=convert_cyr_string (stripslashes($subject),w,k);
$sucess = mail($mailto, $subject, $body, "From: $email
X-Mailer: PHP/" . phpversion());
if ($sucess)
{
echo "Спасибо. Ваша заявка отправлена, мы свяжемся с вами в ближайшее время.<br><br>";
echo "<a href=\"javascript:history.go(-1)\" class=\"text\">Вернуться назад</a>";
echo " | <a href=\"javascript:window.close()\">Закрыть окно</a>";
}
}
?>
2. работающая captcha.php
<?
session_start ();
switch ($a) {
case 'image':
$im = @imagecreate (80, 20) or die ("Cannot initialize new GD image stream!");
$bg = imagecolorallocate ($im, 232, 238, 247);
$char = $_SESSION['code'];
//создаём шум на фоне
for ($i=0; $i<=128; $i++) {
$color = imagecolorallocate ($im, rand(0,255), rand(0,255), rand(0,255)); //задаём цвет
imagesetpixel($im, rand(2,80), rand(2,20), $color); //рисуем пиксель
}
//выводим символы кода
for ($i = 0; $i < strlen($char); $i++) {
$color = imagecolorallocate ($im, rand(0,255), rand(0,128), rand(0,255)); //задаём цвет
$x = 5 + $i * 20;
$y = rand(1, 6);
imagechar ($im, 5, $x, $y, $char[$i], $color);
}
/*/упрощённый вариант
$color = imagecolorallocate($img, 0, 0, 0);
imagestring($im, 3, 5, 3, $char, $color);*/
//антикеширование
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
//создание рисунка в зависимости от доступного формата
if (function_exists("imagepng")) {
header("Content-type: image/png");
imagepng($im);
} elseif (function_exists("imagegif")) {
header("Content-type: image/gif");
imagegif($im);
} elseif (function_exists("imagejpeg")) {
header("Content-type: image/jpeg");
imagejpeg($im);
} else {
die("No image support in this PHP server!");
}
imagedestroy ($im);
break;
case 'submit':
//проверка кода
if (empty($_GET['code']) or empty($_SESSION['code'])) {
echo 'Вы не указали код подтверждения';
} elseif ($_GET['code'] != $_SESSION['code']) {
echo 'Код подтверждения не совпадает';
} else {
echo 'Всё Ok!';
}
break;
default:
$_SESSION['code'] = substr(md5(uniqid("")),0,4);
echo '<form action="captcha.php" method="get">'.
'<input type="hidden" name="a" value="submit">'.
'<label for="code">Код подтверждения:</label>'.
'<input type="text" id="code" name="code" size="4" maxlength="4">'.
'<img align="absmiddle" src="captcha.php?a=image">'.
'<input type="submit" value="Go">'.
'</form>';
break;
}
?>
Как сделать так чтоб отправка формы работала с проверкой captcha?