Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вывод секретной картинки

Сообщения:  [1-5] 

 
 автор: himic   (26.09.2006 в 12:01)   письмо автору
 
   для: Максимыч   (25.09.2006 в 16:05)
 

При работе с сессиями я регистрирую переменную

if (! session_is_registered('secret')) :
session_register( 'secret' ) ;

Может жто поможет

   
 
 автор: Максимыч   (25.09.2006 в 16:05)   письмо автору
 
   для: 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($im255255255); 
$g1=imagecolorallocate($im,192,192,192);
$g2=imagecolorallocate($im64,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+=5imageline($im,$i,0,$i,30,$g1);
for (
$i=0;$i<=30;$i+=5imageline($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 ($im10,0+rand(0,10), 5+rand(-5,5), $sec1,$cl1);
imagestring ($im5,25+rand(-10,10), 5+rand(-5,5),  $sec2,$cl2);
imagestring ($im5,50+rand(-10,10), 5+rand(-5,5),  $sec3,$cl3);
imagestring ($im5,75+rand(-10,10), 5+rand(-5,5),  $sec4,$cl4);
imagestring ($im5,100+rand(-10,10), 5+rand(-5,5),  $sec5,$cl5);
imagestring ($im5,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. Почему он опаздывает? Что не так?

   
 
 автор: Vlas_r   (25.09.2006 в 15:52)   письмо автору
 
   для: Максимыч   (25.09.2006 в 15:12)
 

Запись $secret в сессию поможет решить проблему.

   
 
 автор: himic   (25.09.2006 в 15:47)   письмо автору
 
   для: Максимыч   (25.09.2006 в 15:12)
 

Картинку нужно создавать в отдельном файле типа пик.РНР и давать на него ссылку
а результат рандома нужно хранить в сессии

   
 
 автор: Максимыч   (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($im255255255); 
$g1=imagecolorallocate($im,192,192,192);
$g2=imagecolorallocate($im64,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+=5imageline($im,$i,0,$i,30,$g1);
for (
$i=0;$i<=30;$i+=5imageline($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 ($im10,0+rand(0,10), 5+rand(-5,5), $sec1,$cl1);
$sec2=$mas[rand(0,9)];
imagestring ($im5,25+rand(-10,10), 5+rand(-5,5),  $sec2,$cl2);
$sec3=$mas[rand(0,9)];
imagestring ($im5,50+rand(-10,10), 5+rand(-5,5),  $sec3,$cl3);
$sec4=$mas[rand(0,9)];
imagestring ($im5,75+rand(-10,10), 5+rand(-5,5),  $sec4,$cl4);
$sec5=$mas[rand(0,9)];
imagestring ($im5,100+rand(-10,10), 5+rand(-5,5),  $sec5,$cl5);
$sec6=$mas[rand(0,9)];
imagestring ($im5,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...> но тогда не понятно как передать секретное число. С чем сравнивать? Как это победить?

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования