parser


 

 
   команды управления поиском

Лучше было завести отдельную тему...

Sumo 01.10.2010 19:29 / 01.10.2010 19:35

... а не плодить еще одну ветку в безмерно разросшемся треде.

По сути вопроса. Понять, что вы пытаетесь делать, и какой при этом руководствуетесь логикой, почти невозможно поэтому опишу на пальцах простой алгоритм.

1. Если к нам пришел незалогиненый пользователь, то выводим ему на любой странице форму для логина с экшном на какой-нибудь /login. При этом никаких рефереров в поле не запихиваем.
2. Если нам постят форму на /login ("пост формы" лучше проверять по наличию в form какого-нибудь стандартного поля, например "dosend", ибо нам абсолютно все равно каким методом пришла форма на самом деле), то пробуем залогинить юзера. Если все прошло успешно, то редиректим пользователя на страницу из HTTP_REFERER, но при двух условиях: во-первых пришол он к нам с нашего домена (регуляркой проверить не сложно), во-вторых пришел не со страницы /login. Если одно из условий не выполняется, то просто редиректим в корень сайта.
3. Если пользователь залогинен и пришел на /login, то можем спокойно его отридеректить все в тот же корень.

p.s. Настоятельно рекомендую перестать "играться" с taint'ами - Парсер сам прекрасно знает, что надо делать в 99% случаев. Т.е. в вашем коде ^untaint[html] вобще не имеет смысла - это то преобразование, которое парсер сделает автоматически, а про ^taint[as-is][$form:return_url] надо забыть как про страшный сон - вы просто отключили весь защитный механизм, а это может привести к плохим последствиям.