[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как определить HTTP_REFERER?
cx717
День добрый всем.
Может кто подскажет в каком направлении копать - буду признателен.
В корне сайта создана страница domain.ru/link.php с элементарным кодом:

<?php
echo '<a href="domain.ru/script.php">Push Me</a>';

Так же в корне есть страница domain.ru/script.php с элементарным кодом:

<?php
echo 'http_referer = ' . $_SERVER['HTTP_REFERER'];

Так вот $_SERVER['HTTP_REFERER'] не определяется, хотя мы попадаем на страницу
domain.ru/script.php со страницы domain.ru/link.php и HTTP_REFERER должен
определиться как domain.ru.
Вопрос:
- возможно ли, что в настройках сервера намеренно обнуляется $_SERVER['HTTP_REFERER'] ?
- сайт на битриксе - могут ли его настройки ( битрикса ) обнулять $_SERVER['HTTP_REFERER'] при том, что файлы лежат в корне и по идее не затрагиваются битриксом?
- может ли .htaccess ( который лежит в корне сайта ) обнулять $_SERVER['HTTP_REFERER'] ?
FatCat
echo "<pre>";
print_r($_SERVER);
echo "</pre>";

Посмотри что в массиве. Может быть виртуальный хост криво настроен и $_SERVER['HTTP_REFERER'] пустой — у меня раз что-то такое было с криворуким сисадмином.

_____________
Бесплатному сыру в дырки не заглядывают...
cx717
Сделал. В массиве $_SERVER просто нет переменной HTTP_REFERER.
Она не пустая, как к примеру

[QUERY_STRING] =>

а ее просто нет в списке.
То есть Вы считаете - это настройки сервера удаляют HTTP_REFERER ?
killer8080
Цитата (cx717 @ 27.05.2021 - 10:10)
просто нет переменной HTTP_REFERER.
Она не пустая, как к примеру

  [QUERY_STRING] =>

С префиксом HTTP_ идут клиентские заголовки, что браузер прислал, то там и будет. Другие заголовки присутствуют?

Реферер может быть отключен в настройках браузера, может резаться адблоками, анонимайзерами и т.п. Сначала проверь предается ли этот заголовок
https://www.whatismyreferer.com/
FatCat
Я не специалист по настройке сервера.
Просто помню историю, когда все посетители вдруг стали с одним айпишником 127.0.0.1. Переговоры с сисадмином проблему не решили, пришлось менять хостера.


Цитата (killer8080 @ 27.05.2021 - 10:33)
С префиксом HTTP_ идут клиентские заголовки, что браузер прислал, то там и будет.

Если браузер не прислал, будет:
[HTTP_REFERER] =>

_____________
Бесплатному сыру в дырки не заглядывают...
killer8080
Цитата (FatCat @ 27.05.2021 - 10:43)
Если браузер не прислал, будет:
[HTTP_REFERER] =>

нет не будет, префикс HTTP_ добавляется к форматированному имени заголовка. Если заголовка нет, то и ключа нет.
cx717


Некоторые значения я заменил на xxx, там где пусто как на пример:
[SERVER_SIGNATURE] =>

там так и было - ничего не удалял.

Вот что выдал $_SERVER:



Array
(
[HTTP_HOST] => domain.ru
[HTTP_X_REAL_IP] => x.18.241.198
[HTTP_X_FORWARDED_FOR] => x.18.241.198
[HTTP_CONNECTION] => close
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
[PATH] => xxx
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.2.35-dev (Unix) mod_ssl/2.2.35-dev OpenSSL/1.0.2k-fips Phusion_Passenger/5.1.12 PHP/5.4.45 mod_wsgi/4.7.1 Python/3.6
[SERVER_NAME] => domain.ru
[SERVER_ADDR] => 127.5.4.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => xxx
[DOCUMENT_ROOT] => xxx/htdocs/www/
[SERVER_ADMIN] => xxx
[SCRIPT_FILENAME] => xxx/script.php
[REMOTE_PORT] => 44628
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /script.php
[SCRIPT_NAME] => /script.php
[PHP_SELF] => /script.php
[REQUEST_TIME_FLOAT] => 1622099266.223
[REQUEST_TIME] => 1622099266
[argv] => Array
(
)

[argc] => 0
)
cx717
Цитата (cx717 @ 27.05.2021 - 10:10)


Реферер может быть отключен в настройках браузера, может резаться адблоками, анонимайзерами и т.п.


В одном и том же браузере с адблоком проверяю тот же код на другом сервере и http_referer определяется нормально.
https://www.whatismyreferer.com/ сейчас проверю.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.