Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Нужен скрипт защитной картинки от авто-рег

Сообщения:  [1-10]   [11-16] 

 
 автор: bartik   (22.09.2006 в 18:20)   письмо автору
 
   для: Unkind™   (22.09.2006 в 15:24)
 

Спасибо я понял я забыл сесию открывать =)

   
 
 автор: Unkind™   (22.09.2006 в 15:24)   письмо автору
 
   для: bartik   (22.09.2006 в 14:59)
 

Нужно создать форму...

form.php

<?php
header
("Content-type: text/html; charset=windows-1251");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-relative");

echo <<< END
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Форма</title>
</head>
<body>
<form action="handler.php" method="post">
Текст:<br />
<input type="text" name="text" /><br />
<img src="code.php" alt="CODE" /><br />
Введите код с картинки:<br />
<input type="text" name="code" /><br />
<input type="submit" value="[OK]" /><br />
</form>
</body>
</html>
END;
?>


И проверка...
handler.php

<?php
session_start
();
if(
$_SESSION['sec_code_session'] != $_POST['code'] or empty($_POST['code']))
{
header("Content-type: text/html; charset=windows-1251");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-relative");

echo <<< END
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Error</title>
</head>
<body>
Ошибка: проверочный код введен неверно...
<a href="javascript:history.back(1)">Назад</a><br />
</body>
</html>
END;
die();
}

//Остальной код...
?>

   
 
 автор: bartik   (22.09.2006 в 14:59)   письмо автору
 
   для: bartik   (22.09.2006 в 01:05)
 

Сабж нашёл данный код от антиботов, но проблема при проверке, как бы вы проверяли? я пробывал через if но нифига не выходит.... help me please

<?php 
class genrandomimage
{
  var 
$lenght 7// Длина строки
  
var $string ''// Результирующая строка

  # Генерация строки
  
function genstring()
    {
      
$chars = array ('1''2''3''4''5''6''7''8''9''0');
      
$result_string '';

      for(
$i 0$i $this -> lenght$i++)
        {
          
$random_char mt_rand0, ( count $chars ) - ) );
          
$result_string .= $chars[$random_char];
        }
      
$this -> string $result_string;
    }

  
# Генерация изображения
  
function genimage()
    {
      
$im imagecreate10 $this -> lenght 520 );

      
$gray imagecolorallocate$im228228228 );
      
$black_1 imagecolorallocate$im150150150 );
      
$black imagecolorallocate$im00);
      
$white imagecolorallocate$im 255255255 );
      
$string imagecolorallocate$im909090 );

      
/* Генерация шума */
      
for($i = -2$i ceil ( ( 10 $this -> lenght ) / ); $i++)
        {
          
imageline$im$i 520$i 200$black_1 );
        }
      for(
$i = -2$i ceil ( (10 $this -> lenght) / ); $i++)
        {
          
imageline$im$i 5+2020$i 0$white );
        }
      
/* Конец генерации шума */

      # Рисуем строку на картинке
      
imagestring$im562$this -> string$string );

      
# Рамка
      
imageline$im00,  10*$this -> lenght 50$black );
      
imageline$im019,  10*$this -> lenght 519$black );
      
imageline$im00,  020$black );
      
imageline$im10*$this -> lenght 40,  10*$this -> lenght 420$black );

      
header('Content-type: image/png');
      
imagepng($im);
    }

}


session_start();
session_name('sec_code');

$im = new genrandomimage ();
$im->genstring();

$_SESSION['sec_code_session'] = $im->string;

$im->genimage();

 

?> 

   
 
 автор: tuder   (22.09.2006 в 07:36)   письмо автору
 
   для: indexer   (21.09.2006 в 21:46)
 

>Наслаждайтесь, картинка не только просто выводит буквы, но и крутит их и добавляет шум ну это уже от сканеров картинок

Что-то не удаётся насладится. :-( Картинка не создаётся.
Я уже вот это:

>

>$im=imagecreatefromjpeg("back.jpg");//файл с фоном
>


Заменил на такое:

$im = @imagecreate(130, 24); 
$background_color = imagecolorallocate($im, 255, 255, 255);


и back.jpg подсовывал... Что-то не найду, в чём причина.

   
 
 автор: indexer   (22.09.2006 в 01:50)   письмо автору
 
   для: Unkind™   (22.09.2006 в 01:02)
 

bartik какой вариант выбрали?

Извините сразу не понял, Можно конечно случайно выбрать из базы ссылку на картинку и ее показать, передать скрипту что за картинка была выбрана, и сравнить оба значения. Но тут есть несколько но.
Во первых все равно придется стартовать сессию(можно обойти конечно проверкой ip мол вы уже посылали с этого ip)либо сразу после отправки использовать редирект. потому что если нажать на кнопку обновить данные опять будут отправлены (так и надо делать).
Во вторых большой ли код можно создать таким образом? хотя очень большой он конечно не нужен.

Я так думаю что при отправке чего либо всегда нужно стартовать сессию если ее еще нет, очень удобно записывать в нее некоторые переменные, так почему бы не воспользоваться? Зачем ломать голову и придумывать велосипед.

   
 
 автор: bartik   (22.09.2006 в 01:05)   письмо автору
 
   для: mech   (21.09.2006 в 22:02)
 

Всем спасибо

   
 
 автор: Unkind™   (22.09.2006 в 01:02)   письмо автору
 
   для: indexer   (21.09.2006 в 23:00)
 

Он, по-моему, имел ввиду не загружать в БД картинку, а сделать что-то вроде своих сессий...
Все равно лишнее...

   
 
 автор: indexer   (21.09.2006 в 23:00)   письмо автору
 
   для: mech   (21.09.2006 в 22:02)
 

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

   
 
 автор: mech   (21.09.2006 в 22:02)   письмо автору
 
   для: bartik   (21.09.2006 в 21:25)
 

Можно обойтись без сессий. Создавать в БД таблицу с id и code. Но только проблемы будут с TTL кода

   
 
 автор: indexer   (21.09.2006 в 21:52)   письмо автору
 
   для: indexer   (21.09.2006 в 21:46)
 

Момент не догледел там же MD5 задействовано
тогда проверяем так


<?php
if (md5 ($_POST['text'])==$_SESSION['session_kod']) {echo "Код введен верно";} 
else {echo 
"Код введен не верно"; }
?>
//$_POST['text'] то что передал пользователь, проганяем все через MD5 и сравниваем Хеши

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования