Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Антибот картинка подскажите (https://forum.antichat.xyz/showthread.php?t=40720)

AkyHa_MaTaTa 24.05.2007 10:50

Антибот картинка подскажите
 
Вообшем нужно зделать антибот защиту с помощью случайного сгенерированого символов соответствено выведененых на картинку,желательно без использования БД,
без промежуточного сохранения на винт(короче сразу head("контент тайп: картинка ")), как я понял есть несколько способов это сделать:
1)1 скрипту(занимаюшимуся непосредственым выводом картинки) передается запрос на вывод картинку:
<img scr = "antibot.php?simvol=bns7HG7"> -соответствено
bns7HG7 - это как нибуть зашфрованый случайный номер(кажись так делается в слаед кмс), 2 скрипт генерирует номерок и шифрует его, ну соответсвено инклудится там где надо вывести изображения.
2)делает почти тоже самое только 2 скрипт записует в файл случ. символы а 1 скрпт. его отдтуда считывает , или например 2 скрипт генерирует два разных набора символов первое это ид символов id а второй это сами символы и записует это все в файл а
1 скрипту передается <img scr = "antibot.php?id=bns7HG7"> где id ид номер символов ну и соответсвено 1 скрипт считывает файл на соответсвее id = simvol, и выдает их, у этих двух методов есть недостаток- если записывать в фаил с атрибутом w+ то стираются все номерки(например если открыто много окон регистрации то кому то придется повторить регистрацию)
а если с a+ или r+ то очень легко зделать файл в который все это дело записуется очень больщих размеров(раз тридцать обновить страницу регистрации и файл уже весит 10m), можно конечно генерировать название файла произвольно и передовать первому скрипту его название и тот после его прочтения делает ему unlink, но это будет дефрагментировать диск лишний раз , да и не красиво
но.
Подскажите че нибудь.
p.s. Сори за орфографию - спеШил.

DIAgen 24.05.2007 11:27

Ты что нибудь слышал про сессии?!

Нет, ну как ты мог, берешь генерируешь какой-нибудь порядок из цифор и буквочек, и выводишь это все как рисунок, ну я думаю ты знаешь как пользовать Image Functions, и так дальше пошли, и тот порядок который был у тебя сгенерирован заносишь например в $_SESSION['gen_anti_lol'] а как известно сессия у каждого пользователя различная и не повторимая...
Ну если ты не понял что я тебе сказал то тогда читай внимательно мануал по PHP, и учусь пользоваться ya.ru и google.com :rolleyes:

DIAgen 24.05.2007 11:32

Ну и на последок вот тебе очень хорошая ссылочка по твоему сабжу
http://forum.vingrad.ru/php-graphic-libraries-gd-imagemagic.html
там ты точно найдешь ответ на свой вопросик...)))

AkyHa_MaTaTa 24.05.2007 12:09

А ты слышал чтони буть про HTTP - заголовок, и про то что его можно парсить?Ведь сесии например могут пердаватся через плюшки либо через POST или GET. Вот например скриптик http://www.softtime.ru/info/proteus.php?down=proteus40.zip
и его уже давно обошли имено парся HTTP заголовок(почитай на их форуме), я сам прикалывался над одним знакомым, вернее над его сайтом:) .
http://forum.vingrad.ru/php-graphic-libraries-gd-imagemagic.html- пасибо конечно, но с GD я давно дружу:)

DIAgen 24.05.2007 12:19

Цитата:

Сообщение от AkyHa_MaTaTa
А ты слышал чтони буть про HTTP - заголовок, и про то что его можно парсить?Ведь сесии например могут пердаватся через плюшки либо через POST или GET. Вот например скриптик http://www.softtime.ru/info/proteus.php?down=proteus40.zip
и его уже давно обошли имено парся HTTP заголовок(почитай на их форуме), я сам прикалывался над одним знакомым, вернее над его сайтом:).

Правда! А ты знаешь, что передается только название сессии т.е индефикатор сессии, а данные которые храниться в этой сессии лежать на стороне сервера, и как же ты их достанешь это же не куки :rolleyes:

AkyHa_MaTaTa 24.05.2007 12:27

Ладно,ладно все ты круче:), спасибо за инфу ща буду тестить как ты пишеш.

blackybr 24.05.2007 13:03

PHP код:

<?php
session_start
(); 
//генерим псевдорандомную строку и берем только 5 символов 
$md5 md5(microtime() * mktime()); 
$string substr($md5,0,5);

//создаем капчу из картинки
$captcha imagecreatefrompng("./captcha.png"); 

//ставим цвета
$black imagecolorallocate($captcha000); 
$line imagecolorallocate($captcha,233,239,239); 

//добавляем некую защиту в виде линий)
imageline($captcha,0,0,39,29,$line); 
imageline($captcha,40,0,64,29,$line);

//рисуем полученную строку к картинке
imagestring($captcha52010$string$black); 

//созраняем строку
$_SESSION['key'] = md5($string); 

//выводим картинку
header("Content-type: image/png"); 
imagepng($captcha);
?>

<?php
session_start
(); 

//Шифруем данные которые передаем и проверяем на правильность (всовпадение отсылаемого и правильного кода
if(md5($_POST['code']) != $_SESSION['key']) 

  die(
"Неверно!"); 
}else{ 
  echo 
'Верно!'
}
?>


RaiDeRz 24.05.2007 18:59

http://www.cryptographp.com/

Raz0r 24.05.2007 23:59

Коль пошла такая байда... http://captcha.ru/ :D

Isis 25.05.2007 07:36

captcha.php
PHP код:

<?php
session_start
();
session_register('code');
$_SESSION['code'] = rand(1000000,9999999);
for(
$i 0$i 7$i++) {
    
$arr[$i] = substr($_SESSION['code'],$i,1);
}
$im imagecreate(130,40);
imagecolorallocate($im,255,255,255);
$a 0;
for(
$i 0$i 7;$i++)
{
    
$color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
    
imagestring($im,3,$a+=15,0,$arr[$i],$color);
}
header("Content-type: image/jpeg");
imagejpeg($im,'',100);
?>

form.php
PHP код:

<?php
session_start
();
?>
<img src="captcha.php" />
<form method="post">
Enter code : <input type="text" name="get_code">
<input name="sub" type=submit value="Проверить">
</form>
<?php
if($_POST['sub']) {
    if(
$_POST['get_code'] == $_SESSION['code']) {
        echo 
"Картинка введена верно";
    } else {
        echo 
"Картинка введена неверно";
    }
}
?>



Время: 17:24