![]() |
$HTTP_REFERER
Помогите, плиз, определить откуда пришел пользователь...
Пробовал сабж, но что-то не хочет :( |
Так ты по ссылке перешел или просто запустил в браузере ?
Кстати я еще слышал про суету с $HTTP_REFERER и $HTTP_REFERRER , что один из них вроде таки убрали . PS: Не забывай что referrer это особенность работы браузера и в некоторых браузерах это можно отключить, а некоторые просто это не поддерживают . |
мелнький нюанс... из-за вопросов безопасности я бы посоветовал не $HTTP_REFERER а getenv("HTTP_REFERER");
|
Все, спасибо большое :) Это я просто чего-то стормозил... Разобрался. Значение HTTP_REFERER передается броузером в headers, если пользователь пришел откуда-то с другого сайта по ссылке, если же он просто набрал адрес в адресной строке, то значение остается пустым.
А насчет безопасности, то я просто использую: if(empty( $HTTP_REFERER )){ тра_ля_ля(); } ЗЫЖ Ну, если с этим разобрались, то может поможете мне узнать ответ вот на какой вопрос: К примеру у меня есть сайтик, постороенный на шаблонах. В htaccess на 404-ую он тоже выдает шаблон. К примеру redirect.php?page=404. Так вопрос заключается в том, чтобы определить на 404 странце урл какой страницы пользователь ввел до этого, что и привело его на 404? Вроде пока все :) |
дык.. вот REFERER и будет показывать.....
|
2 SaNChos: Ты что называешь 404 ? Server Responce Code или же результат работы скрипта ? Если первое, то referrer имхо только из логов можно выжать, а если второе, - то обычный HTTP_REFERER .
|
Нет, это просто урл такой :)
Можно его представить по другому, например: ErrorDocument 404 http://www.asd.qwe/errors/404.phtml Так вот в идеале надо, чтоб на 404-ой.пхтмл скриптом выяснялся реферер и выводилось, мол, Вы набрали тра-ля-ля, но такого у нас нет. Как это лучше определить? :/ |
тоже самое.... в перле он @ENV{'HTTP_REFERER'}
|
В случае с Error Document referrer будет определен, но в нем прийдется писать не "Вы набрали траляля", а "Вы пришли с траляля" или ничего . Как я уже говорил, в данном случае адрес страницы, которую не удалось отобразить можно выжать только из логов .
Впрочем методика залистовывания referrer'ов захода на страницу с 404 ошибкой, хорошо подходит для невнимательных веб-мастеров, у которых на сайте часто бьются внутренние ссылки . |
Ясно... спасибо всем.
ЗЫ А что ты имел ввиду под невнимательными веб-мастерами? :)) Я это спрашивал чтоб не дырдочки залатывать :) |
А зачем тогда ?
|
Ну, к примеру, есть у меня какой-то сервис... Клиент имеет свою личную панель настроек. Для удобства хотелось сделать так:
Не говорить ему, мол, для изменения настроек идите по ввв.мой_сайт.ру/клиенты/что-то_там.пхп?юзер=имя_юзера , а сразу имя_юзера.мой_сайт.ру Конечно, для каждого клиента регистрировать домен 3-его уровня никто не будет... Так вот: если, он набрал "имя_юзера.мой_сайт.ру", которого в природе не существует, то попадает на обработчик ошибки (вроде даже не 404), а там редиректом на "ввв.мой_сайт.ру/клиенты/что-то_там.пхп?юзер=имя_юзера", по средствам вычисления того, что он набрал... Всяко удобнее :) Теперь конкретно задача понятна? Может какие решения подскажите? Доставать из логов крайне бы не хотелось :( |
почитай доки по mod_rewrite для апача - не знаю насчёт домена 3го уровня, а вот переписать mojdomen.ru/vasja/ в mojdomen.ru/users.php?uin=vasja невидимо для клиента можно запросто.
|
Ну, это сделать не трудно. Просто, понимаешь, создавать отдельные папки для кажного юзера - дело тоже не совсем рациональное.
В идеале, вообще, нужен домен 4-ого уровня: вася.любители_пива.мой_сайт.ру Понимаешь? При такой штуке не придется ни папок, ни лишних доменов заводить, только база данных. Вот такая задачка... :( |
При использовании mod_rewrite тоже .
PS: У ряда хостеров все поддомены через mod_rewrite прописаны . |
А поподробнее, плиз, можно? :)
|
Ты документацию по mod_rewrite почитай для начала, а потом уже задавай вопросы что не выходит .
|
Ок, пасиб. Может есть ссылочка какая? :)
(Чего-то я последнее время много попрашайничать стал: расскажи, дай, покажи...) :) |
| Часовой пояс GMT +4, время: 17:30. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.