Передача/получение переменных в функции GD

plavv

Новичок
Передача/получение переменных в функции GD

Добрый день!
У меня стоит задача организовать антиспам защиту.
Запускаю на выполнение index.php в результате картинка выводится, но почему-то
на выходе $_SESSION['antisp'] = NULL , приведите пожалуйста пример
подобного рабочего скрипта или подскажите, что исправить.

Есть фаил index.php

PHP:
<?php
session_start();
?> 

<img src="antispam.php" /> 
 
<?php 
 /*далее планируется сравнение $_SESSION['antisp'] с цифрами
 введенными пользователем */
 echo var_dump($_SESSION['antisp']) //null 
?>
Фаил antispam.php

PHP:
<?php 
$_SESSION['antisp'] = rand(10000,99999); 
settype ($_SESSION['antisp'], "string");
$im = @imagecreate(115, 20); 
$background_color = imagecolorallocate($im, 255, 255, 255);
$Color = imageColorAllocate($im, 254, 165, 65);
imagestring($im, 5, 0+rand(0,5), 5+rand(-5,0),
substr($_SESSION['antisp'],0,1), $Color); 
Header("Content-type: image/png"); 
imagepng($im);
imagedestroy($im);
?>
PHP Version 5.2.6-3ubuntu4.2
Apache 2.0 Handler
Linux Ubuntu 9.04

С уважением Виталий.
 

zerkms

TDD infected
Команда форума
plavv
а с чего ты решил, что скрипт antispam.php выполнился раньше строки "echo var_dump($_SESSION['antisp']) //null " в index.php?
 

plavv

Новичок
Автор оригинала: zerkms
plavv
а с чего ты решил, что скрипт antispam.php выполнился раньше строки
"echo var_dump($_SESSION['antisp']) //null " в index.php?
Не полнял вопроса? Я думал, что Apache выполняет построчно скрипт сначала вызывает PHP машину
PHP:
<?php 
session_start();
 ?>
потом выходит из PHP и выводит обычный HTML
<img src="antispam.php" alt="Антиспам Код" border="1"/>

потом опять заходит в PHP и выполняет
PHP:
<?php
echo var_dump($_SESSION['antisp']);echo "<hr>";
 ?>
Суть проблемы ни в этом. После выполнения antispam.php не передается
присвоенное значение $_SESSION['antisp'].
Т.е. в antispam.php $_SESSION['antisp'] присвается какое-то значение на выходе $_SESSION['antisp']=NULL

Пробывал по другому

PHP:
<?php 
session_start();
print ( '<img src="antispam.php" />');  
echo var_dump($_SESSION['antisp']);echo "<hr>"; 
?>
тоже не работает.

Пробывал присвоить присвоит $_SESSION['antisp'] до
PHP:
 <img src="antispam.php" />
т.е.
PHP:
<?php 
session_start(); 
 $_SESSION['antisp']="999999"; 
print ( '<img src="antispam.php"  />');
echo var_dump($_SESSION['antisp']) //999999;
?>
Но тогда в antispam.php $_SESSION['antisp']=NULL или пусто не знаю как проверить.
 

Фанат

oncle terrible
Команда форума
гыгыгы жесть.
а фак лежит как назло сцуко.

потом выходит из PHP и выводит обычный HTML
<img src="antispam.php" alt="Антиспам Код" border="1"/>
ну допустим. и что происходит с этим <img src дальше?
 

zerkms

TDD infected
Команда форума
*****
зырь:

plavv
а если в браузере картинки выключены - то скрипт капчи не будет запрошен!?
 

plavv

Новичок
Как что выводится картинка с кривыми цифрами которые юзер должен переписать? Я не стал приводить весь код, я привожу суть проблемы.
Не передается переменная сессии на участке до <img src="antispam.php" /> и после.
Суть задачи, что я хотел организовать вывод картинки "на лету". И надпись картинки должна быть как передана в antispam.php
или сгенерированна в antispam.php и передана дальше для обработки.
 

plavv

Новичок
Автор оригинала: zerkms

plavv
а если в браузере картинки выключены - то скрипт капчи не будет запрошен!?
Да не будет выполнен, подскажите другой способ как рисовать картику "на лету" и выводить в браузер.
 

zerkms

TDD infected
Команда форума
plavv
вот именно. сначала работает скрипт index.php, который выводит строку <img ... > и только потом браузер запрашивает (или не запрашивает) картинку с капчей.
т.е. картинка запрашивается ПОСЛЕ работы index.php и логично, что поэтому в index.php нет ещё ничего.
это понятно?
 

HEm

Сетевой бобер
echo var_dump($_SESSION['antisp']) //null - этот код у тебя выполняется ДО того, как в браузер пользователя вывалится страница с картинкой капчи

-~{}~ 28.08.09 09:39:

для наглядности можешь разнести страницу с капчей (это может быть чистый html между прочим) и с ее обработкой в разные файлы
 

Фанат

oncle terrible
Команда форума
plavv
что значит "выводится"? какие действия приводят к тому, что она выводится?
апач видит этот тег и начинает выдавать картинку?
 

plavv

Новичок
огромное спасибо за http://captcha.ru/kcaptcha/ счас буду разбираться как это все работает.


zerkms
А насчет :
"вот именно. сначала работает скрипт index.php, который выводит строку <img ... > и только потом браузер запрашивает (или не запрашивает) картинку с капчей.
т.е. картинка запрашивается ПОСЛЕ работы index.php и логично, что поэтому в index.php нет ещё ничего."

Не понял, если можно еще раз для тех, что на танке. Может кусочек исправленного кода как должно быть правильно.


HEm
echo var_dump($_SESSION['antisp']) //null
это я вывожу просто так для проверки и до и после <img
$_SESSION['antisp']=NULL

-~{}~ 28.08.09 08:55:

Автор оригинала: *****
plavv
что значит "выводится"? какие действия приводят к тому, что она выводится?
апач видит этот тег и начинает выдавать картинку?
Да Апач выводит картинку.
 

Фанат

oncle terrible
Команда форума
То есть, вот в это самое место, где был тег img, апач начинает выдавать содержимое файла с картинкой? А потом снова то, что навыдавал пхп. И в таком виде это все приезжает в браузер. так?
 

plavv

Новичок
Автор оригинала: *****
То есть, вот в это самое место, где был тег img, апач начинает выдавать содержимое файла с картинкой? А потом снова то, что навыдавал пхп. И в таком виде это все приезжает в браузер. так?
Да. Но вот проблема с передачей данных. Ну ничего буду вечером разбирать пример captha.ru
О результате отпишусь.
 

Фанат

oncle terrible
Команда форума
пример с captha.ru тебе не поможет. поскольку проблема не в коде, а в голове.
ты не пробовал открывать исходный код полученной страницы в браузере?
там лежит тег img или содержимое файла с картинкой?
 

DiMA

php.spb.ru
Команда форума
То, что там лежит не файл с картинкой (как в .HTM) - убогое ограничение браузеров. Сохранять htm умеют, грузить с веба - нет.
 
Сверху