<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии на: Своя CMS: обратный редирект.</title>
	<atom:link href="http://brotkin.ru/2009/09/09/obratnyj-redirekt/feed/" rel="self" type="application/rss+xml" />
	<link>http://brotkin.ru/2009/09/09/obratnyj-redirekt/</link>
	<description>ковыряемся в Internet</description>
	<lastBuildDate>Mon, 30 Jan 2012 23:38:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
	<item>
		<title>От: BIakaVeron</title>
		<link>http://brotkin.ru/2009/09/09/obratnyj-redirekt/comment-page-1/#comment-335</link>
		<dc:creator>BIakaVeron</dc:creator>
		<pubDate>Sun, 13 Sep 2009 14:18:47 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=259#comment-335</guid>
		<description>Конечно, при отсутствии сохраненной страницы по умолчанию будет какое-то значение. Использование GET мне как-то не нравится внешне. Особенно, если придется передавать этот параметр через несколько страниц (в случае неоднократного показа формы, например в случае ошибок валидации)</description>
		<content:encoded><![CDATA[<p>Конечно, при отсутствии сохраненной страницы по умолчанию будет какое-то значение. Использование GET мне как-то не нравится внешне. Особенно, если придется передавать этот параметр через несколько страниц (в случае неоднократного показа формы, например в случае ошибок валидации)</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: ANT</title>
		<link>http://brotkin.ru/2009/09/09/obratnyj-redirekt/comment-page-1/#comment-334</link>
		<dc:creator>ANT</dc:creator>
		<pubDate>Sun, 13 Sep 2009 12:03:24 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=259#comment-334</guid>
		<description>У каждого решения есть свои минусы и плюсы(не понимаю чем Вам не нравится вариант с адресов перехода в гете? Многие так делают и все работает как часы, например google).

Еще один глюк, когда пользователь зашел на страницу логирования, а потом зашел через день, у него будет уже новая сессия и его некуда будет редиректить.

можно написать функцию, которая при отсутствии урл-а в сессии редиректил на дефолтную страницу. Например для страницы входа, это страница админки(если вошел админ) и главная страница для обычного пользователя, для редактирования статьи - список всех статей.</description>
		<content:encoded><![CDATA[<p>У каждого решения есть свои минусы и плюсы(не понимаю чем Вам не нравится вариант с адресов перехода в гете? Многие так делают и все работает как часы, например google).</p>
<p>Еще один глюк, когда пользователь зашел на страницу логирования, а потом зашел через день, у него будет уже новая сессия и его некуда будет редиректить.</p>
<p>можно написать функцию, которая при отсутствии урл-а в сессии редиректил на дефолтную страницу. Например для страницы входа, это страница админки(если вошел админ) и главная страница для обычного пользователя, для редактирования статьи &#8211; список всех статей.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Alexander Kupreev</title>
		<link>http://brotkin.ru/2009/09/09/obratnyj-redirekt/comment-page-1/#comment-333</link>
		<dc:creator>Alexander Kupreev</dc:creator>
		<pubDate>Thu, 10 Sep 2009 11:16:05 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=259#comment-333</guid>
		<description>Немного подумав, мне кажется, что это достаточно простой метод чтобы быть практически пригодным. Возможны, наверное, и какие-то более автоматические &quot;config-using&quot; решения, облегчающие программинг, но этого должно хватить для обычных задач.</description>
		<content:encoded><![CDATA[<p>Немного подумав, мне кажется, что это достаточно простой метод чтобы быть практически пригодным. Возможны, наверное, и какие-то более автоматические &#8220;config-using&#8221; решения, облегчающие программинг, но этого должно хватить для обычных задач.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: BIakaVeron</title>
		<link>http://brotkin.ru/2009/09/09/obratnyj-redirekt/comment-page-1/#comment-332</link>
		<dc:creator>BIakaVeron</dc:creator>
		<pubDate>Thu, 10 Sep 2009 10:23:21 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=259#comment-332</guid>
		<description>Ну да, общий принцип такой же. Только вместо ручных вызовов (get() и set() класса Custom_Storage) все будет выполняться автоматически, на основании свойства $history.</description>
		<content:encoded><![CDATA[<p>Ну да, общий принцип такой же. Только вместо ручных вызовов (get() и set() класса Custom_Storage) все будет выполняться автоматически, на основании свойства $history.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Alexander Kupreev</title>
		<link>http://brotkin.ru/2009/09/09/obratnyj-redirekt/comment-page-1/#comment-331</link>
		<dc:creator>Alexander Kupreev</dc:creator>
		<pubDate>Thu, 10 Sep 2009 10:15:23 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=259#comment-331</guid>
		<description>То, о чем вы сказали, но другими словами

Допустим, перед тем, как выбрать форму оплаты, нужно залогиниться
&lt;code&gt;
public function pay ()
{
	// проверяем залогиненность
	if ( ! User::is_logged())
	{
		// запоминаем в сессии либо базе страницу
		Custom_Storage::set(&#039;return_after_login&#039;,&#039;pay&#039;);

		url::redirect(&#039;login&#039;);
	}

	// нормальный воркфлоу

}

// В методе login() после успешного логина проверяем, надо ли куда возвращаться

public method login()
{
	// процедура залогинивания
	...
		// юзер успешно залогинился
		$referrer = Custom_Storage::get(&#039;return_after_login&#039;, NULL);

		if ($referrer)
		{
			url::redirect($referrer);
		}

}
&lt;/code&gt;

Тут, конечно, хардкодинг, но, думаю, несложно сделать более гибко.</description>
		<content:encoded><![CDATA[<p>То, о чем вы сказали, но другими словами</p>
<p>Допустим, перед тем, как выбрать форму оплаты, нужно залогиниться<br />
<code><br />
public function pay ()<br />
{<br />
	// проверяем залогиненность<br />
	if ( ! User::is_logged())<br />
	{<br />
		// запоминаем в сессии либо базе страницу<br />
		Custom_Storage::set('return_after_login','pay');</p>
<p>		url::redirect('login');<br />
	}</p>
<p>	// нормальный воркфлоу</p>
<p>}</p>
<p>// В методе login() после успешного логина проверяем, надо ли куда возвращаться</p>
<p>public method login()<br />
{<br />
	// процедура залогинивания<br />
	...<br />
		// юзер успешно залогинился<br />
		$referrer = Custom_Storage::get('return_after_login', NULL);</p>
<p>		if ($referrer)<br />
		{<br />
			url::redirect($referrer);<br />
		}</p>
<p>}<br />
</code></p>
<p>Тут, конечно, хардкодинг, но, думаю, несложно сделать более гибко.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: BIakaVeron</title>
		<link>http://brotkin.ru/2009/09/09/obratnyj-redirekt/comment-page-1/#comment-330</link>
		<dc:creator>BIakaVeron</dc:creator>
		<pubDate>Thu, 10 Sep 2009 05:37:00 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=259#comment-330</guid>
		<description>Проблема маловероятна, но возможна. Я с таким сталкивался. На самом деле последний вариант решения просто оптимизирует работу предыдущего, ничего не усложняя.
А по поводу Flash_Messages я более спокоен, т.к. они используются обычно при непосредственной обработке форм, т.е. между отработкой контроллера и редиректом на страницу с результатами (в том числе и сообщениями, сохраненными в флэш-сессии) очччень проблематично успеть побегать по закладкам.</description>
		<content:encoded><![CDATA[<p>Проблема маловероятна, но возможна. Я с таким сталкивался. На самом деле последний вариант решения просто оптимизирует работу предыдущего, ничего не усложняя.<br />
А по поводу Flash_Messages я более спокоен, т.к. они используются обычно при непосредственной обработке форм, т.е. между отработкой контроллера и редиректом на страницу с результатами (в том числе и сообщениями, сохраненными в флэш-сессии) очччень проблематично успеть побегать по закладкам.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Kolger</title>
		<link>http://brotkin.ru/2009/09/09/obratnyj-redirekt/comment-page-1/#comment-329</link>
		<dc:creator>Kolger</dc:creator>
		<pubDate>Wed, 09 Sep 2009 20:09:58 +0000</pubDate>
		<guid isPermaLink="false">http://brotkin.ru/?p=259#comment-329</guid>
		<description>Мне кажется, что попытка избавится от подобных глюков когда сайт открыт более, чем в 2х вкладках — бесполезная трата времени. Сами посудите, какова вероятность того, что пользователь:
1. Во первой вкладке зайдет на страницу, требующую логина. Страница запомнится.
2. Его перекидывает на страницу логина. Предыдущая страница в памяти.
3. Он перейдет во вторую вкладку и сделает ряд переходов.
4. Он вернется в первую вкладку и залогинется.
Мне кажется, шанс этого стремится к нулю. Но если пытаться избежать этого, то стоит тогда сразу подумать и о сохранении Flash_Messages. А там ситуация менее тривиальна.</description>
		<content:encoded><![CDATA[<p>Мне кажется, что попытка избавится от подобных глюков когда сайт открыт более, чем в 2х вкладках — бесполезная трата времени. Сами посудите, какова вероятность того, что пользователь:<br />
1. Во первой вкладке зайдет на страницу, требующую логина. Страница запомнится.<br />
2. Его перекидывает на страницу логина. Предыдущая страница в памяти.<br />
3. Он перейдет во вторую вкладку и сделает ряд переходов.<br />
4. Он вернется в первую вкладку и залогинется.<br />
Мне кажется, шанс этого стремится к нулю. Но если пытаться избежать этого, то стоит тогда сразу подумать и о сохранении Flash_Messages. А там ситуация менее тривиальна.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

