![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Forza |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 12.9.2004 Репутация: нет Всего: 2 |
Есть в Перле функция referer(), которая возвращает URL, с которого был осуществлён переход на текущую страницу.
В результате экспериметов было выяснено, что она вернёт этот URL только в том случае, если переход был осуществлён с помощью нажатия юзером на гиперссылку. То есть если URL-адрес ввести вручную в строке броузера "адрес" или сделать переход с помощью функции JavaScript (location.search = '?choice=someChoice;param=someParam'), то функция referer() не возвращает ничего. Это как-нибудь поправимо? Меня интересует вариант с переходом через ДжаваСкрипт. Да, конечно, существует ряд вариантов обхода данной проблемы, но интересно, разрешима ли она напрямую, раз уж я столкнулся с ней. Это сообщение отредактировал(а) Forza - 18.9.2004, 15:31 |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
Не будет ли любезен глубокоуважаемый Forza рассказать откуда в Перле взялась функция referer()??? В самом ЯЗЫКЕ такого и близко нет! GoodBoy, в следующий раз вежлевее и спокойнее! |
|||
|
||||
| Forza |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 12.9.2004 Репутация: нет Всего: 2 |
Это функция модуля CGI.pm.
Мне на другом форуме уже про неё объяснили, я её больше не использую. |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
Forza
Понятно!!!! Ну поделись тогда и с нами информацией!!! :-))) |
|||
|
||||
| Forza |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 12.9.2004 Репутация: нет Всего: 2 |
Для оставания на той же самой странице в форме, которая сабмитится, в хиддене записываю урл текущей страницы. |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
Forza
Подобная тема многократно поднималась... Делай субмит с возвратом ответа в нулевой ифрейм и всё!!! Тогда останешься на той же странице!!! |
|||
|
||||
| Forza |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 12.9.2004 Репутация: нет Всего: 2 |
Можно ссылку на тред? А я пока сам попробую его поискать. |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
ссылку не знаю... много раз такое поднималось...
Что-нить такого типа... |
|||
|
||||
| Forza |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 12.9.2004 Репутация: нет Всего: 2 |
Ок, спасибо, попробую реализовать. Если не будет получаться, вернусь. |
|||
|
||||
| Forza |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 12.9.2004 Репутация: нет Всего: 2 |
GoodBoy, я тут подумал и решил, что твой вариант мне не очень подходит.
Ведь мне надо после сабмита формы остаться на том же самом URL, но при этом надо получить обновлённый вид страницы для этого URL. Поясню: у меня форма авторизации юзера присутствует на каждой странице. После сабмита данной формы юзер должен остаться на том же URL, но его надо обновить, т.к. там вместо "Здрасте, гость!" будет "Здрасте, Вася Пупкин!" и т.д. В варианте с фрэймом мне на сабмит формы надо повесить рефреш всей страницы, и получается, будет 2 обращения к серверу: через фрейм и для рефреша страницы. Надо ли мне это? Если я не прав, с интересом послушаю аргументы. |
|||
|
||||
| wlad |
|
|||
|
Unregistered |
Чего-то как-то я не до конца понял. У тебя есть набор страниц на которых должна выводится либо форма авторизации либо некий текст, если юзер авторизован. Авторизация проводится тем же скриптом? Или отдельным? Если тем же то
И никуда он не денется. А если отдельным, то адрес тебе надо не в хиденах в форме писать, а в скрипте авторизации "ловить".... Или все гораздо сложнее? |
|||
|
||||
| Forza |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 12.9.2004 Репутация: нет Всего: 2 |
Скрипт на всё один, отличаются только параметры.
У меня что-то типа Инет-магазина, юзер заходит поначалу в качестве гостя, и на каждой странице (каталог, поиск, корзина) для него есть меню с формой авторизации. Надо чтобы после авторизации юзер остался на той же странице, у которой немного изменятся меню и проч., но не основное содержание: т.е. исчезнет форма авторизации, появится имя юзера в приветствии и т.д., но при этом юзер должен, например, остаться в каталоге на ту же самую букву. Раньше я после удачной авторизации вносил в переменные сессии ID юзера из базы, сохранял сессию и писал print redirect (referer()). И далее по наличии в переменных сессии ID юзера скрипт догадывался, имеем мы дело с гостем или с зарегистрированным юзером, и соответствующим образом "оформлял" страницу. Теперь в форме авторизации есть хидден с текущим урлом, и после обработки авторизации и сохранения сессии я делаю print redirect (param("source_url")). |
|||
|
||||
| wlad |
|
|||
|
Unregistered |
Я бы в такой ситуации просто не писал бы в форме target=""
И логика скрипта была бы примерно следующей. Проверка "а не хочет ли юзер логиниться?" Если хочет, проверка по базе корректности введенных логин-пароль, если все ок, тогда сохраняю сессию и передаю дальше скрипту переменные что это конкретный залогиненый юзер. Далее твоя логика работы. В противном случае скрипт пытается понять авторизован юзер или нет. И снова твоя логика работы. Просто на момент логина таким образом я бы сэкономил один переход между страницами. И не надо запоминить с откуда логинился, если логинился. А если хочется чего то прятать в хиден... ну а на QUERY_STRING ты не смотрел? Имя то скрипта ты и так знаешь, добавь к нему QUERY_STRING и будет текущий УРЛ.... |
|||
|
||||
| Forza |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 12.9.2004 Репутация: нет Всего: 2 |
Итак, сабмит формы я сделал по-своему, т.е. с хранением урла (конечно, не целого урла, а только query_string) в хиддене.
Теперь, ещё раз пробегаясь по скрипту, я "вспомнил", что после оформления добавления товара в корзину (обработка урла "my.pl?action=add;id=1") опять же вызывалось print redirect (referer()) для вывода той же страницы. Получается, что теперь в каждый урл добавления определённого товара надо вставить информацию о каталоге, из которого он был добавлен, или ключевые слова поиска, из результатов которого он был добавлен. Или, может быть, лучше повесить на onClick JS-функцию, которая будет запускать в невидимом фрейме обработчик добавления в корзину, а потом рефрешить страницу (рефреш нужен, т.к. на каждой странице есть счётчик товаров в корзине)? Что посоветуете? |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 4 Всего: 83 |
Forza
По-моему тебя спасут куки!!! :-))) |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |