передача переменных $_SESSION

Статус
В этой теме нельзя размещать новые ответы.

alexblade

Новичок
передача переменных $_SESSION

имеется и работает такой код>
1.php
PHP:
session_start();
[начало проверки данных из формы ниже]
if ($_POST['submit']){
if ($_POST['code'] <> $_SESSION['icode']) ...
...}
[конец проверки]
...
[начало формы]
...
<img align="top" src="2.php" alt="Код">
...
[конец формы]
2.php
PHP:
require_once("ImageCode.class.php");
$img_code = new SecurityImage();
$img_code->create();
session_start();
$_SESSION['icode'] = $img_code->code;
$img_code->output_gif();
в даном случае из файла 2 легко записывается и потом читается в файле 1 переменная icode

но когда я добавляю в файл 2
$_SESSION['txt'] = 2;

а в файле 1 пытаюсь его прочитать
echo $_SESSION['txt'];

ничего не выходит :(

почему ?
 

alexblade

Новичок
что не так пишу ?
если 2.php вставляю через include то получается отобразить $_SESSION['txt'] но в исходном коде без инклюд както же получается записать
$_SESSION['icode'] и потом его сравнить..

если я пытаюсь отобразить $_SESSION['icode'] которые успешно сохраняется в сесиях то мне почемуто всегда показывает предыдущий код . т.е. на картинке 1234, делаю рефреш страницы на рисунке 4321 а echo $_SESSION['icode'] выводит 1234.

phpinfo(32); вообще не выводит переменных сессий...

где копать ?
 

dimagolov

Новичок
если я пытаюсь отобразить $_SESSION['icode'] которые успешно сохраняется в сесиях то мне почемуто всегда показывает предыдущий код
очевидно, что вывод $_SESSION['icode'] происходит ДО его изменения
 

alexblade

Новичок
dimagolov
выводить $_SESSION['icode'] пробую после <img align="top" src="2.php" alt="Код"> т.е. когда отображение файл 2 было и он обработался и $_SESSION['icode'] присвоелось значение (которое собственно и на картинке)..

однако почему то выводится предыдущее значение :\

причем echo $_SESSION['icode'] чтото показывает только если закоментировать unset($_SESSION['icode']) в блоке проверки данных из формы
 

dimagolov

Новичок
причем echo $_SESSION['icode'] чтото показывает только если закоментировать unset($_SESSION['icode']) в блоке проверки данных из формы
ты вообще понимаешь что делает unset($_SESSION['icode'])? и какая может быть связь с отображением и комментированием этой строчки?
 

alexblade

Новичок
как бы да, но отображать icode я пытаюсь после того как в файле 2 (после ансета) присваивается значение icode.

где я не так понимаю ?

т.е. последовательность кода следущая
1 - ансет
2 - присвоение
3 - отоброжение
 

alexblade

Новичок
*****
как бы читал и не раз. а что вас так не устраивает в этом куске кода ?

>браузер шлет запрос на картинку 2.php
<сервер обработав файл 2 (файл 2 везде выше я называю 2.php) посылает эту самую картинку (а во время обработки также записывает глобальную переменую icode в сесию на сервере)
<позже в коде сервер получает команду на отображение переменой из сесии в которую сервер раньше и записал эту переменую

и даже если убрать то что я пытаюсь выводить то в блоке проверки данных из формы, скрипт удачно проверяет переменую из сессии в которую он записал ранее при обращении браузера к 2.php

если я чтото недопонимаю так подскажите за помощью и пришол (а так стебатся над теми кто пришол за помощью и менее професионален в области Х много ума не надо)
 

alexblade

Новичок
Ф. мы в клубе что , где, когда ?

где я непонимаю ?

то что я хочю:
>браузер шлет запрос на картинку 2.php
<сервер обработав файл 2 (файл 2 везде выше я называю 2.php) посылает эту самую картинку (а во время обработки также записывает глобальную переменую icode в сесию на сервере)
<позже в коде сервер получает команду на отображение переменой из сесии в которую сервер раньше и записал эту переменую

то что есть и работает:
>браузер шлет запрос на картинку 2.php
<сервер обработав файл 2 (файл 2 везде выше я называю 2.php) посылает эту самую картинку (а во время обработки также записывает глобальную переменую icode в сесию на сервере)
<после сабмита формы , скрипт проверяет ранее записаную в сесию переменую при обработке файла 2 с тем что вводит юзер. и ниже вновь записывает в сесию уже новое значение этой переменной
 

dimagolov

Новичок
ты понимаешь, что проверка должна происходить ТОЛЬКО тогда, когда есть и не пустые $_POST['code'] и $_SESSION['icode']? во всех остальных случаях значение $_SESSION['icode'] не имеет смысла?

ты понимаешь, что когда форма формируется PHP, то картинка, которая на этой форме будет отображена, еще не была запрошена, а раз так, $_SESSION['icode'] не может содержать того, что будет показано на картинке?
 

alexblade

Новичок
насчет проверки она так и происходит как вы говорите когда $_POST['code'] не пустой в противном случае сообщение об ошибке. a проверяются данные формы после сабмита формы. с этим все ок. (подправил первый пост)

насчет формирования формы PHP. если я правильно вас понял -> браузер щлет запрос на картинку но не дожидаясь картинки (и соответственно результатов занесения переменных в сессию) получает остальной код формы включая echo $_SESSION['icode'] но icode все еще нету в сесии (поэтому на экране пусто) .
т.е. обработка 2.php и занесение переменной в сессию длится на столько долго что мы раньше получаем весь код страницы 1.php а вместе с ней все данные какие успел передать сервер для неё ?
 

alexblade

Новичок
nexen
пожалуйста, чего ради? я пришол сюда за помощью. хочешь помочь - помоги, а принудительно читать
эту ветку не заставляют.
 

Фанат

oncle terrible
Команда форума
http://phpfaq.ru/na_tanke

alexblade, процитируй, пожалуйста, из текста по ссылке место, которое, как тебе кажется, относится к твоему вопросу.
 

alexblade

Новичок
2ой параграф с 15ой строчки....

то что браузер вначале получает страницу и только потом запрашивает картинку, я понял, спасибо.

но вот какой момент я пытаюсь уяснить для себя (помним о многопоточности),
ведь не раз можно наблюдать картину когда страница (сложная\большая) ДО КОНЦА не поступила браузеру. но уже в первых поступивших кусках кода обрабатываются ссылки и ЗАГРУЖАЮТСЯ картинки, благодоря многопоточности.

или я не прав и картинки запрашиваются браузером с сервера ТОЛЬКО после того как браузер принял </html> ?
 

dimagolov

Новичок
alexblade, тебе без разницы в каком порядке запрашивается у тебя картинка. для тебя главное, что странице (в скрипте, который ее генерирует), на которой она отображается пользователю НЕТ НУЖДЫ знать что там отобразится на картинке. про это надо знать, когда пользователь пошлет код на проверку. а сделает он это ПОСЛЕ того, как картинка отобразится.
 

alexblade

Новичок
спасибо.
очевидно что расчитывать на многопоточность и своевременость подгрузки залинкованных файлов не стоит. если один раз и сработает то не даёт 100% гарантии. в основе своей всё залинкованое приходит позже. понял. вопрос в первоночальном контексте отпадает. данкешон. ;)
 

Фанат

oncle terrible
Команда форума
как чувак грамотно все свел на многопоточность.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху