Notice: Undefined index: HTTP_REFERER

79,369

Solution 1

HTTP_REFERER is not guaranteed to be sent by the client:

The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.

In your case it's clearly not being sent, so really all you can do is

if(isset($_SERVER['HTTP_REFERER'])) {
  //do what you need to do here if it's set    
   }
else
{
   //it was not sent, perform your default actions here
}

Solution 2

if (isset($_SERVER['HTTP_REFERER'])) {$THE_REFER=$_SERVER['HTTP_REFERER']}
Share:
79,369
Mojtaba
Author by

Mojtaba

Updated on February 24, 2020

Comments

  • Mojtaba
    Mojtaba about 4 years

    Notice: Undefined index: HTTP_REFERER

    $http_referer = $_SERVER['HTTP_REFERER']

    i used this from tutorial.and it looks okay

    also code is calling it from including file

    what should i change?

    i added print_r($_SERVER); and now page gives me this

     Array ([UNIQUE_ID] => UoSxWa56310AAAwUckIAAAAA
            [HTTP_HOST] => movafaghha.com
            [HTTP_COOKIE] => __utma=210711305.58608218.1372977010.1372977010.1372977010.1; __utmz=210711305.1372977010.1.1.utmcsr=who.is|utmccn=(referral)|utmcmd=referral|utmcct=/whois/movafaghha.com; PHPSESSID=83eb0e2ae7ebe4b6c2eeb071d9f5de71
            [HTTP_X_REAL_IP] => 109.109.41.81
            [HTTP_X_FORWARDED_HOST] => movafaghha.com
            [HTTP_X_FORWARDED_SERVER] => movafaghha.com
            [HTTP_X_FORWARDED_FOR] => 109.109.41.81
            [HTTP_CONNECTION] => close 
            [HTTP_CACHE_CONTROL] => max-age=0 
            [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
            [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48 Safari/537.36 
            [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8,fa;q=0.6 
            [PATH] => /sbin:/usr/sbin:/bin:/usr/bin
            [SERVER_SIGNATURE] =>
            [SERVER_SOFTWARE] => Apache 
            [SERVER_NAME] => movafaghha.com 
            [SERVER_ADDR] => 174.122.223.93 
            [SERVER_PORT] => 80 
            [REMOTE_ADDR] => 109.109.41.81 
            [DOCUMENT_ROOT] => /home/memarest/public_html/movafaghha.com 
            [SERVER_ADMIN] => [email protected] 
            [SCRIPT_FILENAME] => /home/memarest/public_html/movafaghha.com/tutorials/login200/register.php 
            [REMOTE_PORT] => 49737 
            [GATEWAY_INTERFACE] => CGI/1.1 
            [SERVER_PROTOCOL] => HTTP/1.0 
            [REQUEST_METHOD] => GET 
            [QUERY_STRING] => 
            [REQUEST_URI] => /tutorials/login200/register.php 
            [SCRIPT_NAME] => /tutorials/login200/register.php 
            [PHP_SELF] => /tutorials/login200/register.php 
            [REQUEST_TIME_FLOAT] => 1384427865.54 
            [REQUEST_TIME] => 1384427865 
            [argv] => Array ( ) 
            [argc] => 0 
        ) 
    

    edited the code but still unable to echo all fiedds are required

    <?php
    
    ini_set("display_errors", true);
    error_reporting(E_ALL);
    
    require 'core.inc.php';
    
    
    
    
    
    
    if(!loggedIn()) {
    
    //check mikunim ke tamame field ha dar form vojod darand va set shudan
    
    if(isset($_POST['username'])&&isset($_POST['password'])&&isset($_POST['password_again'])&&isset($_POST['firstname'])&&isset($_POST['surename'])) {
    
        $username = $_POST['username'];
        $password = $_POST['password'];
        $password_again = $_POST['password_again'];
        $firtsname = $_POST['firstname'];
        $surename = $_POST['surename'];
    
    
    
        //HALA CHECK MIKUNIM KHALI HASTAND YA NA
    
        if(!empty($username)&&!empty($password)&&!empty($password_again)&&!empty($firstname)&&!empty($surename)){
            echo 'ok' ;
    
        } else {
    
            echo ' All fields are required';
    
        }
    
    }
    
    
    
    
    ?>
    
    <form action="register.php" method="POST">
    Username:<br> <input type="text" name="username"><br> <br>
    Password:<br> <input type="password" name="password"><br><br>
    Password again:<br> <input type="password" name="password_again"><br><br>
    Firstname:<br> <input type="text" name="firstname"><br><br>
    Surname:<br> <input type="text" name="surename"><br><br>
    <input type="submit" value="register">
    
    
    
    </form>
    
    <?php
    
    } elseif (loggedIn()) {
    
        echo 'you \'re already logged in';
        }
    
    ?>
    

    now after adding

    "e"

    page says "all fields are required"

    but even when fill all fields message do not change