PHP referrer URL of a page

Referrer is the URL from where the visitor has arrived to the page. If you have reached here by clicking a link from then google URL is the referrer for you in this page. We can find out the referrer by using PHP. This is useful for the webmasters to know where from the traffic to the site is coming. Which advertisement campaign is successful and which is not. We will also know the keywords used by the visitors in different search engines to arrive at the site. Here is the simple code to know the referrer in PHP
echo "Referrer of this page  = $ref ";
There is no referrer information available for this visit

Return to this page by visiting other pages under the heading Related tutorial, then you can see your referrer URL.

@ is used to suppress any error message is generated. You can remove it and check.

Breaking the referrer URL

Here is an example of referrer URL we can get from HTTP header. This one is from Google.
We are interested to know how many visitors are arriving from Google or from any other search engines. So we will find out the host part from this URL by using parase_url() function. This function returns us an array of elements. Here is the code to display the array.
usg=AFQjCNFqBr-A1sG3F2UoqzmqnGUYVTvb9Q&bvm=bv.83134100,d.c2E"; $details=parse_url($url); //echo $details[host]; while (list ($key, $val) = each ($details)) { echo "$key -> $val <br>"; }
Output is here
scheme -> http 
host -> 
path -> /url 
query -> sa=t&rct=j&q=&esrc=s&source=web&
We are interested in only the domain part of this so we can get the name of the site sending us the visitors like this.
echo $details[host];
We can store only this information in a table and find out the domains which are sending us the traffic.

You can create one application where we will store only the domain part of the referral site and prepare a report saying which site has send how many visitors to a page or site.

Storing referrer along with other data.

We can collect and store visitors IP address, referrer, browser details, time of visit etc in MySQL database table or in a CSV file

Google has recently changed to secured search where search words are encrypted so they are no longer passed to user sites. Before that it was easy to find out search keywords using referrer string.

Getting search query from referrer address.

If the search is not encrypted then we can get the search query from the referrer query string. For this we will use one Bing search as an example. First we will break the referred url by using parse_url function and take out the query string part. From the query string we will take out the text query part by using parse_str function.
echo $output[q];
The output is here
php get ip and network
Same way you can find out the ip address of visitors to your site by using PHP. Click here to know the IP address by using PHP.

Getting referrer URL in ASP

Some of the browsers setting can be changed to stop the browser from sending any referrer information. Read here to know how you can change the settings for FireFox browser for referrer.

Number of User Comments : 14



Not working


It doesn't work for me either... but this does: $ref = $_SERVER['HTTP_REFERER'];
Sumit Joshi


Great...Fully Working for Me. Great help... Since long time I was looking for this. You are great... Thanks again


This is very bad advise, This code will only work when the php.ini setting register_globals is set to on. Having register globals set to on is a security risk and is normally set to off on modern hosting platforms. The use of the error suppression operator '@' is also a concern. You should use somthing like $ref = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : '';


@jeremy The outer parentheses wrapping "isset" aren't necessary, are they?


$_SERVER['HTTP_REFERER'] is working well


Thanks! But, how get refereer's page title?


Don't take it that these variables are always "there". Use isset to avoid a PHP notice which (when many) can slow site performance down.


is there a way to format the output? sorry i have to type out the slashes cause the post thinks i am putting a link in the post... anyhow $_SERVER['HTTP_REFERER']; gives output with the h t t p:slashslash/ can you format it to be without the h t t p: and just be only? Does anyone know how to format the output? Thanks!


yes..working.........superb site for php learners...:) nice one


@ will: just use $ref = substr($ref, 7);


Sir,i want a function when user come into my site using any REFERER a mail will be send at to my email :)note only for REFERER not for all user


is it possible to get e-mail address when a link (to my server) in an e-mail clicked by php code?


If the link contains any tracking code or email address then we can get the email address. This is what spam email links does. Even images src address submit a tracking code which says that the email address is valid one.

Post Comment This is for short comments only. Use the forum for more discussions.

HTML . MySQL. PHP. JavaScript. ASP. Photoshop. Articles. FORUM Contact us
©2000-2015 All rights reserved worldwide Privacy Policy Disclaimer