Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Проблемы в подключении сессий при использовании Smarty (Домашних Иван)
Author Message
Домашних Иван
Заглянувший



Joined: 19 Sep 2005
Posts: 5
Карма: 0
   поощрить/наказать

Location: Екатеринбург

PostPosted: Wed Sep 21, 2005 2:50 pm (написано за 1 минуту 8 секунд)
   Post subject: Проблемы в подключении сессий при использовании Smarty
Reply with quote

Здраствуйте, уважаемые программисты и вы, Дмитрий Котеров!

Прочитав книгу по PHP5 в подлиннике, я решил попробовать написать сайт с использованием шаблонизатора Smarty.
Для организации регистрации использовал форму в блоке {t_component}...{/t_component}. Данный компонент проверяет данные на верность. Если они верные, то происходит регистрация, авторизация и переадресация, т.е. все хорошо. Но если нет, то возвращается массив ошибок, который используется в форме (на старой странице). Оказалось, что если с этой страницы с формой и отображенными ошибками перейти на любую другую, а потом вернуться с помощью кнопок "Назад"/"Вперед", то страница не отобразится.

Пытаясь найти ошибку, я выяснил, что она связана с сессиями, которые подключаются к модели для авторизации: ошибки не возникали, если скрипт с session_start не подключался. Я подумал, что session_start находится после вывода (хотя все require находились вначале скриптов) и стал запускать сессии автоматически (session.auto_start=1). Ошибки не исчезли.
Такая схема построения формы была в гостевой книге на тестовом сайте Templier Дмитрия Котерова (к книге PHP5), только там не было сессий. Включение session.auto_start=1 привело к аналогичной ошибке в просмотре History.

Подскажите, пожалуйста, с чем может быть связано такое странное поведение форм при включении сессий, если используется шаблонизатор Smarty, и как можно устранить данную ошибку без отключения сессий и/или отказа от шаблонизатора?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sat Oct 08, 2005 1:30 pm (спустя 16 дней 22 часа 39 минут; написано за 12 секунд)
   Post subject:
Reply with quote

Домашних Иван wrote:
если с этой страницы с формой и отображенными ошибками перейти на любую другую, а потом вернуться с помощью кнопок "Назад"/"Вперед", то страница не отобразится
Что значит "страница не отобразится"?
Как правильно задавать вопросы: статья, обязательная к прочтению (citforum.ru/howto/smart-questions-ru.shtml)
Back to top
View user's profile Send private message Send e-mail
Домашних Иван
Заглянувший



Joined: 19 Sep 2005
Posts: 5
Карма: 0
   поощрить/наказать

Location: Екатеринбург

PostPosted: Sat Nov 12, 2005 7:49 pm (спустя 1 месяц 4 дня 6 часов 19 минут; написано за 15 минут 30 секунд)
   Post subject:
Reply with quote

"Не отображается" означает, что IE6.0 отображает страницу "Невозможно отобразить страницу". Извиняюсь за тавтологию.
Не отобразится страница, ранее сформированная с помощью данных возвращенных компонентом, на которую мы вернулись с помощью кнопок "Вперед/Назад".
Тестировал другие браузеры. В MyIE2.0 та же ошибка. Opera 7.0 работает корректно, отображая страницу снова. Mozilla просит отправить данные снова (если согласиться, страница отобразится).
Вывод: вероятно браузер (IE,MyIE) общается с сервером, но данные формы не посылает => сервер ничего не возвращает.
Наверное можно попытаться заставить браузер использовать страницу из кэша, т.е. сервер должен послать Header о том, что страница не обновлялась (куда вставить и какой?).
Но все равно не понятно, причем же здесь сессии (как их подключение все портит).
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sun Nov 13, 2005 1:15 am (спустя 5 часов 26 минут; написано за 19 секунд)
   Post subject:
Reply with quote

Попробуйте отключить gzip-сжатие в ApacheHandler.php.
Back to top
View user's profile Send private message Send e-mail
Домашних Иван
Заглянувший



Joined: 19 Sep 2005
Posts: 5
Карма: 0
   поощрить/наказать

Location: Екатеринбург

PostPosted: Sun Nov 13, 2005 3:25 pm (спустя 14 часов 9 минут; написано за 2 минуты 43 секунды)
   Post subject:
Reply with quote

Установил UseGZip=false. Не помогло: нет ни сжатия, ни страниц. Может это както связано с cookie (куки сессии)?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sun Nov 20, 2005 10:21 pm (спустя 7 дней 6 часов 55 минут; написано за 1 минуту)
   Post subject:
Reply with quote

Ну, тогда вообще все обработчики поотключайте, просто закомментируйте в исходнике соответствующие строчки. Если и после этого не заработает, попробуйте другую версию PHP, что ли, и загляните в логи сервера.

Попробуйте также Сходите, пожалуйста, в Поиск по запросу «proxomitron». Спасибо!, посмотрите, какие данные ходят туда-сюда.
Back to top
View user's profile Send private message Send e-mail
Домашних Иван
Заглянувший



Joined: 19 Sep 2005
Posts: 5
Карма: 0
   поощрить/наказать

Location: Екатеринбург

PostPosted: Wed Oct 04, 2006 5:08 pm (спустя 10 месяцев 13 дней 18 часов 47 минут; написано за 5 секунд)
   Post subject:
Reply with quote

Давно я не заглядывал на этот форум, но раз уж это случилось, то отпишусь. На самом деле в чудесах с "исчезновением страниц" виноват IE. Этот феноменальный продукт выдает то же самое (т.е. исчезновени страниц) и в данном элементарном скрипте:
Code (php): скопировать код в буфер обмена
<?php
session_start (www.php.net/session_start)();
?>

<form method="post">
<input type="submit" value="Submit">
</form>
?>
Чтобы добиться "исчезновения сраницы" необходимо отправить форму и с нее вернуться назад. При обратном переходе вперед страница не отобразится.

Фишка именно во включенной сессии и методе Post. Если форма посылается методом Get, то после этого отобразится обновленная страница (назовем ее p2) за счет появления вопросика после адреса скрипта. Поэтому страницы будут разными и эффекта в IE не будет.
Opera этот скрипт отрабатывает идеально без глюков.
А вот Firefox при возвращении обратно на страницу p2 будет выдан запрос на повторную отправку данных.

Вывод: включение сессии заставляет посылать браузер какие-то дополнительные данные, которые Opera сохраняет, Firefox запрашивает вновь, а IE оказывается в ступоре... и ничего не отображает.
Конечно, было бы интересно узнать какие это данные и почему они так влияют, но это не к шаблонизатору относится.
Извиняюсь, что когда-то плохо думал о Smarty! :)
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Thu Nov 09, 2006 9:43 pm (спустя 1 месяц 5 дней 4 часа 34 минуты; написано за 24 секунды)
   Post subject:
Reply with quote

Домашних Иван wrote:
было бы интересно узнать какие это данные
Это куки (cookies).
Сходите, пожалуйста, в Поиск по запросу «proxomitron». Спасибо!
Сходите, пожалуйста, в Поиск по запросу «livehttpheaders». Спасибо!
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML