Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 528
Nathan Bunn Avatar asked Jan 29 '12 00:01

Nathan Bunn


People also ask

What is $_ server [' Http_referer ']?

$_SERVER['HTTP_REFERER'] Returns the complete URL of the current page (not reliable because not all user-agents support it)

Is HTTP referer reliable?

Using HTTP_REFERER isn't reliable, its value is dependent on the HTTP Referer header sent by the browser or client application to the server and therefore can't be trusted because it can be manipulated.


2 Answers

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.

like image 52
deceze Avatar answered Oct 09 '22 02:10

deceze


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.

like image 35
Dan LaManna Avatar answered Oct 09 '22 01:10

Dan LaManna