| |
|
|
| | ...При регистрации новый пользователь должен ввести 4 цифры на картинке сгенерированные автоматически. Короче, вот код генерации случайных цифр которые потом "рисуются".
$i1=rand(1,9);
$i2=rand(1,9);
$i3=rand(1,9);
$i4=rand(1,9);
$angle=0;
require('win2uni.php');
define('WIDTH', 80);
define('HEIGHT', 30);
define('FONT_NAME', 'arial.ttf');
define('FONT_SIZE', 20);
$image = imagecreatetruecolor(WIDTH,HEIGHT)
or die('Cannot create image');
for ($i=3;$i<=90;$i=$i+3){
ImageLine($image,0,$i,90,$i,0xF2FFFF);
ImageLine($image,$i,0,$i,90,0xF2FFFF);
}
$text=win2uni("$i1$i2$i3$i4");
$coord = imagettfbbox(FONT_SIZE, 0, FONT_NAME, $text);
$width = $coord[2] - $coord[0];
$height = $coord[1] - $coord[7];
$X = ((WIDTH - $width) / 2);
$Y = (HEIGHT + $height) / 2;
imagettftext($image,FONT_SIZE,$angle,$X,$Y,0xF2FFFF,FONT_NAME,$text);
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
|
Проблема в том что при добавлении этого кода на страницу остальной текст вообще не отображается... Если убрать "header('Content-type: image/png');" то все наоборот, рисунок не отображается, т.е. вместо него отображается его машиный код.
Что я делаю не так?
И еще... Вот код win2uni.php (хотя в данном случае тэг require можно убрать)):
<?php
function win2uni($s)
{
$s = convert_cyr_string($s,'w','i'); // преобразование win1251 -> iso8859-5
// преобразование iso8859-5 -> unicode:
for ($result='', $i=0; $i<strlen($s); $i++) {
$charcode = ord($s[$i]);
$result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
}
return $result;
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: alex007
(01.02.2007 в 16:20)
| | | Вы мешаете и html, и рисунок на одной странице. Так нельзя. Вынесите код генерации картинки в другой скрипт и в форме напишите <img src="captcha.php"> | |
| |
|
|
| |
|
|
| |
для: Саня
(01.02.2007 в 16:34)
| | | Большое спасибо, все получилось... | |
| |
|
|