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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с сессиями

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
ikirill
Отправлено: 27 Января, 2010 - 14:28:24
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Дано:
FreeBSD 7.2
Apache/2.2.11
PHP/5.2.9 with Suhosin-Patch

Проблема: в скриптах которые используют сессии, выглядит так - залогиниваюсь, но при переходе на любую другую страницу авторизации как и не было, при этом эти скрипты (пробовал разные самописные и готовые) на денвере работают на ура
на проблемном сервере стоит phpbb3 и CMS пролем с авторизацией в них нет, насколько я понимаю они используют cookie.
В папке /tmp на сервере вижу файлы сессий

Не пинайте, если это описывалось уже где-то, поиск юзал, но решение своей проблемы не нашел (ну то есть как вставить руки на место)
Подскажите пожалуйста
 
 Top
Carzil
Отправлено: 27 Января, 2010 - 14:44:00
Post Id



Гость


Покинул форум
Сообщений всего: 127
Дата рег-ции: Нояб. 2009  
Откуда: Россия, Москва


Помог: 0 раз(а)




На всех страницах напиши это:
PHP:
скопировать код в буфер обмена
  1. if(isset($_COOKIE['PHPSESSID'])){
  2. session_id($_COOKIE['PHPSESSID']);
  3. }elseif(isset($_GET['PHPSESSID'])){
  4. session_id($_GET['PHPSESSID']);
  5. }else{
  6. echo "";}

(Отредактировано автором: 27 Января, 2010 - 14:44:39)



-----
Не помогли на форуме? Не растраивайтесь!
 
 Top
ikirill
Отправлено: 27 Января, 2010 - 14:53:36
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




на всех страницах у меня прописано в самом начале include('system/check.php');

check.php:
PHP:
скопировать код в буфер обмена
  1. include('config.php');
  2. if(!$_SESSION['loggedin'] == True){
  3.         echo $error;
  4.         exit;
  5. }


Это пример одного из скриптов, и все ведут себя одинаково
(Добавление)
вот тут простенький скрипт для примера работы сессий
http://multirace[dot]pp[dot]ua/upload/page1.php
на первой странице имя берется из переменной внутри скрипта
на второй оно должно браться из сессии, но этого не происходит
при этом в /tmp я вижу файл сессии с содержимым username|s:6:"maksim";
 
 Top
valenok Модератор
Отправлено: 27 Января, 2010 - 16:26:52
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




!$_SESSION['loggedin'] == True


-----
Truly yours, Sasha.
 
My status
 Top
ZeiZ
Отправлено: 27 Января, 2010 - 22:32:43
Post Id



Частый гость


Покинул форум
Сообщений всего: 231
Дата рег-ции: Нояб. 2009  
Откуда: Москва


Помог: 0 раз(а)




Почитай об отладке!!!

А вообще:
Если не можешь что-то поменять на серваке и это надолго, то скопируй себе php.ini c сервака, изучи его, и, если не поймешь в чём дело, то за юзай его у себя в денвере (не забудь про (beckup) и отредактируй код у себя на локале.... Я очень долго мукался с проблемой output_buffering (это не твоя проблема), зато теперь пишу правильнее, и знаю зачем он нужен=)!!
 
 Top
ikirill
Отправлено: 28 Января, 2010 - 13:28:17
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




на сервере могу поменять что угодно, знать бы что
php.ini сравнивал с тем что в denwer настройки для сессий идентичные Нет
 
 Top
JustUserR
Отправлено: 28 Января, 2010 - 17:27:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




ikirill пишет:
Php.ini сравнивал с тем что в denwer настройки для сессий идентичные
Точно-точно идентичные? Например есть такая настройка что если cookie выключены то SESSID будет передаваться через GET/POST запрос как дополнительное поле - так что если эта настройа отключены и имеются проблемы с cookie то может и не работать
Для проверки можете добавить к ссылкам на другие страница что-то типа &SESSID=$SID где $SID=session_id() и попробуйте установить сессию вручную
Если не получится то вероятно дело в том что я указал выше


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ikirill
Отправлено: 29 Января, 2010 - 04:11:59
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Цитата:
Для проверки можете добавить к ссылкам на другие страница что-то типа &SESSID=$SID где $SID=session_id() и попробуйте установить сессию вручную
Если не получится то вероятно дело в том что я указал выше

к ссылке которая идет от скрипта проверяющего авторизацию к защищеной страничке добавил ?PHPSESSID=$s где $s=session_id() заработало, при этом сессия не теряется и на последующих переходах по страницам, тоесть получается все как и должно быть. Большое спасибо JustUserR, и если вас не затруднить скажите почему так случилось? ведь должно же и без этого работать, просто хочется разобраться, заранее спасибо
 
 Top
JustUserR
Отправлено: 29 Января, 2010 - 13:31:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




ikirill пишет:
Большое спасибо JustUserR, и если вас не затруднить скажите почему так случилось? Ведь должно же и без этого работать, просто хочется разобраться, заранее спасибо
Пожалуйста! Попробую рассказать почему такое могло получиться Во-первых дело могло быть в том что PHP или ваш браузер неправильно работал с cookie и PHP не мог по каким-то причинам определить факт отключения cookie - а при передаче сессии через PHPSESSID режим сессий в cookie отключается автоматически и далее номер сессии передается через GET/POST-запросы и разумеется работает независимо от cookie - то есть проблема решилась благодаря ручному переходу на режим без cookie
Во-вторых другой вероятной причиной неработоспособности cookie было наличие AJAX или другой динамической подгзурки страниц на JS - существует известная проблема когда без полного обновления страницы cookie не обновляются - в таком случае надо модифицировать код и получать их прямо в JS-коде
Так что мне кажется что решение крылось именно в cookie связанных с сессией по каким-то из перечисленных причин - но впринципе у вас все заработало и я рад что смог вам помочь Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB