Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция referer(), не всегда работает 
:(
    Опции темы
Forza
Дата 18.9.2004, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Есть в Перле функция referer(), которая возвращает URL, с которого был осуществлён переход на текущую страницу.
В результате экспериметов было выяснено, что она вернёт этот URL только в том случае, если переход был осуществлён с помощью нажатия юзером на гиперссылку. То есть если URL-адрес ввести вручную в строке броузера "адрес" или сделать переход с помощью функции JavaScript (location.search = '?choice=someChoice;param=someParam'), то функция referer() не возвращает ничего. sad.gif
Это как-нибудь поправимо? Меня интересует вариант с переходом через ДжаваСкрипт.

Да, конечно, существует ряд вариантов обхода данной проблемы, но интересно, разрешима ли она напрямую, раз уж я столкнулся с ней. rolleyes.gif

Это сообщение отредактировал(а) Forza - 18.9.2004, 15:31
PM MAIL   Вверх
GoodBoy
Дата 20.9.2004, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Цитата(Forza @ 18.9.2004, 16:18)
Есть в Перле функция referer(), которая возвращает URL, с которого был осуществлён переход на текущую страницу.

Не будет ли любезен глубокоуважаемый Forza рассказать откуда в Перле взялась функция referer()??? В самом ЯЗЫКЕ такого и близко нет!

GoodBoy, в следующий раз вежлевее и спокойнее!


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Forza
Дата 20.9.2004, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Это функция модуля CGI.pm.

Мне на другом форуме уже про неё объяснили, я её больше не использую.
PM MAIL   Вверх
GoodBoy
Дата 20.9.2004, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Forza
Цитата(Forza @ 20.9.2004, 12:29)
Это функция модуля CGI.pm.

Мне на другом форуме уже про неё объяснили, я её больше не использую.

Понятно!!!! Ну поделись тогда и с нами информацией!!! :-)))


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Forza
Дата 22.9.2004, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Цитата(GoodBoy @ 20.9.2004, 11:34)
Понятно!!!! Ну поделись тогда и с нами информацией!!! :-)))

Для оставания на той же самой странице в форме, которая сабмитится, в хиддене записываю урл текущей страницы.
PM MAIL   Вверх
GoodBoy
Дата 23.9.2004, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Forza
Подобная тема многократно поднималась... Делай субмит с возвратом ответа в нулевой ифрейм и всё!!! Тогда останешься на той же странице!!!


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Forza
Дата 23.9.2004, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Цитата(GoodBoy @ 23.9.2004, 10:25)
Подобная тема многократно поднималась... Делай субмит с возвратом ответа в нулевой ифрейм и всё!!!

Можно ссылку на тред?
А я пока сам попробую его поискать.
PM MAIL   Вверх
GoodBoy
Дата 23.9.2004, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



ссылку не знаю... много раз такое поднималось...

Код
<form ... target=ret_frame>
...........
</form>
<iframe name=ret_frame style="display:none"></iframe>

Что-нить такого типа...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Forza
Дата 23.9.2004, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Цитата(GoodBoy @ 23.9.2004, 10:38)
Что-нить такого типа...

Ок, спасибо, попробую реализовать. Если не будет получаться, вернусь. smile.gif
PM MAIL   Вверх
Forza
Дата 23.9.2004, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



GoodBoy, я тут подумал и решил, что твой вариант мне не очень подходит.
Ведь мне надо после сабмита формы остаться на том же самом URL, но при этом надо получить обновлённый вид страницы для этого URL.
Поясню: у меня форма авторизации юзера присутствует на каждой странице. После сабмита данной формы юзер должен остаться на том же URL, но его надо обновить, т.к. там вместо "Здрасте, гость!" будет "Здрасте, Вася Пупкин!" и т.д.

В варианте с фрэймом мне на сабмит формы надо повесить рефреш всей страницы, и получается, будет 2 обращения к серверу: через фрейм и для рефреша страницы. Надо ли мне это?

Если я не прав, с интересом послушаю аргументы.

PM MAIL   Вверх
wlad
Дата 23.9.2004, 13:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Чего-то как-то я не до конца понял. У тебя есть набор страниц на которых должна выводится либо форма авторизации либо некий текст, если юзер авторизован. Авторизация проводится тем же скриптом? Или отдельным? Если тем же то
Код
<form ... target="">
...........
</form>

И никуда он не денется.
А если отдельным, то адрес тебе надо не в хиденах в форме писать, а в скрипте авторизации "ловить"....

Или все гораздо сложнее?
  Вверх
Forza
Дата 23.9.2004, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Скрипт на всё один, отличаются только параметры.

У меня что-то типа Инет-магазина, юзер заходит поначалу в качестве гостя, и на каждой странице (каталог, поиск, корзина) для него есть меню с формой авторизации. Надо чтобы после авторизации юзер остался на той же странице, у которой немного изменятся меню и проч., но не основное содержание: т.е. исчезнет форма авторизации, появится имя юзера в приветствии и т.д., но при этом юзер должен, например, остаться в каталоге на ту же самую букву.

Раньше я после удачной авторизации вносил в переменные сессии ID юзера из базы, сохранял сессию и писал print redirect (referer()). И далее по наличии в переменных сессии ID юзера скрипт догадывался, имеем мы дело с гостем или с зарегистрированным юзером, и соответствующим образом "оформлял" страницу.

Теперь в форме авторизации есть хидден с текущим урлом, и после обработки авторизации и сохранения сессии я делаю print redirect (param("source_url")).
PM MAIL   Вверх
wlad
Дата 23.9.2004, 14:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я бы в такой ситуации просто не писал бы в форме target=""
И логика скрипта была бы примерно следующей. Проверка "а не хочет ли юзер логиниться?" Если хочет, проверка по базе корректности введенных логин-пароль, если все ок, тогда сохраняю сессию и передаю дальше скрипту переменные что это конкретный залогиненый юзер. Далее твоя логика работы.
В противном случае скрипт пытается понять авторизован юзер или нет. И снова твоя логика работы.

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

А если хочется чего то прятать в хиден... ну а на QUERY_STRING ты не смотрел? Имя то скрипта ты и так знаешь, добавь к нему QUERY_STRING и будет текущий УРЛ....
  Вверх
Forza
Дата 24.9.2004, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Итак, сабмит формы я сделал по-своему, т.е. с хранением урла (конечно, не целого урла, а только query_string) в хиддене.

Теперь, ещё раз пробегаясь по скрипту, я "вспомнил", что после оформления добавления товара в корзину (обработка урла "my.pl?action=add;id=1") опять же вызывалось print redirect (referer()) для вывода той же страницы.
Получается, что теперь в каждый урл добавления определённого товара надо вставить информацию о каталоге, из которого он был добавлен, или ключевые слова поиска, из результатов которого он был добавлен.
Или, может быть, лучше повесить на onClick JS-функцию, которая будет запускать в невидимом фрейме обработчик добавления в корзину, а потом рефрешить страницу (рефреш нужен, т.к. на каждой странице есть счётчик товаров в корзине)?

Что посоветуете?
PM MAIL   Вверх
GoodBoy
Дата 24.9.2004, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Forza
По-моему тебя спасут куки!!! :-)))


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.