Модераторы: 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   Вверх
Forza
Дата 24.9.2004, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
По-моему тебя спасут куки


Куки и так используются. В них хранится ID сессии Apache::Session, которая в свою очередь хранит корзину и ID юзера (если он зарегистрировался). Предлагаешь каждый раз копировать в данные сессии текущий УРЛ каталога или поиска, и в случае добавления в корзину делать на него редирект?

Это сообщение отредактировал(а) Forza - 24.9.2004, 15:58
PM MAIL   Вверх
wlad
  Дата 24.9.2004, 15:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Forza @ 24.9.2004, 15:30)

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

Что посоветуете?


Можно все это реализовать с помощью JS. И что бы не рефрешить страницу совершенно спокойно можно использовать что то типа "document.formname.elementname.value='value';" или document.write. С последующим беспорным нажатием на кнопку проверить заказ, когда у тебя данные будут выниматься из хиден полей и заказ по новой будет пересчитываться скриптом на сервере.

А вообще дай скрипту "отстояться" с месяцок. А потом глянь на него свежим взглядом. Или приятелей попроси потестить. Может ты чего придумываешь чего народу не совсем надо. smile.gif



  Вверх
Forza
Дата 25.9.2004, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



wlad,
Цитата
Можно все это реализовать с помощью JS. И что бы не рефрешить страницу совершенно спокойно можно использовать что то типа "document.formname.elementname.value='value';"

Нет, только ДжаваСкриптом обрабатывать нажатие на "положить в корзину" нельзя, т.к. каждое добавление в корзину должно сразу же записываться в данные на сервере, чтобы если юзер закрыл страницу, а потом вернулся, у него была бы всё та же корзина.
Цитата
А вообще дай скрипту "отстояться" с месяцок. А потом глянь на него свежим взглядом. Или приятелей попроси потестить. Может ты чего придумываешь чего народу не совсем надо.

Нет времени отстаиваться. И что значит "народу не надо"? По-моему, сейчас я спросил про очень банальную вещь - оставание на той же самой странице, с которой товар был положен в корзину.

GoodBoy,
Поясни всё-таки, пожалуйста, каким образом ты предлагаешь использовать куки? Так, как я написал 24.9.2004, 15:51?

PM MAIL   Вверх
GoodBoy
Дата 27.9.2004, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Forza @ 25.9.2004, 11:59)
Нет времени отстаиваться. И что значит "народу не надо"? По-моему, сейчас я спросил про очень банальную вещь - оставание на той же самой странице, с которой товар был положен в корзину.

Во многих магазина корзина сделана в виде отдельного поп-ап окна. Может и тебе имеет смысл сделать так??? И товар добавится и на странице останешься!!! Вот, к примеру: http://www.yex.ru/shop/?00000802


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

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


Шустрый
*


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

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



Цитата
Во многих магазина корзина сделана в виде отдельного поп-ап окна. Может и тебе имеет смысл сделать так???

Не имеет. Во-первых, много придётся переделывать (по сути весь магазин уже сделан, осталось заменить print redirect (referer() на что-нибудь другое), во-вторых, внешний вид и общая логика определяются не мною. Я вот в этой теме расписал все варианты, которые приходят в голову. Пока выбираю между г) и д).
PM MAIL   Вверх
GoodBoy
Дата 27.9.2004, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вариант Г - не прокатит именно из-за innerHTML...


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

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


Шустрый
*


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

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



Значит, лучше "д)"?

А innerHTML только в MSIE поддерживается?
PM MAIL   Вверх
GoodBoy
Дата 27.9.2004, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Forza @ 27.9.2004, 13:09)
А innerHTML только в MSIE поддерживается?

Насколько я помню - да...


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

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


Шустрый
*


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

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



Так какой вариант ты порекомендуешь? "Д"? Процитирую его здесь:
д) Записывать в переменную сессии очередной урл, если он связан с выводом списка товаров (а не, например, добавление или удаление), и делать на него переход, если было получен запрос на добавление товара в корзину. Плюс - нет JavaScript, не надо сохранять текущий урл где-то на странице. Минус - необходимость в рефреше страницы.

Кроме рефреша страницы минусов не вижу. Всё остальное - вполне симпатично, да?
PM MAIL   Вверх
GoodBoy
Дата 27.9.2004, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Forza
Пожалуй, да!


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

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


Шустрый
*


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

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



Ок. Спасибо.

Хотел тебе репутацию поднять, а мне сказали, что у меня сообщений мало. Придётся флудить. adv/24.gif
PM MAIL   Вверх
GoodBoy
Дата 27.9.2004, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Forza
как до 100 дойдешь - так сможешь!!! wink.gif


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

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



Вот про перл не в курсе, а PHP есть такое понятие как сессия. Так вот PHP для каждого новопришедшего (не залогиневшегося с твоей формы, а просто попавшего на твой сайт) юзера заводит сессию (все значения переменных сессии при дефолтовых настройках PHP хранятся в тмп-шном файле), в которой ты можешь хранить все, что душе угодно: историю перемещений по сайту в течении сессии, имя юзера, содержимое корзины ( smile.gif почему у меня корзина ассоциируется в первую очередь с удаленными файлами?.. smile.gif )... Каждой новой сессии на сервере назначается уникальный SID, который передается клиенту. Если cookies в браузере клиента включены, то SID сохраняется там и передается серверу вместе с запросом каждой новой страницы, если нет, то его (и только его) приходится ручками дописывать к ссылкам (хотя могу и ошибаться...) и вставлять как hidden в формы.
Добавлено @ 17:47
УПС!!! Не заметил, что есть вторая страница smile.gif smile.gif smile.gif
PM MAIL   Вверх
ElectricalStorm
Дата 29.9.2004, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Zandr я Вам по секрету скажу что сессия это не в PHP такое понятие ... это общий механизм
и реализовать его можно на любом языке...


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


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

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


 




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


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

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