Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблеика с сессиями
Форумы портала PHP.SU » PHP » Программирование на PHP » Проблеика с сессиями

Страниц (1): [1]
 

1. spok - 14 Января, 2010 - 10:01:39 - перейти к сообщению
Здраствуйте!
Помогите разобраться что нужно исправить в коде что-бы в лог не кидало-бы ошибку ( похоже хостер сменил настройки сервера или обновил ПО )

Сама ошибка которая пишеться в лог
PHP:
скопировать код в буфер обмена
  1. [14-Jan-2010 10:39:08] PHP 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


Принцип самой страницы

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $antispam = $_SESSION['antispam'];
  3. // Код страницы
  4. ?>
  5.  
  6.  // Так-же вызываю картинку капчи, где есть код  
  7.  // session_start();
  8.  // session_register('antispam');
  9. <img src="kapca.php" border="0" align="top" alt=""/>
  10. <?PHP
  11. session_unregister('antispam');
  12. ?>



Код страницы .htaccess

PHP:
скопировать код в буфер обмена
  1. php_flag register_globals On
  2.  
  3. RemoveHandler .htm .html .shtm .shtml
  4. Action application/x-httpd-php5 /cgi-sys/php5
  5. AddType application/x-httpd-php5 .php .htm .html .shtm .shtml


Доступа к настройкам сервера не имею ( простой хостинг )

Заранее спасибо за помощь
2. Мелкий - 14 Января, 2010 - 10:52:46 - перейти к сообщению
на сколько я понял - настоятельно рекомендуют отключить register_globals
3. RomAndry - 14 Января, 2010 - 10:58:00 - перейти к сообщению
Буквально не давно похожая тема поднималась здесь.
не называете переменные, совпадающие с переменными $_SESSION
4. spok - 14 Января, 2010 - 11:19:33 - перейти к сообщению
Мелкий пишет:
на сколько я понял - настоятельно рекомендуют отключить register_globals


Удалил вообще .htaccess, и ошибка осталась та-же

RomAndry пишет:
Буквально не давно похожая тема поднималась здесь.
не называете переменные, совпадающие с переменными $_SESSION


Изменил названия переменых но увы ошибка та-же и удалил файл .htaccess

Теперь код в таком виде

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $antikod = $_SESSION['antiko'];
  3.  
  4.  
  5. // Так-же вызываю картинку капчи, где есть код  
  6. // session_start();
  7. // session_register('antispam');
  8.  
  9. ?>
  10. <img src="kapca.php" border="0" align="top" alt=""/>
  11.  
  12. <?PHP
  13.  
  14. ?>



Что-то не понимаю в чем ошибка
5. RomAndry - 14 Января, 2010 - 11:48:16 - перейти к сообщению
вместо

используйте
unset('antiko');
6. spok - 14 Января, 2010 - 12:29:47 - перейти к сообщению
RomAndry пишет:
используйте
unset('antiko');


Спасибо за помощь но увы ошибка осталась ( то есть ни чего не изменилось )
Кстати unset('antiko'); вообще ошибка в браузере
Пробывал так

unset($_SESSION['antiko']);

и так

unset($antiko);

все равно ошибку пишет в лог точно такую-же как и писал в первом посте, одним словом уже запарилься и получилься тупик из которого не вижу выхода
7. JustUserR - 14 Января, 2010 - 12:33:15 - перейти к сообщению
spok В общем говоря забудьбе про функции session_register и session_unregister и используйте только хеш-массив $_SESSION и соответственно создавайте и изменяйте и удаляйте переменные там
8. valenok - 14 Января, 2010 - 14:03:24 - перейти к сообщению
перед session_destroy
добавьте $_SESSION = Array();

А переменные быстрее и проще удалять так
$_SESSION['aoeu'] = null;
9. spok - 14 Января, 2010 - 19:44:14 - перейти к сообщению
Спасибо всем за помощь, саму проблемму решил отказавшись от сесий в главном файле и перекинув ее в подключаемый файл капчи, вот пример

PHP:
скопировать код в буфер обмена
  1.  
  2. $_SESSION['antispam'];
  3. $_SESSION['antispam'] = "";
  4. // и потом в цикле собираю ссесию по одной буквы с картинки
  5. $antispam .= $strkas;
  6. $_SESSION['antispam'] .= $strkas;
  7.  


Может и не логически но логи ошибки пропали и работает при отключеном register_globals
10. JustUserR - 14 Января, 2010 - 20:26:35 - перейти к сообщению
spok пишет:
Может и не логически но логи ошибки пропали и работает при отключеном register_globals
Вовсе нет - все верно логически - ошибка выдавалась именно из-за использования функция типа session_register которая пыталась регистрировать глобальную переменную с именем указанным в сессии - просто начиная с более новых версий PHP (Возможно 5.3 - я точно не уверен) старый подход убрали и можно работать только через массив $_SESSION
spok пишет:
Отказавшись от сесий в главном файле и перекинув ее в подключаемый файл
Это хорошо при использовании сессий с cookie - не будут проблемы с заранее начатым выводом до установки cookie Улыбка

 

Powered by ExBB FM 1.0 RC1