[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ералаш в голове
mapsitna
Я неопытен в программировании PHP. Чаще всего пишу код, обложившись литературой. В настоящий момент написал некий код, связанный с Сессиями, который работает, хотя согласно моему пониманию Сессий работать не должен. Оттого в голове сумятица. Помогите разобраться!

Итак, имеется страница (файл 01.php) с формой, данные которой посылаются обработчику (02.php), который в свою очередь после обработки возвращает управление странице (01.php). Кроме данных формы файл-обработчик получает некоторые данные посредством сессионных переменных. Как известно, присвоения сессионным переменным должны состояться до того, как на этой странице появится хоть какой-либо вывод в браузер html-кода. По-моему мнению, я нарушил этот запрет, но, тем не менее, сессионные переменные передаются. Как реалист, я понимаю, что ничего не нарушал, но мои глаза уверяют меня в обратном. В чём я ошибаюсь?

Схема кода страницы (1). (файл 01.php).

1.
PHP
require_once("file1.php ");   // здесь присоединяется описание php-функции func(параметры), в которой сначала расписаны присвоения сессионным переменным, 
а затем  написан вывод html-


2.
PHP
require_once("file2.php ");   // здесь присоединяется (а значит, выводится) html-код.


3.
PHP
func(...); // здесь вызывается функция, чьё описание в file1.php


Я вижу, что во 2-м пункте добавляется php-код с выводом html-кода, а далее следует вызов функции, в которой идёт присвоение сессионным переменным. Отчего тогда всё работает?



Спустя 19 минут, 7 секунд (6.10.2009 - 17:33) glock18 написал(а):
Цитата
Как известно, присвоения сессионным переменным должны состояться до того, как на этой странице появится хоть какой-либо вывод в браузер html-кода


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

После того, как сессия уже начата (сессионная кука отправлена), переменные в сессию назначать можно в любой момент.

Спустя 3 часа, 28 минут, 36 секунд (6.10.2009 - 21:02) mapsitna написал(а):
to glock18

Для меня смысл ещё остался тёмен. А можно Вас попросить на моём примере изобразить наглядную хронологическую раскладку (протокол) обменных операций "клиент-сервер", отражающую эту тонкость с куками, сессией, её переменными. Типа:

1. (загрузка формы)
Клиент делает запрос серверу на получение страницы 01.php => Сервер....
=> ... => ... => сессионные переменные получают значения => ... => ...

2. (обработка формы)
Клиент нажимает Submit формы => ... => ...

Буквально слёзная просьба. Для срочного дела нужно. Чувствую, что всё просто, но как честный ламер никак не словлю мысль за хвост. Не понимаю процесс в подробностях.

Спустя 21 минута, 56 секунд (6.10.2009 - 21:24) glock18 написал(а):
mapsitna
что конкретно непонятно? там и отображать то нечего. и нет такого этапа "сессионные переменные получают значения". я же сказал, что их хоть когда можно назначать, если сессию уже открыли (session_start). так вот прям все расписывать долго и муторно. если есть какой-то пример того, что непонятно, киньте цитату сюда, я посмотрю и попробую объяснить.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.