|
Автор |
Сообщение |
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
<p>Я думаю у вас сразу возник вопрос: что это такое?
Ответ: когда вы регистрируетесь где-нибудь вас просят
ввести цифры с картинки. Это и есть система защиты от
автоматических регистраций. Зачем она нужна? Она нужна
для того чтобы на сайте не производилась регистрация
программой или скриптом.
<p>Как все это будет работать? Все очень просто! Выводим
форму с нужными нам полями и сам рисунок. Создание
рисунка немного соложнее. Надо создать изображение,
сгенерировать номер, занести его в куку и вывести на
рисунок. При обработке формы мы будем проверять
совпадение номера из куки и введенного в форме.
<p>Файл <b>index.php</b>:<br><code><?php
<br>//
Проверяем отправлена ли форма <br>$action =
empty($_POST["number"]) ?
false : true;
<br>// Если нет, то выводим
ее <br>if(!$action){
<br>echo "
<FORM action='\"index.php\"' method=post>"; <br>echo "<INPUT type='\"text\"'
name='\"number\"'>"; <br>echo
"<IMG height='\"15\"'
alt='\"Введите' src="" width='\"50\"' border='\"0\"'
цифры\? эти><br>"; <br>echo
"<INPUT type='\"submit\"'
value='\"Run\"'>"; <br>echo
"</FORM>"; <br>} else { // если да, то проверяем код <br>
// если введены не цифры или цифры
и буквы, то выдаем сообщение <br>
if(!is_numeric($_POST["number"])){
<br>
die("Неправильный формат
кода!"); <br>
} <br>
// Проверка на правильность
кода <br>if($_COOKIE['reg_num']!==$_POST["number"]){
<br>
// Если не правильный
<br>
echo "Код не
совпадает!";
<br>} else { <br>
// Если правильный <br>
echo "Код
правильный!";
<br>} <br>} <br>?> </code>
<p>Файл <b>genimage.php</b>:<br><code><?php
<br>//
Сгенерируем номер <br>$num
= rand('111111','999999');
<br>// Запишем номер в куку
<br>setcookie('reg_num',
$num); <br>//
Создадим рисунок размером 50x15 <br>$img =
imagecreate('50',
'15'); <br>//
Зададим задний цвет (серый) по RGB <br>$back =
imagecolorallocate($img,
218, 218
,218);
<br>// Зададим черный цвет
<br>$black = imagecolorallocate($img,
0,
0,
0); <br>//
Рисуем бордюр <br>imageline($img,
0,
0,
49, 0, $black);
<br>imageline($img,
0,
0,
0,
14 , $black);
<br>imageline($img,
0,
14, 49,
14 , $black);
<br>imageline($img,
49, 0, 49,
14 , $black);
<br>// Рисуем цифры
<br>imagestring($img,3,5,0,$num,$black);
<br>// Выводим рисунок
<br>imagepng($img);
<br>?>
</code>
<p>Вот и все! Запускаем файл
index.php, вводим цифры. Если есть необходимость
добавить поля переправьте форму.</p> |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
kofik
Зарегистрирован: 26.12.2006 Сообщения: 1
|
|
|
|
Я воспользовался ранее приведенным кодом php для создания системы защиты от автоматических регистраций, но при запуске index.php появляется только окно для ввода номера который должен отображаться в виде картинки и кнопка для проверки результата, но картинка не отображается, только ее рамка, но это было приверсии php 5.1.4 и в этой версии небыло библиотеки gd. сейчас я использую php v.5.2.0 и при запуске index.php появляется сообщение: Указанное приложение CGI не возвратило полный набор заголовков HTTP и всё, так же я редактировал php.ini в windows, я указал в extension путь к php_gd2.dll и раскаментировал extension=php_gd2.dll. подскажите почему это не работает. зарание спасибо |
|
Вернуться к началу |
|
|
Anderson
Завсегдатай
Зарегистрирован: 08.07.2006 Сообщения: 642 Откуда: localhost
|
|
|
|
Во-первых: а сама бмблиотека в C:\Windows\System лежит?
Во-вторых: проверьте с phpinfo(), распознана ли GD Library _________________ ArchLinux + Enlightenment 17 (E17) |
|
Вернуться к началу |
|
|
|
|
 Главная страница сайта
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|