The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Реализация теста Тьюринга на Perl (ввод цифр изображенных на картинке) (perl image auth web cgi)"
Отправлено AcidumIrae, 13-Июл-04 12:45 
Perl конечно хороший язык, но PHP рулит
----------------------------------------
header("Content-type: image/png");
session_start();
//Config
$font   = 4;   //Largest built-in font
$width  = 100; //Image width
$height = 35;  //Image height
$num    = 255; //Number of random background lines

$minc   = 4;   //Minimum word length
$maxc   = 8;   //Maximum word length

// seed with microseconds
function make_seed()
{
  list($usec, $sec) = explode(' ', microtime());
  return (float) $sec + ((float) $usec * 100000);
}

mt_srand(make_seed());

$len=mt_rand($minc,$maxc);
$string="";
for($i=0;$i<$len;$i++)
{
  if(mt_rand(0,1))
    $c=mt_rand(65,90);
  else
    $c=mt_rand(97,122);
  $string.=chr($c);
}

$_SESSION['word_verify']=$string;

/*********************************************************/
$im     = imagecreatetruecolor($width,$height);
$tcolor = imagecolorallocate($im, 0, 0, 0);
$bcolor = imagecolorallocate($im, 255, 255, 255);

$fx  = imagefontwidth($font);
$fy  = imagefontheight($font);

$x=mt_rand(2,$width-$fx*strlen($string)-2);
$y=mt_rand(2,$height-$fy-2);

imagefill($im, 1, 1, $bcolor);
imagerectangle( $im, 0, 0, $width-1, $height-1, $tcolor);

//Drawing random lines
for($i=0;$i<$num;$i++)
{
  $tx = mt_rand(0,$width);
  $ty = mt_rand(0,$height);

  $dx = mt_rand(mt_rand(-3,0),mt_rand(0,3));
  $dy = mt_rand(mt_rand(-3,0),mt_rand(0,3));

  imageline($im,$tx,$ty,$tx+$dx,$ty+$dy,$tcolor);
}

//cleaning box for text
imagefilledrectangle( $im, $x-1, $y-1, $x+$fx*strlen($string)+1, $y+$fy+1, $tcolor);
imagefilledrectangle( $im, $x-1, $y-1, $x+$fx*strlen($string)+1, $y+$fy+1, $bcolor);

//Writing text
imagestring($im, $font, $x, $y, $string, $tcolor);
imagestring($im, $font, $x+1, $y, $string, $tcolor);

imagerectangle( $im, 0, 0, $width-1, $height-1, $tcolor);

imagepng($im);
imagedestroy($im);

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру