|
|
|
|
|
для: Максимыч
(25.09.2006 в 16:05)
| | При работе с сессиями я регистрирую переменную
if (! session_is_registered('secret')) :
session_register( 'secret' ) ;
Может жто поможет | |
|
|
|
|
|
|
|
для: Vlas_r
(25.09.2006 в 15:52)
| | Сделал с помощью сессий. Вот код image.php
<?php
session_start();
$sec1=rand(0,9);
$sec2=rand(0,9);
$sec3=rand(0,9);
$sec4=rand(0,9);
$sec5=rand(0,9);
$sec6=rand(0,9);
$im=imagecreate(150,30);
$w=imagecolorallocate($im, 255, 255, 255);
$g1=imagecolorallocate($im,192,192,192);
$g2=imagecolorallocate($im, 64,64,64);
$cl1=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl2=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl3=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl4=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl5=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl6=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
for ($i=0;$i<=150;$i+=5) imageline($im,$i,0,$i,30,$g1);
for ($i=0;$i<=30;$i+=5) imageline($im,0,$i,150,$i,$g1);
for ($i=0;$i<5;$i++)
{
imageline($im,rand(0,150),rand(0,30),rand(0,150),rand(0,30),$g2);
}
imagestring ($im, 10,0+rand(0,10), 5+rand(-5,5), $sec1,$cl1);
imagestring ($im, 5,25+rand(-10,10), 5+rand(-5,5), $sec2,$cl2);
imagestring ($im, 5,50+rand(-10,10), 5+rand(-5,5), $sec3,$cl3);
imagestring ($im, 5,75+rand(-10,10), 5+rand(-5,5), $sec4,$cl4);
imagestring ($im, 5,100+rand(-10,10), 5+rand(-5,5), $sec5,$cl5);
imagestring ($im, 5,125+rand(-10,10), 5+rand(-5,5), $sec6,$cl6);
$secret=$sec1.$sec2.$sec3.$sec4.$sec5.$sec6;
$_SESSION['secret']=$secret;
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>
|
Вот код index.php
<?php
session_start();
echo "Картинка: <img src=image.php>";
echo $_SESSION['secret'];
?>
|
По идее он должен вывести картинку и рядышком текстом число которое на картинке. Но он этого не делает. Точнее делает но с опозданием в 1 шаг. Т.е. предположим на картинке число 234. Он вывыдит какие-то левые цифры. А если страницу обновить. То на картинке будет новое число а текстом рядом заветное 234. Почему он опаздывает? Что не так? | |
|
|
|
|
|
|
|
для: Максимыч
(25.09.2006 в 15:12)
| | Запись $secret в сессию поможет решить проблему. | |
|
|
|
|
|
|
|
для: Максимыч
(25.09.2006 в 15:12)
| | Картинку нужно создавать в отдельном файле типа пик.РНР и давать на него ссылку
а результат рандома нужно хранить в сессии | |
|
|
|
|
|
|
| Написал скрипт вывода картинки от автоматической регистрации.
<?php
header("Content-type: image/png");
$mas=array("0","1","2","3","4","5","6","7","8","9");
$im=imagecreate(150,30);
$w=imagecolorallocate($im, 255, 255, 255);
$g1=imagecolorallocate($im,192,192,192);
$g2=imagecolorallocate($im, 64,64,64);
$cl1=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl2=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl3=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl4=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl5=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
$cl6=imagecolorallocate($im,rand(0,128),rand(0,128),rand(0,128));
for ($i=0;$i<=150;$i+=5) imageline($im,$i,0,$i,30,$g1);
for ($i=0;$i<=30;$i+=5) imageline($im,0,$i,150,$i,$g1);
for ($i=0;$i<5;$i++)
{
imageline($im,rand(0,150),rand(0,30),rand(0,150),rand(0,30),$g2);
}
$sec1=$mas[rand(0,9)];
imagestring ($im, 10,0+rand(0,10), 5+rand(-5,5), $sec1,$cl1);
$sec2=$mas[rand(0,9)];
imagestring ($im, 5,25+rand(-10,10), 5+rand(-5,5), $sec2,$cl2);
$sec3=$mas[rand(0,9)];
imagestring ($im, 5,50+rand(-10,10), 5+rand(-5,5), $sec3,$cl3);
$sec4=$mas[rand(0,9)];
imagestring ($im, 5,75+rand(-10,10), 5+rand(-5,5), $sec4,$cl4);
$sec5=$mas[rand(0,9)];
imagestring ($im, 5,100+rand(-10,10), 5+rand(-5,5), $sec5,$cl5);
$sec6=$mas[rand(0,9)];
imagestring ($im, 5,125+rand(-10,10), 5+rand(-5,5), $sec6,$cl6);
imagepng($im);
imagedestroy($im);
$secret=$sec1.$sec2.$sec3.$sec4.$sec5.$sec6;
echo "Число на картинке - ".$secret;
?>
|
Но вот проблема. Не отображается надпись echo "Число на картинке - ".$secret;. Я понимаю что это из-за заголовка, но если его убираю ничего не меняется. Если вставить эту строчку с надписью в самое начала файла то она выводится, но теперь не выводится картинка. Как сделать так чтобы выводилась и надпись и картинка одновременно?
Можно конечно создать новый файл и написать там <img src...> но тогда не понятно как передать секретное число. С чем сравнивать? Как это победить? | |
|
|
| |
|