Делаем капчу для сайта на PHP

CAPTCHA ([ˈkæptʃə]; от англ. «Completely Automated Public Turing test to tell Computers and Humans Apart» — «полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей»).

Ужа давно вопрос антиспамовой защиты стоит достаточно остро. Капчи пишутся тысячами, миллионом различных способов, об одном из которых я сегодня и расскажу.

Для работы с изображениями в PHP используется библиотека GD2. Соответственно ваш PHP должен быть установлен с поддержкой GD.
Не важно что именно вы пишете — авторизацию для сайта, или постинг какой то информации, в данном случае это для нас не актуально, нам лишь нужно вывести и проверить капчу. Соответственно для начала у нас должна быть html форма, что то типа такого:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 <title>Регистрация</title>
</head>
<body>
<h1>Регистрация</h1>
<form action="" method="post" enctype="multipart/form-data">
 <div>
 <img src="captcha.php" id="capcha">
 </div>
 <div>
 <label>Введите строку</label>
 <input type="text" name="str" size="6">
 </div>
 <input type="submit" value="OK">
</form>
<a href="javascript:void(0);" onclick="document.getElementById('capcha').src='captcha.php?rid='+ Math.random();">Показать новую картинку.</a>
</body>
</html>

Ну а теперь займёмся созданием самой картинки для нашей капчи, и так — captcha.php:


В итоге в нашей форме появится картинка такого вида:

Теперь всё что нам остаётся, добавить для формы — проверку нашей капчи. Можно делать в отдельном файле, если у вас action обработчик находится где то в другом файле, я сделаю в том же:


Ну а где то под формой добавить:


Помеченные ,

Добавить комментарий