<?php
// Ширина изображения
$width = 250;
// Высота изображения
$height = 160;
// Количество символов в коде
$sign = 3;
// Защитный код
$code = "";
// Инициируем сессию
session_start();
// Символы, используемые в коде
$letters = array('a','b','c','d','e','f',
'g','h','j','k','m','n',
'p','q','r','s','t','u',
'v','w','x','y','z','2',
'3','4','5','6','7','8','9');
// Компоненты для RGB-цвета
$figures = array('50','70','90','110',
'130','150','170','190','210');
// Создаем пустое изображение
$img = imagecreatetruecolor($width, $height);
// Заливаем фон белым цветом
$fon = imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $fon);
// Заливаем фон точками
for($j=0; $j<$width; $j++)
{
for($i=0; $i<($height*$width)/300; $i++)
{
// Формируем случайный цвет
$color = imagecolorallocatealpha(
$img,
$figures[rand(0,count($figures)-1)],
$figures[rand(0,count($figures)-1)],
$figures[rand(0,count($figures)-1)],
rand(10,30));
// Устанавливаем случайную точку
// случайного цвета
imagesetpixel($img,
rand(0,$width),
rand(0,$height),
$color);
}
}
// Накладываем защитный код
for($i=0; $i<$sign; $i++)
{
//Ориентир
$h = 1;
//Рисуем
$color = imagecolorallocatealpha(
$img,
$figures[rand(0,count($figures)-1)],
$figures[rand(0,count($figures)-1)],
$figures[rand(0,count($figures)-1)],
rand(10,30));
// Генерируем случайный символ
$letter = 'd';//$letters[rand(0,sizeof($letters)-1)];
// Формируем координаты для вывода символа
if(empty($x)) $x = $width*0.08;
else $x = $x + ($width*0.8)/$sign+rand(0,$width*0.01);
if($h == rand(1,2)) $y =(($height*1)/4) + rand(0,$height*0.2);
else $y = (($height*1)/4) - rand(0,$height*0.2);
// Запоминаем символ в переменной $code
$code .= $letter;
$fonta = 'VeraSeBd.ttf';
}
imagettftext($img, 38, 20, $x-50, $y+95, $color, $fonta,$letter);
$_SESSION['code'] = $code;
header ("Content-type: image/jpeg");
imagejpeg($img);
?>
если я вызываю этот файл в снипете то на выходе я получаю краказябры, но если я ее вызываю вот так в снипете <img src="img.php'" /> то все выводится нормально, но при таком подходе код в $_SESSION['code'] не добавляется (находится в другой сессии как я понимаю). Вот вопрос как поместить код в сессию MODx? может у кого альтернативные методы есть?