Гость
Покинул форум
Сообщений всего: 94
Дата рег-ции: Март 2011
Помог: 1 раз(а)
Доброго всем дня, установил капчу на форму обратной связи у себя на сайте,
http://w3box[dot]ru/captcha/ . Хочется сделать Ajax проверку введенного пользователем кода, без перезагрузки страницы,но в JS абсолютно не волоку. Из всех представленных в интернете не приглянулось ни чего.
Файл captcha.php:
Спойлер (Отобразить )
PHP:
скопировать код в буфер обмена
<?PHP
/*
w3captcha - php-скрипт для генерации изображений CAPTCHA
версия: 1.1 от 08.02.2008
разработчики: http://w3box.ru
тип лицензии: freeware
w3box.ru © 2008
*/
$count = 5 ; /* количество символов */
$width = 100 ; /* ширина картинки */
$height = 48 ; /* высота картинки */
$font_size_min = 32 ; /* минимальная высота символа */
$font_size_max = 32 ; /* максимальная высота символа */
$font_file = "./fonts/Comic_Sans_MS.ttf" ; /* путь к файлу относительно w3captcha.php */
$char_angle_min =- 10 ; /* максимальный наклон символа влево */
$char_angle_max = 10 ; /* максимальный наклон символа вправо */
$char_angle_shadow = 5 ; /* размер тени */
$char_align = 40 ; /* выравнивание символа по-вертикали */
$start = 5 ; /* позиция первого символа по-горизонтали */
$interval = 16 ; /* интервал между началами символов */
$chars = "0123456789" ; /* набор символов */
$noise = 10 ; /* уровень шума */
$str = "" ;
for ( $i = 0 ; $i < $count ; $i ++ )
{
$char = $chars [ rand ( 0
, $num_chars - 1
) ] ; $font_size = rand ( $font_size_min , $font_size_max ) ; $char_angle = rand ( $char_angle_min , $char_angle_max ) ; imagettftext ( $image , $font_size , $char_angle , $start , $char_align , $font_color , $font_file , $char ) ; imagettftext ( $image , $font_size , $char_angle + $char_angle_shadow * ( rand ( 0
, 1
) * 2
- 1
) , $start , $char_align , $background_color , $font_file , $char ) ; $start += $interval ;
$str .= $char ;
}
if ( $noise )
{
for ( $i = 0 ; $i < $width ; $i ++ )
{
for ( $j = 0 ; $j < $height ; $j ++ )
{
$r = ( $rgb >> 16) & 0xFF ;
$g = ( $rgb >> 8) & 0xFF ;
$b = $rgb & 0xFF ;
$k = rand ( - $noise , $noise ) ; $rn = $r + 255* $k / 100 ;
$gn = $g + 255* $k / 100 ;
$bn = $b + 255* $k / 100 ;
if ( $rn < 0) $rn = 0 ;
if ( $gn < 0) $gn = 0 ;
if ( $bn < 0) $bn = 0 ;
if ( $rn > 255) $rn = 255 ;
if ( $gn > 255) $gn = 255 ;
if ( $bn > 255) $bn = 255 ;
}
}
}
$_SESSION [ "captcha" ] = $str ;
{
header ( "Content-type: image/png" ) ; }
{
header ( "Content-type: image/gif" ) ; }
{
header ( "Content-type: image/jpeg" ) ; }
?>
Файл contact.php:
Спойлер (Отобразить )
PHP:
скопировать код в буфер обмена
<?
if ( isset ( $_SESSION [ "captcha" ] ) && $_SESSION [ "captcha" ] === $_POST [ "captcha" ] ) {
If ( ! empty ( $_POST [ 'name' ] ) && ! empty ( $_POST [ 'address' ] ) && ! empty ( $_POST [ 'message' ] ) ) {
$name = $_POST [ 'name' ] ;
$address = $_POST [ 'address' ] ;
$message = $_POST [ 'message' ] ;
If ( Filter_Var ( $address , FILTER_VALIDATE_EMAIL
) ) { $servname = $_SERVER [ 'SERVER_NAME' ] ;
$to = 'xxx@xx.xx' ;
$subject = 'Комментарий с сайта ' . $servname . ' от ' . $name ;
$from = 'From: ' . $address . "\r \n " ;
$letter =
"Имя: $name
E-mail: $address
Сообщение: $message
Дата: $date " ;
If ( mail ( $to , $subject , $letter , $from ) ) {
?>
<p>Ваше сообщение принято к отправке. Спасибо за проявленный интерес.</p>
<p>Вы будете перемещены на <a href="http://netboot.tk">Главную страницу</a> через 5 сек.</p>
<script type="text/javascript">
setTimeout("location.href='http://netboot.tk'",5000)
</script>
<?
}
else
{
?>
<p>Ошибка: Сообщение не может быть отправлено! Возможно проблемы на хостинге, попробуйте позже.</p>
<p>Вы будете перемещены назад через 5 секунд.</p>
<script type="text/javascript">
setTimeout("history.back()",5000)
</script>
<?
}
}
Else
{
?>
<p>Вы ввели неверный E-mail адрес!</p>
<p>Вы будете перемещены назад через 5 секунд.</p>
<script type="text/javascript">
setTimeout("history.back()",5000)
</script>
<?
}
}
Else
{
?>
<p>Вы не заполнили нужные поля!</p>
<p>Вы будете перемещены назад через 5 секунд.</p>
<script type="text/javascript">
setTimeout("history.back()",5000)
</script>
<?
}
}
Else
{
?>
<p>Обновите Captcha-код и введите заново.</p>
<p>Вы будете перемещены назад через 5 секунд.</p>
<script type="text/javascript">
setTimeout("history.back()",5000)
</script>
<?
}
unset ( $_SESSION [ "captcha" ] ) ;
?>
Сама форма:
Спойлер (Отобразить )
CODE (
html ):
скопировать код в буфер обмена
<form method = "post" action = "contact.php" >
<p >
Ваше имя*:
</ p >
<p >
<input type = "text" name = "name" size = "26" value = "" / >
</ p >
<p >
Ваш E-mail*:
</ p >
<p >
<input type = "text" name = "address" size = "26" value = "" / >
</ p >
<p >
Ваше сообщение*:
</ p >
<p >
<textarea name = "message" cols = "100" rows = "12" ></ textarea >
</ p >
<p >
<img src = "/captcha.php" alt = "Captcha" id = "captcha" / >
</ p >
<p >
<a href = "javascript: image_reload();" > Обновить код</ a >
</ p >
<p >
Введите код с изображения*:
</ p >
<p >
<input name = "captcha" type = "text" size = "26" / >
</ p >
<p >
* - Поле обязательно для заполнения.
</ p >
<p >
<input type = "submit" value = "Отправить" / >
</ p >
</ form >
-----Ubuntu Server 12.04.2 LTS, Apache2, PHP5, MySQL5