How do I select only the root domain from $_SERVER['HTTP_REFERER'];?

Nathan Bunn picture Nathan Bunn · Jan 29, 2012 · Viewed 32.5k times · Source

I want to have a 404 page that can detect if a user has come to that page either via my site, via my shortened URL or via another site, and I am making it using PHP. I am slowly getting to grips with PHP and this may well be a simple question, but I am quite tired to be honest and have no caffeine in my system, and I am wanting to tie up any loose ends in my portfolio as soon as possible.

I have found the $_SERVER['HTTP_REFERER']; PHP variable gives me the entire URL, which is a start. Is there a way that this can give me only the root domain, either via another variable or a function, bearing in mind that some referrers may be using http:// and some https:// (so simply starting from the seventh character would not always work)? That way, I can match the URL based on two (or more) predefined addresses and produce the content that relates to that domain.

Answer

deceze picture deceze · Jan 29, 2012
parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)

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

Note though that the referer is terrifically easy to spoof, so it's hardly reliable.