Как определить с какой странички пришел пользователь не использую "HTTP_REFERER"

Aderba

Новичок
Как определить с какой странички пришел пользователь не использую "HTTP_REFERER"

Подскажите пожалуиста, передо мной поставлена задача определения с какой странички пришел пользователь не использую $_SERVER["HTTP_REFERER"]. Я уже голову поломала, в нете ничего толкового нет, может это вообще никак сделать нельзя. Помогите пожалуиста.
 

BRat

o_0
Пожалуйста, введите страничку, с которой вы пришли: <input type="text" name="referer" />
 

zerkms

TDD infected
Команда форума
Aderba
а откуда взялось требование, что реферер смотреть нельзя?
 

Aderba

Новичок
Да вот выяснилось что, $_SERVER["HTTP_REFERER"] не на всех серваках корректно работает, клиенты жалуются, вот и сказали чтоб как-то это исправить
 

Aderba

Новичок
Мда наверное это очень кажется смешным, а мне вот както неочень )))
 

zerkms

TDD infected
Команда форума
Aderba
это единственное, что у тебя есть и в принципе может быть
 

prolis

Новичок
А с какой целью вы эту переменную анализируете?
Я так понимаю, что анализ этой переменной активно используется в логике сайта. Если речь идёт о отслеживании переходов со своих страниц, то тут можно в параметры ссылки добавлять идентификатор ссылающейся страницы (href=http://www.ru/part1/?ref=/part2/). Глуповато выглядит, но что бы заработало как надо поможет.
Необходимо строить всю логику не надеясь на эту переменную, которая не у всех пользователей может проставляться и которой совсем нет у ботов.
 

Aderba

Новичок
Ну знаете решение может быть вот такое:

берем передаем document.refer, котор возращ javascript и смотрим то что вернул $_SERVER["HTTP_REFERER"], приоритет высший отдаем $_SERVER, если его нет тогда берем то что вернул javascript

-~{}~ 18.08.08 16:21:

Спасибо большое Prolis за понятное объяснение, буду пробовать реализовывать
 

dimagolov

Новичок
берем передаем document.refer, котор возращ javascript и смотрим то что вернул $_SERVER["HTTP_REFERER"], приоритет высший отдаем $_SERVER, если его нет тогда берем то что вернул javascript
ты понимаешь, что скрипт смотрит на $_SERVER["HTTP_REFERER"] ДО того как сформировал страницу и отправил на клиента, а JS на этой же странице заработает, когда она загрузиться в броузер и там (если ему дадут такую возможность) JS сможет посмотреть что броузер поставил в document.referrer? как их можно сравнить, если сервер НИКОГДА не узнает какой document.referrer будет у странички после загрузки?

п.с. ладно, если ты статистику себе собираешь. а если ты защиту делаешь на REFERER, то работать оно не будет ни под каким видом. защищать можно и нужно формы путем генерации уникального ID формы в hidden input при каждого запросе формы и проверяя его при получении значений этой формы
 

prolis

Новичок
Aderba А вы находчивая, хорошо находите грабли, куда ещё можно ступить. Яваскрипт вас тоже разочарует.
Так с какой целью скрипту нужен реферер?
 

Aderba

Новичок
Да вроде то все просто, в программе(!), кот генерит web-приложение на основе БД, к примеру смена пароля переходим на страничку где меняем пароль, поменяли или нет, есть ссылка вернуться обратно, от куда пришли, вот здесь то и нужно сделать.
 

Фанат

oncle terrible
Команда форума
делай ссылку яваскриптом, и не парься.
не реферер, а ссылку "вернуться". как везде сделано
 

Иван 76

Новичок
Автор оригинала: Aderba
Да вот выяснилось что, $_SERVER["HTTP_REFERER"] не на всех серваках корректно работает, клиенты жалуются, вот и сказали чтоб как-то это исправить
Посоветуйте клиентам не пользоваться Оперой, если они не умеют ее правильно настроить. Думаю, - прокси здесь не причем. Я частенько с подобным сталкивался, - как выяснилось, это имело отношение в большинстве случаев к Опере, которая позволяет пользователям легко отключать передачу HTTP_REFERER. По непонятной для меня причине, она отключена у довольно немаленького кол-ва ее пользователей. Похоже, пользователи ее просто отключают, не понимая значения этой опции, наивно полагая, что это какое-то шпионское слежение.

PS: можно так же с помощью JavaScript загнать location в куку, - думаю, куки не теряются.
Сылка history.back(); вернет кеш браузера. Не уверен, что информация страницы не должна измениться после авторизации. В таком случае, нужно еще делать и reload (или refresh, - не помню).
 
Сверху