powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Не взводится сессионная переменная при вызове php как картинки
18 сообщений из 18, страница 1 из 1
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33683109
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема такая:

1) При регистрации нового пользователя прошу ввести цифры, которые генерятся в виде картинки

2) Этот файл вставляю в качестве картинки <img src="code.php">

3) Соответственно хочу взвести сессионную переменную, для того, чтобы после submit формы сравнить введенное и сгенеренное. Для этого среди прочего в файле code.php прописано:

Код: plaintext
1.
$_SESSION['number'] = $num;

пытаюсь достать, переменная пуста :(
(прописывал и просто значение $_SESSION['number'] = '5', на выходе ничего не вижу)

при взводе переменных в других местах все работает нормально.

Пожалуйста помогите! Что я делаю неправильно?
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33683347
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
session_start() там присутствует? :)
-------------------------------
www.free-lancer.ru
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33683365
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VERSsession_start() там присутствует? :)
-------------------------------


Там - это где? :)

На самом деле и в header-е страницы есть и в сам файл code.php (формирует картинку) вставлял.

У меня есть подозрение, что на вывод картинки открывается другая сессия :( Как в таком случае поступать, мне не понятно вообще... Но ведь как-то делают. Неужели сохраняют на диск на сервере, а через запись в куках передают название файла :-O.
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33683459
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dc93Там - это где? :)
в code.php
Попробуйте передавать идентификатор сессии по ГЕТ ...
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33683672
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VERS
в code.php
Попробуйте передавать идентификатор сессии по ГЕТ ...

передать то не проблема.

Не нашел способа: как задается сессия с определенным идентификатором?

Через

session_start(SID)

?

Так у меня ничего не получается :(
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33683889
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде разобрался, завтра проверю
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33684403
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не разобрался :(
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33684458
Alexxx2783
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто пишется session_start() и все
передавать цифру по $_GET - это маразм

Посмотри, включены ли куки.

и напоследок phpfaq.ru - выучи там все наизусть
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33684489
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexxx2783Просто пишется session_start() и все
передавать цифру по $_GET - это маразм

Посмотри, включены ли куки.

и напоследок phpfaq.ru - выучи там все наизусть

Я же написал уже:

1)

Когда у меня "дергаются" файлы (по ссылкам), то переменные видны. (session_start() просто прописан в heeder, который инклюдится ко всем страницам)

2)

Когда я вызываю "картинку" img.php (через img src), то переменные не передаются. Разумеется я там писал session_start(), но это ничего не дает. Иначе я бы не писал сюда.

3) Куки включены. Может быть дело в том, что я обращаюсь к сайту
как

http://localhost/...

?

передавать цифру по $_GET - это маразм

Я не "цифру" передавал, а session_id(), иначе смысла во всей этой противороботной "требухе" нет.


и напоследок phpfaq.ru - выучи там все наизусть

Чувствую, что скоро выучу :(
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33684496
Alexxx2783
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В code.php напиши

Session_start();
phpinfo(32);

затем просто его открой в браузере и посмотри на свои переменные

Про HEADER(content img) не забыл???
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33684498
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
phpfaq.ru/session
phpfaq.ru/debug
этого для данного случая более, чем достаточно.
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33684535
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexxx2783В code.php напиши

Session_start();
phpinfo(32);



В понедельник буду смотреть, завтра работать - грех :)

Alexxx2783
затем просто его открой в браузере и посмотри на свои переменные

Про HEADER(content img) не забыл???

Скрипт практически без изменений стащен с

http://subscribe.ru/archive/comp.soft.prog.webphp/200502/13135500.html

(заголовок "Генератор картинок со случайным числом")

вот хидеры оттуда

Код: plaintext
1.
2.
3.
4.
5.
6.
Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");

header("Content-type: image/png");


*

phpfaq.ru/session
phpfaq.ru/debug
этого для данного случая более, чем достаточно.



phpfaq.ru/session - по ночам уже снится...


2 ALL

Так я не понял: _однозначно_ достаточно добавить в файл "картинка.php"

session_start()

и все должно работать? И у всех все работает, только у меня в чем-то проблема?
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33684780
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
dc93Скрипт практически без изменений стащен с

http://subscribe.ru/archive/comp.soft.prog.webphp/200502/13135500.htmlМожет хватит уже морочить нам голову? Хотя дело ваше - в любом случае, телепатов тут никогда не водилось.
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33684797
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* dc93Скрипт практически без изменений стащен с

http://subscribe.ru/archive/comp.soft.prog.webphp/200502/13135500.htmlМожет хватит уже морочить нам голову? Хотя дело ваше - в любом случае, телепатов тут никогда не водилось.

Не понял.

Ежели лень заглянуть по ссылке, то вот скрипт оттуда:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
<?php 

$img_x          =  80 ;   //Ширина изображения, по умолчанию- 100 
$img_y          =  26 ;   //Высота изображения, по умолчанию- 30 
$num_n          =  5 ;    //Число цифр, default- 4 
$font_min_size  =  12 ;   //Минимальный размер шрифта, по умолчанию- 12 
$lines_n_max    =  1 ;    //Максимальное число шумовых линий, по умолчанию- 2 
$nois_percent   =  4 ;    //Зашумленность цветами фона и текста, в процентах, по умолчанию- 3 
$angle_max      =  18 ;   //Максимальный угол отклонения от горизонтали по часовой стрелке и против, по умолчанию- 20 

$font_arr=glob(dirname(__FILE__)."/fonts/*.ttf");

$im=imagecreate($img_x, $img_y);
//создаем необходимые цвета
$text_color = imagecolorallocate($im,  0 ,  0 ,  0 );       //цвет текста
$nois_color = imagecolorallocate($im,  0 ,  0 ,  0 );       //цвет зашумляющих точек и линий
$img_color  = imagecolorallocate($im,  255 ,  255 ,  255 ); //цвет фона
//заливаем изображение фоновым цветом
imagefill($im,  0 ,  0 , $img_color);
//В переменной $number будет храниться число, показанное на изображении
$number='';

for ($n= 0 ; $n<$num_n; $n++){
    $num=rand( 0 , 9 );
    $number.=$num;
    $font_size=rand($font_min_size, $img_y/ 2 );
    $angle=rand( 360 -$angle_max, 360 +$angle_max);

    $font_cur=rand( 0 ,count($font_arr)- 1 );
    $font_cur=$font_arr[$font_cur];
    //вычисление координат для каждой цифры, формулы обеспечивают нормальное расположние
    //при любых значениях размеров цифры и изображения
    $y=rand(($img_y-$font_size)/ 4 +$font_size, ($img_y-$font_size)/ 2 +$font_size);

    $x=rand(($img_x/$num_n-$font_size)/ 2 , $img_x/$num_n-$font_size)+$n*$img_x/$num_n;

    imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_cur, $num);
};
//Вычисляем число "зашумленных" пикселов
$nois_n_pix=round($img_x*$img_y*$nois_percent/ 100 );
//зашумляем изображение пикселами цвета текста
for ($n= 0 ; $n<$nois_n_pix; $n++){
    $x=rand( 0 , $img_x);
    $y=rand( 0 , $img_y);
    imagesetpixel($im, $x, $y, $nois_color);
};
//зашумляем изображение пикселами фонового цвета
for ($n= 0 ; $n<$nois_n_pix; $n++){
    $x=rand( 0 , $img_x);
    $y=rand( 0 , $img_y);
    imagesetpixel($im, $x, $y, $img_color);
};

$lines_n=rand( 0 ,$lines_n_max);
//проводим "зашумляющие" линии цвета текста
for ($n= 0 ; $n<$lines_n; $n++){
    $x1=rand( 0 , $img_x);
    $y1=rand( 0 , $img_y);
    $x2=rand( 0 , $img_x);
    $y2=rand( 0 , $img_y);
    imageline($im, $x1, $y1, $x2, $y2, $nois_color);
};

Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");

header("Content-type: image/png");
imagepng($im);
imagedestroy($im);

//В переменной $number хранится число, показанное на изображении

?> 



Вот скрипт с моими изменениями



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
<?php 

# [DC]
session_start(); 

$img_x          =  80 ;   //Ширина изображения, по умолчанию- 100 
$img_y          =  26 ;   //Высота изображения, по умолчанию- 30 
$num_n          =  5 ;    //Число цифр, default- 4 
$font_min_size  =  12 ;   //Минимальный размер шрифта, по умолчанию- 12 
$lines_n_max    =  1 ;    //Максимальное число шумовых линий, по умолчанию- 2 
$nois_percent   =  4 ;    //Зашумленность цветами фона и текста, в процентах, по умолчанию- 3 
$angle_max      =  18 ;   //Максимальный угол отклонения от горизонтали по часовой стрелке и против, по умолчанию- 20 

$font_arr=glob(dirname(__FILE__)."/fonts/*.ttf");

$im=imagecreate($img_x, $img_y);
//создаем необходимые цвета
$text_color = imagecolorallocate($im,  0 ,  0 ,  0 );       //цвет текста
$nois_color = imagecolorallocate($im,  0 ,  0 ,  0 );       //цвет зашумляющих точек и линий
$img_color  = imagecolorallocate($im,  255 ,  255 ,  255 ); //цвет фона
//заливаем изображение фоновым цветом
imagefill($im,  0 ,  0 , $img_color);
//В переменной $number будет храниться число, показанное на изображении
$number='';

for ($n= 0 ; $n<$num_n; $n++){
    $num=rand( 0 , 9 );
    $number.=$num;
    $font_size=rand($font_min_size, $img_y/ 2 );
    $angle=rand( 360 -$angle_max, 360 +$angle_max);

    $font_cur=rand( 0 ,count($font_arr)- 1 );
    $font_cur=$font_arr[$font_cur];
    //вычисление координат для каждой цифры, формулы обеспечивают нормальное расположние
    //при любых значениях размеров цифры и изображения
    $y=rand(($img_y-$font_size)/ 4 +$font_size, ($img_y-$font_size)/ 2 +$font_size);

    $x=rand(($img_x/$num_n-$font_size)/ 2 , $img_x/$num_n-$font_size)+$n*$img_x/$num_n;
# [DC]     imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_cur, $num);

    imagettftext($im, $font_size, $angle, $x, $y, $text_color, 'font.ttf', $num);
};
//Вычисляем число "зашумленных" пикселов
$nois_n_pix=round($img_x*$img_y*$nois_percent/ 100 );
//зашумляем изображение пикселами цвета текста
for ($n= 0 ; $n<$nois_n_pix; $n++){
    $x=rand( 0 , $img_x);
    $y=rand( 0 , $img_y);
    imagesetpixel($im, $x, $y, $nois_color);
};
//зашумляем изображение пикселами фонового цвета
for ($n= 0 ; $n<$nois_n_pix; $n++){
    $x=rand( 0 , $img_x);
    $y=rand( 0 , $img_y);
    imagesetpixel($im, $x, $y, $img_color);
};

$lines_n=rand( 0 ,$lines_n_max);
//проводим "зашумляющие" линии цвета текста
for ($n= 0 ; $n<$lines_n; $n++){
    $x1=rand( 0 , $img_x);
    $y1=rand( 0 , $img_y);
    $x2=rand( 0 , $img_x);
    $y2=rand( 0 , $img_y);
    imageline($im, $x1, $y1, $x2, $y2, $nois_color);
};

Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");

header("Content-type: image/png");
imagepng($im);
imagedestroy($im);

//В переменной $number хранится число, показанное на изображении
# [DC]
$_SESSION['number'] = $number;


?> 

в "вызывающем" файле присутствует
session_start();

echo $_SESSION['number'];

выводит null.


$_SESSION['number'] = $number; вставлял в разные места файла (мало ли как там себя imagedestroy($im); ведет или задание хидеров...) не помогало.
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33685870
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexxx2783В code.php напиши

Session_start();
phpinfo(32);

затем просто его открой в браузере и посмотри на свои переменные

Про HEADER(content img) не забыл???

собственно phpinfo:


PHP Variables
Variable Value
_REQUEST["PHPSESSID"] ho70mc42n8cg8bo86pmci6pvk0
_COOKIE["PHPSESSID"] ho70mc42n8cg8bo86pmci6pvk0
_SERVER["COMSPEC"] C:\WINDOWS\system32\cmd.exe
_SERVER["DOCUMENT_ROOT"] c:/temp/php
_SERVER["HTTP_ACCEPT"] image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
_SERVER["HTTP_ACCEPT_ENCODING"] gzip, deflate
_SERVER["HTTP_ACCEPT_LANGUAGE"] ru
_SERVER["HTTP_CONNECTION"] Keep-Alive
_SERVER["HTTP_COOKIE"] PHPSESSID=ho70mc42n8cg8bo86pmci6pvk0
_SERVER["HTTP_HOST"] xxx.xxx.xxx.xxx
_SERVER["HTTP_UA_CPU"] x86
_SERVER["HTTP_USER_AGENT"] Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
_SERVER["PATH"] C:\Inprise\vbroker\bin;C:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl;C:\PROGRA~1\Borland\CBUILD~1\Bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:\Program Files\MySQL\MySQL Server 5.0\bin;c:\php\;
_SERVER["REMOTE_ADDR"] xxx.xxx.xxx.xxx
_SERVER["REMOTE_PORT"] 1418
_SERVER["SCRIPT_FILENAME"] c:/temp/php/test09.php
_SERVER["SERVER_ADDR"] xxx.xxx.xxx.xxx
_SERVER["SERVER_ADMIN"] mole@blabla.ru
_SERVER["SERVER_NAME"] mole.blabla.ru
_SERVER["SERVER_PORT"] 80
_SERVER["SERVER_SIGNATURE"] <ADDRESS>Apache/1.3.20 Server at mole.reksoft.ru Port 80</ADDRESS>
_SERVER["SERVER_SOFTWARE"] Apache/1.3.20 (Win32) PHP/5.0.1
_SERVER["SystemRoot"] C:\WINDOWS
_SERVER["WINDIR"] C:\WINDOWS
_SERVER["GATEWAY_INTERFACE"] CGI/1.1
_SERVER["SERVER_PROTOCOL"] HTTP/1.1
_SERVER["REQUEST_METHOD"] GET
_SERVER["QUERY_STRING"] no value
_SERVER["REQUEST_URI"] /test09.php
_SERVER["SCRIPT_NAME"] /test09.php
_SERVER["PATH_TRANSLATED"] c:/temp/php/test09.php
_SERVER["PHP_SELF"] /test09.php
_ENV["ALLUSERSPROFILE"] C:\Documents and Settings\All Users
_ENV["ClusterLog"] C:\WINDOWS\Cluster\cluster.log
_ENV["CommonProgramFiles"] C:\Program Files\Common Files
_ENV["COMPUTERNAME"] MOLE
_ENV["ComSpec"] C:\WINDOWS\system32\cmd.exe
_ENV["FP_NO_HOST_CHECK"] NO
_ENV["NUMBER_OF_PROCESSORS"] 2
_ENV["OS"] Windows_NT
_ENV["Path"] C:\Inprise\vbroker\bin;C:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl;C:\PROGRA~1\Borland\CBUILD~1\Bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:\Program Files\MySQL\MySQL Server 5.0\bin;c:\php\;
_ENV["PATHEXT"] .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
_ENV["PROCESSOR_ARCHITECTURE"] x86
_ENV["PROCESSOR_IDENTIFIER"] x86 Family 15 Model 2 Stepping 5, GenuineIntel
_ENV["PROCESSOR_LEVEL"] 15
_ENV["PROCESSOR_REVISION"] 0205
_ENV["ProgramFiles"] C:\Program Files
_ENV["SystemDrive"] C:
_ENV["SystemRoot"] C:\WINDOWS
_ENV["TEMP"] C:\WINDOWS\TEMP
_ENV["TMP"] C:\WINDOWS\TEMP
_ENV["USERPROFILE"] C:\Documents and Settings\Default User
_ENV["windir"] C:\WINDOWS


IP адрес забит xxx.xxx.xxx.xxx, он везде одинаковый
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33686561
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, разобрался...
сам дурак

когда прочитал в 200й раз phpfaq.ru/session, понял, что _сначала_ формируется страница, а _потом_ картинка, соответственно вся моя отладочная печать и отладочные установки шли лесом...

Слегка напрягает то, что сам файл с куками не создается :(, но все работает :)
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33687042
VERS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dc93Слегка напрягает то, что сам файл с куками не создается :(, но все работает :)
IE хранит сессионные куки в памяти
...
Рейтинг: 0 / 0
(PHP) Не взводится сессионная переменная при вызове php как картинки
    #33687302
dc93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VERS
IE хранит сессионные куки в памяти

Понял, спасибо.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Не взводится сессионная переменная при вызове php как картинки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]