Как выбрать только корневой домен из $_SERVER['HTTP_REFERER'];?

Я хочу иметь страницу 404, которая может определять, перешел ли пользователь на эту страницу либо через мой сайт, либо через мой сокращенный URL-адрес, либо через другой сайт, и я делаю это с помощью PHP. Я медленно осваиваю PHP, и это может быть простой вопрос, но я очень устал, если честно, и у меня нет кофеина в моей системе, и я хочу как можно скорее свести все концы с концами в своем портфолио. .

Я обнаружил, что переменная $_SERVER['HTTP_REFERER']; PHP дает мне полный URL-адрес, который является началом. Есть ли способ, которым это может дать мне только корневой домен, либо через другую переменную, либо через функцию, имея в виду, что некоторые рефереры могут использовать http:// и некоторые https:// (поэтому простое начало с седьмого символа будет не всегда работает)? Таким образом, я могу сопоставить URL-адрес на основе двух (или более) предопределенных адресов и создать контент, относящийся к этому домену.


person Nathan Bunn    schedule 29.01.2012    source источник


Ответы (3)


parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)

См. http://php.net/manual/en/function.parse-url.php. .

Обратите внимание, однако, что реферера очень легко подделать, поэтому он вряд ли надежен.

person deceze♦    schedule 29.01.2012
comment
Это прекрасно! Это работает отлично, за исключением того факта, что я не могу сделать то же самое с URL-адресами с переадресацией 301, что, как я думаю, может вызвать проблемы с моим сокращателем URL-адресов. Ничего, я найду способ. - person Nathan Bunn; 29.01.2012
comment
Кстати, насколько легко подделать URL-адреса? Может ли кто-нибудь легко подделать мой домен? Как? - person Nathan Bunn; 29.01.2012
comment
Я говорю, что referer легко подделать. Это просто произвольные, необязательные, добровольные данные, отправляемые в заголовке HTTP-запроса. Клиент может отправить туда все, что захочет. Есть плагины для браузера, которые изменят реферер на что угодно. - person deceze♦; 29.01.2012
comment
Ооооо, извините, спасибо, что объяснили мне это снова. Я не слишком беспокоюсь об этом, если честно, так как данные отображаются на странице 404 и не записываются, но все равно спасибо. Я не знал об этом, так что спасибо, что сообщили мне. - person Nathan Bunn; 29.01.2012

http://php.net/manual/en/function.parse-url.php может быть вашим лучшим выбором, хотя вы также можете использовать регулярное выражение, чтобы легко достичь того, что вы ищете.

person Dan LaManna    schedule 29.01.2012

это должно сделать:

 $_SERVER['SERVER_NAME']
person Matoeil    schedule 07.01.2016
comment
Не очень хороший вариант, так как если вы используете поддомен, например potato.domain.com, и хотите получить domain.com в качестве результата, это не удастся. OP указал корневой домен - person Cassandra; 07.09.2016