| |
|
|
| | Вот запись сессии
param1|i:0;param2|a:0:{}
Регистрирую новую переменную
session_register('param3);
$_SESSION['param3'] = 1;
|
Смотрим запись сессии
param1|i:0;param2|a:0:{}param3|i:1;
В записи отсутсвует разделитель ;
В работе кода, регистрирещего в сессии param3, есть ошибка.
Apach при выводе инфы об ошибке упоминает так же PHP-код
в котором обрабатывется param2.
Куда есчез разделитель? Почему? | |
| |
|
|
| |
|
|
| |
для: sim5
(30.12.2006 в 14:32)
| | | Что хранится в param2? | |
| |
|
|
| |
|
|
| |
для: cheops
(30.12.2006 в 15:18)
| | | Может быть так, если установлено
param2|a:1:{i:279;i:1;} | |
| |
|
|
| |
|
|
| |
для: sim5
(30.12.2006 в 15:25)
| | | Нет, имеется в виду изначально? Дело в том, что результирующая строка в файле-сессии появляется в результате серилизации массива $_SESSION при помощи функции serialize(). Проблемы такого толка обычно возникают, если в сессию помещают результат серилизации, так как серилизовать уже серилизованную строку, как правило, корректно не удаётся. | |
| |
|
|
| |
|
|
| |
для: cheops
(30.12.2006 в 16:48)
| | | param2 (в фигурных скобках) содержит данные переданные из формы, если передачи нет то param2{} (в фигурных скобках пусто). Повторного вызова serialize нет. В скрипт обрабатки param2, также передается еще параметр, назовем его например as. Так вот от прописывается после param2{}as, тоесть также без разделителя, нормально опознается и обрабатывается.
А вот в случае когда я регистрирую переменную (запись без разделителя), то Apach указвая при ошибке, указывает: старт начала переменной param2{} ну далее остальное, затем указывает имя файла скрипта, обрабатывающего этот параметр, и в конце имени после двоеточия цифру 2. Типа так name.php:2. | |
| |
|
|
| |
|
|
| |
для: sim5
(30.12.2006 в 17:09)
| | | Проверял отдельно - если в сессии присутствуют фигурные скобки, то разделитель после него ВСЕГДА отсутсвует.
Так в чем проблема? Вот что я получаю (сократил для удобства, назвав имена файлов скрипта именами перменных сессии):
Warning: Cannot modify header information - headers already sent by (output started at z:\home\new\www\includes\param2.php:2) in z:\home\new\www\includes\param3.php on line 10
В примере я писал сессию
param1|i:0;param2|a:0:{}param3|i:1;
Указывает ли (:2) на param3|i:1?
В param3.php есть три условия вывода. В одном из них с троке 10:
10 header("Location: index.php?send=1&namepost=".$name);
|
В шаблонах используется Smarty. Запрос к страницам происходит через передачу параметров в index.php. Аналогичный переход через заголовок есть и на другой странице (назовем ее условно param5.php;), и при его выполнении сессия будет выглядеть так (условно продолжая наименование):
param1|i:0;param2|a:0:{}param3|i:1;param4|i:1;param5|i:1;
Тоесть, запись после разделителя, и все работает, все передается, и происходит переход на требуемую страницу. Различия в кодах страниц - только именами переменных, в их числе, и разном содержании страниц. Почему же я получаю:
Warning: Cannot modify header information..... с указанием (для условности) на предыдущую страницу? | |
| |
|
|
| |
|
|
| |
для: sim5
(31.12.2006 в 07:32)
| | | Вы param2.php включаете в param3.php? Что находится на второй строке файла param2.php? | |
| |
|
|
| |
|
|
| |
для: cheops
(31.12.2006 в 13:32)
| | | а обязательно регестрировать сессию?
session_register('param3);
я просто сразу делаю
$_SESSION['test'] = 'значение'; | |
| |
|
|
| |
|
|
| |
для: skor
(31.12.2006 в 13:41)
| | | Да вы делаете всё правильно, session_register() - это устаревший способ. | |
| |
|
|
| |
|
|
| |
для: cheops
(31.12.2006 в 13:32)
| | | Вторая строка param2.php - это <? Скрипт pdram2.php в pdram3.php не подключается.
Нет :2 означает что-то другое. Может я просто зациклился на сессии, а причина в другом, но в чем, если код по сути одинаков в обеих случаях, а результат разный. И разницу я нашел только в записи сессии.
P.S. cheops даже отвечать не надо. Благодарю, все понял. Даже не понимаю о чем думал когда отвечал - у меня в двух сриптах, в начале пустые строки были (теперь знаю что такое :2). Это наверное от того что уже через три часа у нас наступит Новый год.
Позравляю всех с Новым годом - участников, посетителей и просто странников этого форума!
Всем успехов! | |
| |
|
|