[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: $_SESSION admin
rma765
Вопрос задавался на форуме опенкарта, но там у людей явно проблемы с мат.частью, кроме опенкарта они ничего не хотят видеть. Привожу первое сообщение с той переписки с сохранением специфики опенкарт, но суть вопроса в сессиях:
Цитата
Вопрос у меня странный, ситуация нонсенс. Вопрос: как получается, что переменная $_SESSION в папке /admin/ имеет одни значения, а в корне сайта и в любой другой папке сайта - другие.
Вот такой вопрос. На сколько я знаю, такого чтобы $_SESSION была в одном домене и имела разные значения в разных папках - такого быть не должно. Но по факту это происходит. Почему?
Мне вообще это надо для того чтобы узнать user id админа. Даже есть тема http://www.opencart60s.com/opencart/-solve...-end-40377.html в которой даётся рецепт который подразумевает что с $_SESSION никаких чудес нет. Но у меня даже этот рецепт не работает, естественно, потому что в сессии фрондэнда нет этого user id. Вообщем вопрос к самым самым...
Вот ссылка на тот форум: https://opencartforum.com/topic/36075-session-admin/
Добавлю только что в опенкарте админка расположена в папке /admin/ по этому я думаю её как-то настроили из-за чего значения сессии в ней стали как бы сами по себе независимыми от всего остального сайта. Понимаю что это бред, но по факту так происходит, по крайней мере у меня.
Подскажите хороший англоязычный форум по php.
bestxp
Могло такое быть если переопределены были бы условия хранения сессии , в рамках движка легко, но в рамках каталогов уже интереснее, может быть у тебя что-то перенастроено, либо что-то в .htaccess прописано, но что-то я не могу представить ситуацию такого поведения.

ты точно в обоих случаях только к этому файлу обращался?
Там точно помимо него ничего больше не подгружается? Например favicon еще который потом вдруг отрабатывает как 404 и цепляются лишние файлы и поэтому у тебя ответ такой
rma765
Похоже нашлось. Из /admin/ убрал файл /admin/php.ini и о чудо, теперь при открытии /admin/test.php выдаёт тоже самое что при открытии /test.php. Если вернуть файл /admin/php.ini на место, то снова /admin/test.php выдаёт другие данные.
Содержимое /admin/php.ini:

magic_quotes_gpc = Off;
register_globals = Off;
default_charset = UTF-8;
memory_limit = 64M;
max_execution_time = 18000;
upload_max_filesize = 999M;
safe_mode = Off;
mysql.connect_timeout = 20;
session.use_cookies = On;
session.use_trans_sid = Off;
session.gc_maxlifetime = 12000000;
allow_url_fopen = on;

Какая здесь используется магия?
rma765
Оказывается если файл /admin/php.ini сделать пустым, то сессия всё-равно в /admin/ "своя", чтобы сессия стала "общей", помогает только удаление файла /admin/php.ini.
А теперь внимание! Если перенести /admin/php.ini в /php.ini, то переменные сессии админки появляются во всех папках сайта. Тоже самое будет, если не переносить, а скопировать /admin/php.ini в /php.ini.
А теперь вообще чума!
user posted image
Если оставить файл /admin/php.ini как есть и создать пустой файл /php.ini, то переменные сессии админки так-же появляются во всех папках сайта.
Похоже это баг PHP, у меня: PHP Version 5.3.3. Потому что ну нахрена так делать? Не вижу в этом технологической необходимости, а значит баг. Немного поискал в гугле, ничего на эту тему нет.
Писать в https://bugs.php.net/ ?
bestxp
.htaccess может какая магия есть ?
Oyeme
Очень класный вывод,если это работает не так как я хочу - То это bug php! biggrin.gif

Пройдите методом steb by step и убедитесь что в 100% это ошибка в системе.
rma765
Цитата
Очень класный вывод,если это работает не так как я хочу - То это bug php! biggrin.gif

Это сарказм? Неужели... Похоже ты прав.
user posted image

Это не баг PHP. Просто я не привык пользоваться PHP в режиме CGI/FastCGI, так-как везде в основном использую PHP в режиме Apache 2.0 Handler, а php.ini текущей дирректории доступен только в режиме CGI/FastCGI, для Apache режима есть .htaccess со своими php флагами. Дело в том, что php.ini текущей дирректории это совсем не тоже самое что .htaccess. В htaccess происходит исправление базовой конфигурации php.ini, которая грузиться несмотря ни на что. А в php.ini тек.дирректории происходит конфигурирование всего PHP, по этому если какого-то парраметра в нём нет, то устанавливается то, которое определено в PHP по умолчанию. Естественно парраметр session.save_path, который отвечает за переменные сессии, по умолчанию пустой, по этому переменные сессии в дирректории с php.ini отличались, так-как сессия этой дирректории сохранялась где-то в другом месте, отличном от того, который явно указан в главном php.ini данного сервера, а ведь все другие дирректории без файла php.ini использовали для сессий именно тот путь, который указан в главном php.ini.
Быстрый ответ:

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