Search code examples
phphttp-referer

PHP check if referral url is the homepage


I'm trying to figure out how to check if the referral url to one of my inner pages is the homepage. This would be easy if the homepage was always www.mysite.com/index.php but what happens when it's simply www.mysite.com?

I know I could simply do

$url = $_SERVER['HTTP_REFERER'];
$pos = strrpos($url, "/");
$page = substr($url, $pos+1, (strlen($url)-$pos+1));
if (substr_count($url, 'index')) echo 'from index ';

but I don't have the index.php in my $url variable.


Solution

  • parse_url() can help you here.

    // An array of paths that we consider to be the home page
    $homePagePaths = array (
      '/index.php',
      '/'
    );
    
    $parts = parse_url($_SERVER['HTTP_REFERER']);
    if (empty($parts['path']) || in_array($parts['path'], $homePagePaths)) echo 'from index';
    

    N.B. This should not be relied upon for anything important. The Referer: header may be missing from the request, and can easily be spoofed. All major browsers should do what you expect them to, but hackers and webcrawlers may not.