Sunday, January 29, 2012

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


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.

2 comments:

  1. 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.

    ReplyDelete
  2. http://php.net/manual/en/function.parse-url.php may be your best bet, although you could use a regular expression to achieve what you're looking for easily as well.

    ReplyDelete