Как выбрать только корневой домен из $ _SERVER ['HTTP_REFERER'] ;? - PullRequest
27 голосов
/ 29 января 2012

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

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

Ответы [ 3 ]

46 голосов
/ 29 января 2012
parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)

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

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

3 голосов
/ 29 января 2012

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

1 голос
/ 07 января 2016

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

 $_SERVER['SERVER_NAME']
...