Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP: How to get referrer URL?

Tags:

php

I have a page (index.php) where customers can send me emails. Now I want to see from what website that visitor is coming from.

How can I get the Referrer URL with PHP? I tried with $_SERVER['HTTP_REFERER'] but it's empty all the time. What variable do I need to consider?

Here is what my $_SERVER contains; I put some ---- CENSORED ---- for privacy concerns, there are actually real values.

array(31) {   ["DOCUMENT_ROOT"]=>   string(33) "/home/anything/public_html/design"   ["GATEWAY_INTERFACE"]=>   string(7) "CGI/1.1"   ["HTTP_ACCEPT"]=>   string(129) "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1"   ["HTTP_ACCEPT_ENCODING"]=>   string(13) "gzip, deflate"   ["HTTP_ACCEPT_LANGUAGE"]=>   string(14) "en-US,en;q=0.9"   ["HTTP_CACHE_CONTROL"]=>   string(8) "no-cache"   ["HTTP_CONNECTION"]=>   string(10) "Keep-Alive"   ["HTTP_COOKIE"]=>   string(189) "__utma=76630272.1468291432.1367655794.1367669576.1367674157.3; __utmb=76630272.1.10.1367674157; __utmc=76630272; __utmz=76630272.1367655794.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"   ["HTTP_HOST"]=>   string(25) " ---- CENSORED ---- "   ["HTTP_USER_AGENT"]=>   string(57) "Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.15"   ["PATH"]=>   string(13) "/bin:/usr/bin"   ["QUERY_STRING"]=>   string(0) ""   ["REDIRECT_STATUS"]=>   string(3) "200"   ["REMOTE_ADDR"]=>   string(10) "5.15.68.79"   ["REMOTE_PORT"]=>   string(5) "57897"   ["REQUEST_METHOD"]=>   string(3) "GET"   ["REQUEST_URI"]=>   string(12) "/referer.php"   ["SCRIPT_FILENAME"]=>   string(45) "/home/anything/public_html/design/referer.php"   ["SCRIPT_NAME"]=>   string(12) "/referer.php"   ["SERVER_ADDR"]=>   string(13) " ---- CENSORED ---- "   ["SERVER_ADMIN"]=>   string(35) " ---- CENSORED ---- "   ["SERVER_NAME"]=>   string(25) " ---- CENSORED ---- "   ["SERVER_PORT"]=>   string(2) "80"   ["SERVER_PROTOCOL"]=>   string(8) "HTTP/1.1"   ["SERVER_SIGNATURE"]=>   string(189) " Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at ---- CENSORED ---- Port 80  "   ["SERVER_SOFTWARE"]=>   string(125) "Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635"   ["UNIQUE_ID"]=>   string(24) "UYUNcUPeiDsAABkR2eYAAAAj"   ["PHP_SELF"]=>   string(12) "/referer.php"   ["REQUEST_TIME"]=>   int(1367674225)   ["argv"]=>   array(0) {   }   ["argc"]=>   int(0) } 
like image 814
sorinu26 Avatar asked May 04 '13 13:05

sorinu26


People also ask

How do I find my referrer URL?

To check the Referer in action go to Inspect Element -> Network check the request header for Referer like below. Referer header is highlighted. Supported Browsers: The browsers are compatible with HTTP header Referer are listed below: Google Chrome.

What is $_ server [' HTTP_REFERER ']?

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

What is referrer URL?

Your referrer is the page you're coming from. You can create a link to this page and click on it in order to check what URL If-So detects as the referral source. If you will not see your referrer above, that means neither If-So nor other services can track the referral source.

How do I find the IP address of a referrer?

You can determine the reffering URL with $_SERVER['HTTP_REFERER'] but bear in mind this can be manipulated. You can then use gethostbyname($referrer) to get the IP address.


2 Answers

$_SERVER['HTTP_REFERER'] will give you the referrer page's URL if there exists any. If users use a bookmark or directly visit your site by manually typing in the URL, http_referer will be empty. Also if the users are posting to your page programatically (CURL) then they're not obliged to set the http_referer as well. You're missing all _, is that a typo?

like image 183
Ejaz Avatar answered Sep 22 '22 10:09

Ejaz


Underscore. Not space.

$_SERVER['HTTP_REFERER']

like image 35
bearfriend Avatar answered Sep 22 '22 10:09

bearfriend