|
|
|
|
|
для: Pipish
(18.07.2006 в 10:00)
| |
<?php //testimage1.php
session_start();
?><html> Enter text:
<img src="testimage2.php?id=<?= md5(microtime()) ?>">
<form method=post action=testimage3.php>
<input name=check> <input type=submit value=check! >
</form>
|
<?php //testimage2.php
session_start();
$_SESSION['testimage']=$s=md5(microtime().session_id().$_SERVER['REMOTE_ADDR']);
$str = strtoupper(base64_encode(pack('h12', $s)));
$width = 160;
$height =100;
$ang = 30;
$img_type = "gif";
$font_name="comic.ttf";
$font_size=20;
$image = imagecreatetruecolor($width, $height);
$foncolor=imagecolorallocate($image, 107, 120, 237);
imagefill($image,0,0,$foncolor);
$white = imagecolorallocate($image, 255, 255, 255);
$bnd = imagettfbbox($font_size, $ang, $font_name, $str);
$w = $bnd[4] - $bnd[0];
$h = $bnd[5] - $bnd[1];
$x = ($width-$w)>>1;
$y = ($height-$h)>>1;
imagettftext($image, $font_size, $ang, $x , $y, $white, $font_name, $str);
header ("Content-type: image/".$img_type);
imagegif($image);
?>
|
<?php //testimage3.php
session_start();
$check = @$_POST[check];
$s = @$_SESSION['testimage'];
if(strlen($s) == 32 &&
strtoupper($check) == strtoupper(base64_encode(pack('h12', $s))))
echo 'Test passed!';
else
echo 'Test failed!';
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(18.07.2006 в 09:51)
| | А можно по подробнее как через сессию, и какие ещё способы есть? | |
|
|
|
|
|
|
|
для: Pipish
(18.07.2006 в 09:31)
| | Начальное значение для датчика rand нужно определить в первом скрипте. И передать во второй тем или иным способом, скрытым от клиента. Например, через сессию. | |
|
|
|
|
|
|
|
для: cheops
(18.07.2006 в 00:22)
| | Вот мой скрипт:
<?php
$width = 120;
$height = 40;
$img_type = "gif";
$font_name="smash.ttf";
$font_size=20;
$numb=4;
$str="";
$abs = array('a','b','c','d','e','f','g','h','j','k','m','n','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9');
for($i=1;$i<=$numb;$i++)
{
$cv=rand(0,31);
$str="$str$abs[$cv]";
}
//полотно
$image = imagecreatetruecolor($width, $height);
$foncolor=imagecolorallocate($image, 107, 120, 237);
imagefill($image,0,0,$foncolor);
//рисуем
$white = imagecolorallocate($image, 255, 255, 255);
imagettftext ($image, $font_size, 2, 2 , 22, $white, $font_name, $str);
//выводим
header ("Content-type: image/".$img_type);
imagegif($image);
?>
|
Если делать как сказал Trianon, то я не знаю как получить переменную $str. | |
|
|
|
|
|
|
|
для: Pipish
(17.07.2006 в 21:19)
| | >Работает, НО я не знаю что нарисовано на картинке, как
>получить ту переменную со строкой?
Ту, это которую? | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2006 в 20:39)
| | Работает, НО я не знаю что нарисовано на картинке, как получить ту переменную со строкой? | |
|
|
|
|
|
|
|
для: Pipish
(17.07.2006 в 20:08)
| |
<html>
Различный текст и навигация
<?php
//здесь надо рисовать
// <img src="http://URL-запроса-к-скрипту-генерирующему-картинку">
// а саму картинку рисовать уже в том скрипте, предваряя заголовком
// соотв. типа документа
?>
Различный текст и навигация
</html>
|
| |
|
|
|
|
|
|
|
для: Trianon
(17.07.2006 в 19:57)
| | Я делаю защиту от спам-роботов. Страница выклядит примерно так:
<html>
Различный текст и навигация
<?php
//здесь я рисую картинку и вывожу её
?>
Различный текст и навигация
</html>
|
Вот что из этого получается:
Различный текст и навигация
‰PNG IHDRИdLди\*IDATxњнЭ_h•uЗспччмt¦;g9зЩС!“НїбB©Д?m‰ЎІ@‘.кў J$+лў‚RJ/кВА.$Љў« ИBPФ MМ¤щwРFџНmЪ9nєy~ї.&&їЧО9ПчyћНПлj|ЩyцѓЅ9њэћ?cc шM…Ѕ??€@X aЃ„"€@X aЃ„"€@X aЃ„"€@X aЃ„"€@X aЃ„"€@X aЃ„"КВэсWх'ћґC*IqGЎт‰#и°
Различный текст и навигация
|
| |
|
|
|
|
|
|
|
для: Pipish
(17.07.2006 в 19:54)
| | Единым вызовом скрипта Вы не сможете вывести всё. У Вас получится вывести лишь что-то одно. | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2006 в 19:51)
| | Вывожу всё. | |
|
|
|
|