Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переход на РНР5: ошибка с сессией, Выдаётся предупреждение 
:(
    Опции темы
w32blaster
  Дата 25.12.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.1.2006
Где: Tln/Slmae

Репутация: нет
Всего: нет



Здрасьте!
Значит, перешёл на РНР5 и после того, как пользователь вошёл, выдаётся следующее предупреждение:
Цитата

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Но в целом скрипт работает корректно. Можете помочь? Где косяк?

register_globals включён, проверял.

Спасибо!
PM MAIL WWW ICQ MSN   Вверх
WolfON
Дата 25.12.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 1
Всего: 8



Читается примерно так:
"Я хочу научиться писать красивый код и не использовать штуки вроде регистр_глобалс"
PM MAIL ICQ   Вверх
w32blaster
Дата 25.12.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.1.2006
Где: Tln/Slmae

Репутация: нет
Всего: нет



Ну может и так. Просто я где искал, не нашёл какой-либо инфы, что в четвёртой и пятой версиях по-разному реализуется механизм сессий. Иными словами: чего нельзя использовать в РНР5, чего можно использовать в РНР4  smile 
PM MAIL WWW ICQ MSN   Вверх
Endeveit
Дата 26.12.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 2.6.2006

Репутация: 1
Всего: 7



Есть предположение, что Вы делаете прямое присваивание глобальных переменных массиву данных сессии, нечто вроде такого:
Код
<?php
$_SESSION['var'] = $_REQUEST['var'];
попробуйте заменить на такой код:
Код
<?php
$var = $_REQUEST['var'];
$_SESSION['var'] = $var;
Предупреждение возникает в связи с исправлениями в системе безопасности PHP.
PM WWW   Вверх
PrivateRayan
Дата 26.12.2007, 15:25 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 26.12.2007

Репутация: нет
Всего: 2



Endeveit, это очень смешное предложение.

w32blaster, имена ключей в массиве $_SESSION не должны совпадать с именами переменных в скрипте.

А отличий в механизме сессий между 4 и 5 нет никаких. Как был сляпаной на коленке парой студентов заплаткой - так и остался =)

Это сообщение отредактировал(а) PrivateRayan - 26.12.2007, 15:26
PM MAIL   Вверх
Endeveit
Дата 26.12.2007, 16:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 2.6.2006

Репутация: 1
Всего: 7



PrivateRayan, мне кажется смешным Ваше сообщение.
Я не поленился и проверил свое предположение, чего и Вам желаю - php-4.4.7/ext/session/session.c, строки 738 - 758.
Думаю, Вам не составит труда разобраться в исходном коде PHP, раз уж механизм сессий - "заплатка, сляпанная на коленке парой студентов".
PM WWW   Вверх
PrivateRayan
Дата 26.12.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 26.12.2007

Репутация: нет
Всего: 2



Endeveit, я посмотрел. Я не очень хорошо ориентируюсь в исходном коде PHP, но никаких объяснений тому, что $_SESSION['var'] = $_REQUEST['var']; вызовет данное сообщение об ошибке, не нашел.
Равно как и объяснений, почему сработает предложенное решение с промежуточной переменной.

w32blaster, насчет register_globals ты заблуждаешься.
Но! Самым лучшим решением в твоем случае будет отказаться от использования функций session_

Это сообщение отредактировал(а) PrivateRayan - 26.12.2007, 22:34
PM MAIL   Вверх
FractalizeR
Дата 27.12.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 1
Всего: 4



Цитата(PrivateRayan @ 26.12.2007,  19:17)
w32blaster, насчет register_globals ты заблуждаешься.
Но! Самым лучшим решением в твоем случае будет отказаться от использования функций session_

Не совсем понимаю, почему от них надо полностью отказываться. 

Причина того сообщения в следующем:
Цитата
session.bug_compat_42 boolean 
PHP versions 4.2.3 and lower have an undocumented feature/bug that allows you to initialize a session variable in the global scope, albeit register_globals is disabled. PHP 4.3.0 and later will warn you, if this feature is used, and if session.bug_compat_warn is also enabled. This feature/bug can be disabled by disabling this directive.


О причине можно почитать тут:
http://www.webdeveloper.com/forum/archive/...hp/t-95839.html

Скорее всего в скрипте использовался session_register.

Это сообщение отредактировал(а) FractalizeR - 27.12.2007, 20:00


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.