Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Непонятная ошибка при логине
 
 автор: Trivium   (07.04.2008 в 13:13)   письмо автору
 
 

Всем привет!
У меня при создании сессии, т.е. при логине выводится вот такое сообщение:
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
причём при обновлении страницы она исчезает и работает всё нормально...
что это значит и как это можно убрать? кроме error_reporting(0); естесственно)

   
 
 автор: Antohins   (07.04.2008 в 13:14)   письмо автору
 
   для: Trivium   (07.04.2008 в 13:13)
 

Код в студию плз. Только ту часть где идет работа с сессиями

   
 
 автор: Trivium   (07.04.2008 в 13:16)   письмо автору
 
   для: Antohins   (07.04.2008 в 13:14)
 

$rs = mysql_query('SELECT login, id, status FROM `users` WHERE `login` = "'.$_POST['login'].'" AND `password` = "'.md5($_POST['pass']).'" LIMIT 1');
if (mysql_num_rows($rs))
{
    $a = mysql_fetch_array($rs);
    $login = $a['login'];
    $status = $a['status'];
    $user_id = $a['id'];
    session_register('login');
    session_register('status');
    session_register('user_id');
}


Вот в принципе весь код...

   
 
 автор: Antohins   (07.04.2008 в 14:02)   письмо автору
 
   для: Trivium   (07.04.2008 в 13:16)
 

я советую использовать
 $_SESSION["znachenie"]="pararam";

   
 
 автор: Trivium   (07.04.2008 в 14:24)   письмо автору
 
   для: Antohins   (07.04.2008 в 14:02)
 

>я советую использовать
 $_SESSION["znachenie"]="pararam";
>

Те же уши только в профиль... всё равно выдаёт это...

   
 
 автор: Atheist   (07.04.2008 в 14:26)   письмо автору
 
   для: Trivium   (07.04.2008 в 14:24)
 

> Те же уши только в профиль... всё равно выдаёт это...
Почитай моё сообщение.

   
 
 автор: Atheist   (07.04.2008 в 14:04)   письмо автору
 
   для: Trivium   (07.04.2008 в 13:16)
 

Эта ошибка еще связана и с register_globals. Желательно выключить этот режим.

   
 
 автор: Trivium   (07.04.2008 в 14:35)   письмо автору
 
   для: Atheist   (07.04.2008 в 14:04)
 

Я прочитал, они у меня вырублены.

   
 
 автор: Atheist   (07.04.2008 в 14:41)   письмо автору
 
   для: Trivium   (07.04.2008 в 14:35)
 

Тогда просто не используй одинаковые имена переменных и индексов.

   
 
 автор: Faraon   (07.04.2008 в 15:01)   письмо автору
 
   для: Trivium   (07.04.2008 в 14:35)
 

Так если Вы хотите чтобы Ваша конструкция работала без этого предупреждения, то register_globals должен быть включен. Но делать этого не рекомендую, а использовать суперглобальный массив $_SESSION

   
 
 автор: Antohins   (07.04.2008 в 14:07)   письмо автору
 
   для: Trivium   (07.04.2008 в 13:16)
 

Вот что пишут на сайте php.net:

Caution

If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.


Перевод:
Предостережение

Если Вы хотите, чтобы ваш подлинник(сценарий) работал независимо от register_globals, Вы должны вместо этого использовать $_SESSION, множество как $_SESSION entries автоматически зарегистрировано. Если ваш подлинник(сценарий) будет использовать session_register (), то это не будет работать в окружающих средах, где директива register_globals PHP - инвалиды.


зы: >>"где директива register_globals PHP - инвалиды."
бугага, ну и перевод %))

   
 
 автор: Trivium   (07.04.2008 в 16:31)   письмо автору
 
   для: Antohins   (07.04.2008 в 14:07)
 

Так что делать?)))

   
 
 автор: sim5   (07.04.2008 в 17:17)   письмо автору
 
   для: Trivium   (07.04.2008 в 16:31)
 


<?
session_start
();
//....

    
$a mysql_fetch_array($rs); 
    
$_SESSION["login"] = $a['login'];   
    
$_SESSION["status"] = $a['status'];
    
$_SESSION["user_id"] = $a['id'];
}

Все должно работать, а вот register_globals точно надо держать выключенным.

   
 
 автор: Trivium   (07.04.2008 в 18:45)   письмо автору
 
   для: sim5   (07.04.2008 в 17:17)
 

Ну так вот именно что всё работает, но выводит это тупое сообщение...

   
 
 автор: sim5   (07.04.2008 в 18:59)   письмо автору
 
   для: Trivium   (07.04.2008 в 18:45)
 

Не используйте session_register(), это старое.

   
 
 автор: Trivium   (08.04.2008 в 13:10)   письмо автору
 
   для: sim5   (07.04.2008 в 18:59)
 

ну я через $_SESSION['variable'] = $somevariable; делаю и то же это же выдаёт...

   
 
 автор: Atheist   (08.04.2008 в 14:38)   письмо автору
 
   для: Trivium   (08.04.2008 в 13:10)
 

Видишь $_POST['login']? $_SESSION['login'] лучше не использовать. Добавь какой-нибудь префикс.

   
 
 автор: Trivium   (09.04.2008 в 18:35)   письмо автору
 
   для: Atheist   (08.04.2008 в 14:38)
 

>Видишь $_POST['login']? $_SESSION['login'] лучше не использовать. Добавь какой-нибудь префикс.
Так а причём это логин к тому? Это ж разные массивы...

   
 
 автор: GeorgeIV   (10.04.2008 в 09:52)   письмо автору
 
   для: Trivium   (09.04.2008 в 18:35)
 

А PHP какой версии?

   
 
 автор: Trivium   (10.04.2008 в 13:39)   письмо автору
 
   для: GeorgeIV   (10.04.2008 в 09:52)
 

4

   
 
 автор: ONYX   (10.04.2008 в 10:31)   письмо автору
 
   для: Trivium   (08.04.2008 в 13:10)
 

Если проблема всетаки в глобальных переменных советую воспользоваться этой переменной:
$HTTP_COOKIE_VARS['variable'] = $somevariable;

   
 
 автор: mihdan   (10.04.2008 в 11:57)   письмо автору
 
   для: ONYX   (10.04.2008 в 10:31)
 

$HTTP_COOKIE_VARS['variable'] = $somevariable;


Вы что издеваетесь, предлагаете на РНР3 перейти???
Это ж старый массив, его заменили на $_COOKIE. В новых версиях РНР его вообще нет!

   
 
 автор: Trivium   (10.04.2008 в 13:40)   письмо автору
 
   для: mihdan   (10.04.2008 в 11:57)
 

в 4 есть ещё, а вот в 5 не знаю...

   
 
 автор: cheops   (11.04.2008 в 12:38)   письмо автору
 
   для: Trivium   (10.04.2008 в 13:40)
 

Поддержка длинных массивов будет исключена в 6 версии.

   
 
 автор: AcidTrash   (10.04.2008 в 15:00)   письмо автору
 
   для: mihdan   (10.04.2008 в 11:57)
 

>новых версиях РНР его вообще нет!

Ну почему же в 5.2.0 он еще поддерживается.

   
 
 автор: mihdan   (10.04.2008 в 15:34)   письмо автору
 
   для: AcidTrash   (10.04.2008 в 15:00)
 

5 - не новая версия РНР )))

   
 
 автор: AcidTrash   (10.04.2008 в 16:18)   письмо автору
 
   для: mihdan   (10.04.2008 в 15:34)
 

А под новой версией которая уже используется, вы какую версию понимаете?

   
 
 автор: mihdan   (11.04.2008 в 14:35)   письмо автору
 
   для: AcidTrash   (10.04.2008 в 16:18)
 

http://live.cnews.ru/anton/104604/

   
 
 автор: mihdan   (11.04.2008 в 14:38)   письмо автору
 
   для: AcidTrash   (10.04.2008 в 16:18)
 

>А под новой версией которая уже используется, вы какую версию понимаете?
http://snaps.php.net/

   
 
 автор: AcidTrash   (11.04.2008 в 14:46)   письмо автору
 
   для: mihdan   (11.04.2008 в 14:38)
 

Если вы имеете ввиду PHP6, то она еще обширно не используется. Сравнительно не особо давно хостинги и разработчики стали переходить на 5, так, что до 6-ки еще время довольно много. Скачать 6-ку и просто позксперементировать с ней, пока все что с ней можно сделать.
Всех шестерочных нюансов еще не известно.

   
 
 автор: cheops   (12.04.2008 в 15:26)   письмо автору
 
   для: AcidTrash   (11.04.2008 в 14:46)
 

>PHP6, то она еще обширно не используется
PHP 6 собственно ещё не создан путью, имеющаяся версия для разработчиков очень далека от стабильности.

>Всех шестерочных нюансов еще не известно.
Скажем так, известны вопросы для обсуждения, по части из них решение уже принятно, часть отвергнута, часть ещё находится под обсуждением. Об прогрессе в PHP 6 можно судить по странице http://wiki.php.net/todo/php60.

   
 
 автор: mihdan   (10.04.2008 в 15:36)   письмо автору
 
   для: ONYX   (10.04.2008 в 10:31)
 

Для совмещения версий даже директиву в php.ini создали


register_long_arrays = On

   
 
 автор: Trivium   (11.04.2008 в 18:03)   письмо автору
 
   для: mihdan   (10.04.2008 в 15:36)
 

Так что делать?) ничего из вышеперечисленного не работает...

   
 
 автор: Trivium   (15.04.2008 в 14:42)   письмо автору
 
   для: Trivium   (11.04.2008 в 18:03)
 

и тишина...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования