0

I'm doing validate session I'm getting some field is "Warning: Undefined array key", This issue is happened now warning error my php code is blow i have given please what is i'm doing wrong...thanks...

These fields are I'm getting the error:

Warning: Undefined array key "lastActiveTime"
Warning: Undefined array key "USERNAME" 
Warning: Undefined array key "SESSION_ID" 
Warning: Undefined array key "HTTP_USER_AGENT"
Warning: Undefined array key "REMOTE_ADDR" 

php code :

function validate_session()
{
    //error_reporting(E_ERROR | E_PARSE);
        $time_outvalue = 18000;  // for session timeout

        $now = time();
        $diff = $now - $_SESSION['lastActiveTime'];
        $username = $_SESSION['USERNAME'];
        $session_id = $_SESSION['SESSION_ID'];
        if(($diff >= $time_outvalue && isset($_SESSION['lastActiveTime'])) || (($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) && ($_SESSION['REMOTE_ADDR'] != $_SERVER['REMOTE_ADDR']))){            // Session timeout

            setcookie("PHPSESSID", "", time()-3600);
            unset($_SESSION['lastActiveTime']);
            unset($_SESSION['username']);
            session_destroy();

        }

        $_SESSION['lastActiveTime'] = time();
} 
Makizh
  • 51
  • 1
  • 4
  • 1
    you need to check weather these values are set in session or not before allocating to any variable or use in condition. – Aqib Javed Mar 07 '22 at 04:22
  • use `isset()` to check these values are set in session or not and based on that do further logic – Alive to die - Anant Mar 07 '22 at 04:31
  • 2
    Does this answer your question? ["Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key", and "Notice: Undefined offset" using PHP](https://stackoverflow.com/questions/4261133/notice-undefined-variable-notice-undefined-index-warning-undefined-arr) – emrdev Mar 07 '22 at 04:34

2 Answers2

1

$_SESSION creates after session_start() (or if session.auto_start enabled in php.ini), you can add something like this isset($_SESSION) || session_start(); at begin.

WinterSilence
  • 413
  • 3
  • 15
0
 try like this...
//php code   
function validate_session()
           {
               //error_reporting(E_ERROR | E_PARSE);
                   $time_outvalue = 18000;  // for session timeout
                    $lastActive = $_SESSION['lastActiveTime']??'0';
                    $userName = $_SESSION['USERNAME']??'';
                    $sessionId = $_SESSION['SESSION_ID']??'0';
                   $now = time();
                   $diff = $now - $lastActive;
                   $username = $userName;
                   $session_id = $sessionId;
                   if(($diff >= $time_outvalue && isset($lastActive)) || (($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) && ($_SESSION['REMOTE_ADDR'] != $_SERVER['REMOTE_ADDR']))){            // Session timeout
           
                       setcookie("PHPSESSID", "", time()-3600);
                       unset($lastActive);
                       unset($userName);
                       session_destroy();
           
                   }
           
                   $lastActive = time();
           }
pk_
  • 114
  • 6