[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Глюк PHP при работе с сессиями
Suspended
Простейший код
<?php
session_start();

$_SESSION['some_var_name'] = '123';

$some_var_name = 'oh shit!!!';

echo $_SESSION['some_var_name'];
?>

При первом запуске из браузера выдаёт 123, а при втором и последующих - oh shit!!!
Я уже не знаю что делать... версия пыха была 5.2.10, стала 5.2.11, не помогло. отключил Register_globals в php.ini - не помогло. Что ещё может быть?



Спустя 21 минута, 16 секунд (22.12.2009 - 16:54) inpost написал(а):
У меня сессии включаются при переходе из страницы на страницу.
К примеру: в контактах нажал отправить письмо: переход на страницу обработчик, там создается сессия, потом редирект на контакты, там сессия работает!
Если использовать аякс, то вид такой: страница передаёт POST на обработчик, в обработчике активируется Сессия, после возвращается на страницу параменты, я проверяю сессию - она пустая, активируется после перезагрузки страницы, хотя может быть я проверку как-то не правильно делал,так что поправьте, профессионалы!!!

Хотя лично твой код я не совсем понял, зачем такое надо, может пример покажешь, где использовать? smile.gif

Спустя 11 минут, 38 секунд (22.12.2009 - 17:05) waldicom написал(а):
Цитата (Suspended @ 22.12.2009 - 15:32)
отключил Register_globals в php.ini - не помогло. Что ещё может быть?

Апач (вебсервер) после этого перегружали?

Спустя 45 минут, 49 секунд (22.12.2009 - 17:51) Suspended написал(а):
Цитата (waldicom @ 22.12.2009 - 14:05)
Цитата (Suspended @ 22.12.2009 - 15:32)
отключил Register_globals в php.ini - не помогло. Что ещё может быть?

Апач (вебсервер) после этого перегружали?

Хм.. никогда после измнения конфига не перезапускал апач.. ну чтож, попробую

Спустя 2 минуты, 29 секунд (22.12.2009 - 17:54) Suspended написал(а):
Кроме register_globals есть какие-либо предположения?
Какая версия пыха заведомо не содержит этой баги? 5.3 к сожалению не подойдёт, несовместимость с какими-то другими проектами.

Спустя 6 минут, 28 секунд (22.12.2009 - 18:00) krasilich написал(а):
У меня 5.2.10 скопировал твой код - работает как нужно. так что, извини, но не в php проблема.

mod_php или fastcgi?

Спустя 16 минут, 22 секунды (22.12.2009 - 18:16) Suspended написал(а):
mod_php5 написано, в phpinfo больше ничего не нашёл..

короче, после ребута сервера, это прошло. странно... но rergister_globals не должен так себя вести..

Спустя 12 минут, 14 секунд (22.12.2009 - 18:29) waldicom написал(а):
Цитата (Suspended @ 22.12.2009 - 17:16)
короче, после ребута сервера, это прошло. странно... но rergister_globals не должен так себя вести..

Почему странно и почему не должен так себя вести? Все верно, как я и предполагал

Спустя 7 минут, 4 секунды (22.12.2009 - 18:36) Suspended написал(а):
Цитата (waldicom @ 22.12.2009 - 15:29)
Почему странно и почему не должен так себя вести? Все верно, как я и предполагал

Ок, поясните пожалуйста, каким образом скрипт исполнялся именно с таким выводом?
123 и затем всегда oh shit?

Спустя 31 минута, 29 секунд (22.12.2009 - 19:07) waldicom написал(а):
Вопросом на вопрос отвечать не совсем как бы принято...
А ответ лежит на поверхности, Вы просто поймите как работают сессии, и будет все понятно.

Спустя 5 минут, 6 секунд (22.12.2009 - 19:12) Suspended написал(а):
Возможно для вас на поверхности. Поясните пожалуйста, как такое происходит в данном скрипте.

Спустя 22 минуты, 9 секунд (22.12.2009 - 19:34) waldicom написал(а):
Просто необходимо вспомнить, что при включенных "register_globals", переменные беруться не только из POST и GET, но также помимо прочего и из кук и из сессий.
Второй факт: где хранятся переменные сесиии?
Из этого получаем ответ.

Спустя 16 минут, 3 секунды (22.12.2009 - 19:50) Suspended написал(а):
Цитата (waldicom @ 22.12.2009 - 16:34)
Просто необходимо вспомнить, что при включенных "register_globals", переменные беруться не только из POST и GET, но также помимо прочего и из кук и из сессий.
Второй факт: где хранятся переменные сесиии?
Из этого получаем ответ.

в COOKIE у нас хранится PHPSESSID, который и не изменяется. Переменные сессии хранятся на стороне сервера, загружаются в массив _SESSION при инициализации сессии.
тем более, пусть переменные сессии хранились бы где-то там в кукисах, и передавались бы нам. как изменение глобальных (или какони там зовутся) переменных может влять на массивы cookies, session и иже с ними? там вроде экспорт идёт лишь ИЗ них.

Спустя 18 минут, 22 секунды (22.12.2009 - 20:09) Niklao написал(а):
люди, простите, понимаю, что влезаю в чужой разговор, но мне нужно, просто край уже и очень срочно! Модераторы, умоляю, пощадите, не баньте! А ситуация у меня такая. Я присваиваю данные глобальному массиву на одной странице и никак не могу получить их на другой. Не понимаю причин, по которым не ведётся передача данных при помощи глобальных массивов и сессий. Подскажите, пожалуйста, Часто встречающиеся проблемы при передаче. А то у меня уже руки опускаются, осталось только плакать, а работа горит синим пламенем....HELP!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Спустя 3 минуты, 44 секунды (22.12.2009 - 20:13) VolCh написал(а):
Экспорта не идёт, переменные из массивов регистрируются как глобальные, другими словами $_COOKIE['username'] и $username указывают на одну и ту же область памяти.

Насчёт того, что сессии регистрируются - действительно странно, по описанию не должны.

После изменений в php.ini в случае подключения PHP как модуля апача или FastCGI апач или сам PHP надо перезапускать всегда, не нужно только если PHP стоит как CGI

Спустя 1 минута, 51 секунда (22.12.2009 - 20:14) VolCh написал(а):
Niklao глобальный массив существует только во время работы скрипта, то есть на одной странице. если нужно передавать данные между страницами пользуются сессиями

Спустя 51 секунда (22.12.2009 - 20:15) waldicom написал(а):
Цитата (Suspended @ 22.12.2009 - 18:50)

в COOKIE у нас хранится PHPSESSID, который и не изменяется. Переменные сессии хранятся на стороне сервера, загружаются в массив _SESSION при инициализации сессии.
тем более, пусть переменные сессии хранились бы где-то там в кукисах, и передавались бы нам. как изменение глобальных (или какони там зовутся) переменных может влять на массивы cookies, session и иже с ними? там вроде экспорт идёт лишь ИЗ них.

Блин... Делаем так:
1. удаляем все сессии с сервера и куки на клиенте.
2. Запускаем скрипт в первый раз.
3. Смотрим на клиенте айди сессии и по этому айди смотри на сервере в саму сессию
4. Запускаем скрипт второй раз.
5. Опять смотрим на сервер в файлик сессии и анализируем.

После этого думаем...
И вообще пишем скрипты без надежды на "register_globals"

Спустя 4 минуты, 18 секунд (22.12.2009 - 20:20) Suspended написал(а):
> $_COOKIE['username'] и $username указывают на одну и ту же область памяти.
А, спасибо что сказали. я думал там копирование (клонирование) идёт.

> Насчёт того, что сессии регистрируются - действительно странно, по описанию не должны.
Да, неприятная фича. И главное включается лишь после второго раза, когда иницилизированные переменные сессии "посылаются".

Спустя 4 минуты, 7 секунд (22.12.2009 - 20:24) Suspended написал(а):
> После этого думаем...
У вас, я так понимаю, всё ещё "всё на поверхности".

Спустя 28 минут, 55 секунд (22.12.2009 - 20:53) waldicom написал(а):
Цитата (Suspended @ 22.12.2009 - 19:24)
> После этого думаем...
У вас, я так понимаю, всё ещё "всё на поверхности".

Хм... Понимайте как будет угодно...
Быстрый ответ:

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