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 :: Версия для печати :: Сессии и кукис совместимость с ИЕ 8
Форумы портала PHP.SU » PHP » Программирование на PHP » Сессии и кукис совместимость с ИЕ 8

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

1. Kuroch - 31 Августа, 2010 - 16:04:48 - перейти к сообщению
Доброго времени суток всем!
Возникла такая проблема:
вобщем есть большой сайт и переменная в сессии $s_login
Благодаря которой осуществляется регистрация пользователя на сайте и его авторизация
сделано на сайте меню причем для $s_login!="" оно на некоторое количество пунктов больше.

Суть проблемы такова.. в интернет эксплорере (8) когда клиент регистрируется он попадает в этот "мэмберзон" (расширенное меню) но при переходе по ссылке на любую другую страницу его выкидывает на

If ($s_login=="") Header (Location: login.php )

тоесть зарегистрированная в сессии переменная $s_login превращается на какомто этапе в пустую строку... такое происходит только в ие в мозиле все работает корректно
2. Viper - 31 Августа, 2010 - 16:15:22 - перейти к сообщению
Либо что-то в коде неверно, либо ИЁ в своем репертуаре(что врядли).
3. JustUserR - 31 Августа, 2010 - 16:18:58 - перейти к сообщению
Kuroch пишет:
Тоесть зарегистрированная в сессии переменная $s_login превращается на какомто этапе в пустую строку... такое происходит только в ие в мозиле все работает корректно
Вероятно причиной по которой происходит очистка значения сессионной переменной является неполная перезагрузка общей статической HTML-страницы после совершения авторизации - дело в том что при наличии frame-овых элементов или динамического взаиомдейтсвия с cookie с помощью JS-скрипта одинаковые значения могут на самом дле не обновиться к моментку отображения
Кроме того причиной проблемы может быть и очередная модификация вашего PHP-скрипта в которой происходит ошибочная очистка авторизации - а в некоторых браузеров сессия продолжает работать по причине усиленного кеширования
4. Kuroch - 31 Августа, 2010 - 16:25:11 - перейти к сообщению
Viper пишет:
Либо что-то в коде неверно, либо ИЁ в своем репертуаре(что врядли).


Подскажите пожалуйста в каком месте кода искать ошибку?
5. Viper - 31 Августа, 2010 - 16:34:24 - перейти к сообщению
Kuroch обратите внимание что вам написал JustUserR. Проверьте свой код, все равно не увидев кода никто вам ничем не сможет помочь.

ПОльзуйте отладку. Понатыкайте print_r($_REQUEST); в тех страницах где предположительно она отваливается.

ЗЫ! На будущее я бы рекомендовал использовать БД для сессии. Надежнее чем куки.
6. Kuroch - 31 Августа, 2010 - 17:01:11 - перейти к сообщению
Добавил в конце следующий отладочный код:

print_r($_REQUEST);
echo "<BR>$s_login<BR>";
print_r($_SESSION);

выдает следующие результаты:

Array ( [__utma] => 62029247.613034268.1280129643.12 83253491.1283262405.17 [__utmz] => 62029247.1280129643.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) [__utmb] => 62029247.2.10.1283262405 [__utmc] => 62029247 [PHPSESSID] => gn43q7pfav0i4rag6snglsiqo6 )
92921804
Array ( [s_login] => 92921804 [s_photo] => [s_sql] => [s_orderby] => [s_page] => [s_page_count] => [s_inbox_sortby] => [s_inbox_orderby] => [s_outbox_sortby] => [s_outbox_orderby] => [s_girl_id] => [s_needparams] => 1 [s_refferer] => undefined;0 [s_statlite_firstvisit] => [s_statlite_starttime] => 1283262436 [s_statlite_rid] => 1 [s_lang] => eng )

и тут все нормально но когда идёт следующий переход по ссылке на другую страницу то эта переменная теряется (не передается следующему скрипту)

Может можно както её дополнительно передать?
передавать её в гете не вариант ибо любой пользователь сможет легко изменить строку запроса и полазить в чужом инбоксе....
7. JustUserR - 31 Августа, 2010 - 17:10:48 - перейти к сообщению
Kuroch пишет:
Может можно както её дополнительно передать?
Для осуществления ручной передачи идентификатора сессии в некоторый PHP-скрипта можно использовать следующий метод - после инициализации сессии в результате некоторого пользовательского запроса вы получаете ее номер с помощью функции $my_id=session_id() - и в дальнейшем можете передавать его в специальном поле в GET/POST-запросах или сохранить в переменной JS-скрипта на клиентской стороне - таким образом когда от пользователя будет поступать очередной запрос к PHP-скрипту то он будет явно передавать идентификатор сессии - и на его основе может продолжить работы с сохраненными данными путем применения функции session_start($my_id) с указанием номера сессии в качестве аргумента
8. Kuroch - 02 Сентября, 2010 - 09:46:53 - перейти к сообщению
Передал идентификатор сессии в $_GET
далее написал вот такой код:

if (isset($_GET['sess_id']) && $_GET['sess_id']!="" ){
$ses_id=$_GET['sess_id'];
session_start($ses_id);
}

но это не решило мою проблему стало только медленнее все работать
9. JustUserR - 02 Сентября, 2010 - 16:40:07 - перейти к сообщению
Kuroch пишет:
Но это не решило мою проблему стало только медленнее все работать
При использовании передачи идентификатора сессии в ручном режиме желательно отключить автоматическую его отправку внутренними средствами - для избежания повторного открытия и перезаписи сессии - это осуществляется путем установки ложного значения в параметры use_cookies и use_trans_sid а также для автоматической инициализации сессии
Кроме того можно проверить правильно ли передается идентифкаор сессии от предыдущего PHP-скрипта - в случае если у вас имеется окно с фреймами то необходимо передавать этот идентификатор в URL-адреса для всех составляющих частей frameset-а
10. Kuroch - 06 Сентября, 2010 - 17:05:01 - перейти к сообщению
На сайте возникает следующая ошибка
ERROR:setting the last user activity

Кто нибудь встречал такое? с чем это может быть связанно?

У клиента браузер ИЕ 8
11. JustUserR - 06 Сентября, 2010 - 17:42:45 - перейти к сообщению
Kuroch пишет:
На сайте возникает следующая ошибка
ERROR:setting the last user activity
Приведенное вами описание ошибки не является обычным для HTTP-протокола или клиентской стороны - и скорее всего генерируется используемой вами системой управления web-сайтов при отсутствии текущей сессии - которое может быть связано с тем что значения cookie не были переданы правильным образом в требуемую секцию обработки запроса

 

Powered by ExBB FM 1.0 RC1