Создание капчи на PHP

Создание капчи на PHP

02012-06-2343004Денис Абдуллин
CAPTCHA – это изображение, содержащее код, средство защиты от спам-ботов. Эту вещь полезно ставить для незарегистрированных/неавторизованных пользователей в формах для добавления комментариев, обратной связи и регистрации, в конце концов. Урок создание капчи на PHP поможет сделать простую капчу на сайте с помощью PHP.

1. Создаем файл Captcha.php

Code
<?php
session_start();
$ranStr = md5(microtime());
$ranStr = substr($ranStr, 0, 6);
$_SESSION['cap_code'] = $ranStr;
$newImage = imagecreatefromjpeg("cap_bg.jpg");
$txtColor = imagecolorallocate($newImage, 0, 0, 0);
imagestring($newImage, 5, 5, 5, $ranStr, $txtColor);
header("Content-type: image/jpeg");
imagejpeg($newImage);
?>

Проверка CAPTCHA кода. Правильный введенный код или нет.
$_SESSION['cap_code'] -это с фактически код защиты
$_POST['captcha'] - код который вел пользователь
Код проверки выглядит вот так:  
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if ($_POST['captcha'] == $_SESSION['cap_code'])  
{
// Captcha verification is Correct. Do something here!
}
else  
{
// Captcha verification is wrong. Take other action
}
}
?>


2. Страницу index.php

Code
<?php
session_start();
$cap = 'notEq'; // This php variable is passed to jquery variable to show alert
if ($_SERVER['REQUEST_METHOD'] == 'POST')  
{
if ($_POST['captcha'] == $_SESSION['cap_code'])  
{
// Captcha verification is Correct. Do something here!
$cap = 'Eq';
}  
else  
{
// Captcha verification is wrong. Take other action
$cap = '';
}
}
?>
<html>
<body>
<form action="" method="post">
<label>Name:</label><br/>
<input type="text" name="name" id="name"/>
<label>Message:</label><br/>
<textarea name="msg" id="msg"></textarea>
<label>Enter the contents of image</label>
<input type="text" name="captcha" id="captcha" />
<img src='captcha.php' />
<input type="submit" value="Submit" id="submit"/>
</form>
<div class="cap_status"></div>
</body>
</html>


3. Код JavaScript

Code
<script type="text/javascript" src="http://ajax.googleapis.com/
ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$('#submit').click(function()
{
var name = $('#name').val();
var msg = $('#msg').val();
var captcha = $('#captcha').val();
if( name.length == 0)
{
$('#name').addClass('error');
}
else
{
$('#name').removeClass('error');
}
if( msg.length == 0)
{
$('#msg').addClass('error');
}
else
{
$('#msg').removeClass('error');
}
if( captcha.length == 0)
{
$('#captcha').addClass('error');
}
else
{
$('#captcha').removeClass('error');
}
if(name.length != 0 && msg.length != 0 && captcha.length != 0)
{
return true;
}
return false;
});
var capch = '<?php echo $cap; ?>';
if(capch != 'notEq')
{
if(capch == 'Eq')
{
$('.cap_status').html("Успешно отправлено ").fadeIn('slow').delay(3000).fadeOut('slow');
}
else
{
$('.cap_status').html("Введенный код неправильный").addClass('cap_status_error').fadeIn('slow');
}
}
});
</script>


4. Код CSS

Code
body{
width: 600px;
margin: 0 auto;
padding: 0;
}

#form{
margin-top: 100px;
width: 350px;
outline: 5px solid #d0ebfe;
border: 1px solid #bae0fb;
padding: 10px;
}

#form label
{
font:bold 11px arial;
color: #565656;
padding-left: 1px;
}

#form label.mandat
{
color: #f00;
}

#form input[type="text"]
{
height: 30px;
margin-bottom: 8px;
padding: 5px;
font: 12px arial;
color: #0060a3;
}

#form textarea
{
width: 340px;
height: 80px;
resize: none;
margin: 0 0 8px 1px;
padding: 5px;
font: 12px arial;
color: #0060a3;
}

#form img
{
margin-bottom: 8px;
}

#form input[type="submit"]
{
background-color: #0064aa;
border: none;
color: #fff;
padding: 5px 8px;
cursor: pointer;
font:bold 12px arial;
}

.error
{
border: 1px solid red;
}

.cap_status
{
width: 350px;
padding: 10px;
font: 14px arial;
color: #fff;
background-color: #10853f;
display: none;
}

.cap_status_error
{
background-color: #bd0808;  
}

Создать сайт в uKit Нужен классный сайт для бизнеса?
Воспользуйтесь сервисом uKit. Никакого кода!
Комментарии (4)
илья дементьев 2012-06-24 в 15:14 / МатериалСпам
Даю всем подряд :D ШУЧУ-ЧУШУ
2
илья дементьев 2012-06-23 в 19:25 / МатериалСпам
Нет.
0
Денис Абдуллин 2012-06-23 в 19:27 / МатериалСпам
Ну ты даешь
0
илья дементьев 2012-06-23 в 16:16 / МатериалСпам
Я все не понимаю: нафига вообще эта капча?
0
Чтобы оставить комментарий или отзыв под этой публикацией, войдите или зарегистрируйтесь.