Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Продолжить исходное действие после формы "логина"

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
Борис
Гость
цитировать






СообщениеДобавлено: 06 Янв 2008 13:48:38    Заголовок сообщения: Продолжить исходное действие после формы "логина" Ответить с цитатой Изменить/удалить это сообщение

Добрый день!

Вчера поставил CakePHP 1.2.* и накидал пару моделей по руководству. Также добавил простейшую регистрацию. Но наткнулся на следующую проблему:

1) Проверка возможности выполнить определённое действие (и отображение формы "логина") происходит при попытке выполнить это действие. Например, у меня в списке есть кнопка "Edit", которая выполняет переход в режим редактирования. Если же пользователь не вошёл в систему, то он выводит форму для входа. Но после того как пользователь войдёт система отправит его на заранее определённую страницу, а не ту, которую запросил пользователь.

Как можно "вспомнить" то действие, которое хотел выполнить пользователь, чтобы ему не пришлось опять искать ту кнопку "Edit"?

2) Второй вопрос является продолжением предыдущего. Я вошёл в систему и начал редактировать запись, но после нажатия кнопки сохранить мне будет предложено снова войти (из-за таймаута сессии). При этом все введённые данные пропадут.

Как можно "сохранить" все введённые данные (в том числе в POST), чтобы форма "логина" не нарушала работу пользователя?


Может быть есть уже готовый компонент, который можно внедрить для анализа?
Вернуться к началу
Антон Исайкин
Site Admin
цитировать



Зарегистрирован: 08 Окт 2007 12:02:56
Сообщения: 150
Откуда: Санкт-Петербург

СообщениеДобавлено: 07 Янв 2008 14:51:36    Заголовок сообщения: Ответить с цитатой

1. Очень просто. Перед тем как отправить пользователя в форму логина, запишите в сессию с какой страницы отправили. А когда пользователь залогинится -- кидайте его обратно.

2.1. Опять же поможет сессия. Кидайте туда весь вывод $this->data.
2.2. Или увеличьте время время действия сессии.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
KPOTOB

цитировать



Зарегистрирован: 09 Дек 2007 14:46:20
Сообщения: 127

СообщениеДобавлено: 07 Янв 2008 16:57:24    Заголовок сообщения: Ответить с цитатой

2.3. AJAXом сессию обновлять Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Борис
Гость
цитировать






СообщениеДобавлено: 08 Янв 2008 00:25:07    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

Антон Исайкин, спасибо. Но очень странно, что не нашёл ни одного подходящего примера. Примеры из мануала оказались очень поверхостными и оторванными от жизни.

KPOTOB
про AJAX думал, по нему еще будут вопросы, но сам ненавижу сайты, которые без javascript не работают, поэтому нужно предусмотреть и обычный способ.
Вернуться к началу
KPOTOB

цитировать



Зарегистрирован: 09 Дек 2007 14:46:20
Сообщения: 127

СообщениеДобавлено: 08 Янв 2008 14:59:51    Заголовок сообщения: Ответить с цитатой

Борис
IMHO увеличь таймаут до разумного значения - врятли ктото в форме ввода больше 8 часов проторчит
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Inspired

цитировать



Зарегистрирован: 22 Янв 2008 01:50:01
Сообщения: 3
Откуда: Киев

СообщениеДобавлено: 22 Янв 2008 02:18:15    Заголовок сообщения: Ответить с цитатой

AuthComponent делает это автоматически, кроме сохранения данных POST конечно.
_________________
CakeBaker.org.ua
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
KPOTOB

цитировать



Зарегистрирован: 09 Дек 2007 14:46:20
Сообщения: 127

СообщениеДобавлено: 02 Фев 2008 02:36:25    Заголовок сообщения: Ответить с цитатой

Про POST

Особых проблем модицифировать AuthComponent для сохранения $this->data в сессии нет
Но вот как пропихнуть это при редиректе?

По идеи можно в AppController::beforeFilter вытягивать из сесии.
Еслибы можно было AuthComponent::beforeFilter организовать - былобы красивее (тем более что beforeRedirect есть уже)

Или в startup Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru