Undefined index in session variable

I am using a session variable named $_SESSION['role'], which I initialize when a user logs on to my application. When I check the value of this variable in one of my later scripts, I get an error message saying 'Undefined index: role in ....'. How do I correct this error?
aej1973Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Julian MatzConnect With a Mentor Joint ChairpersonCommented:
Another way to check if the session is registered:

$role = isset($_SESSION['role']) ? $_SESSION['role'] : '';

The above will allow you to use the $role variable whether the session is registered or not. If the session is not registered, then the $role variable will be empty, but set, so you will not receive an error.
0
 
Guy Hengel [angelIII / a3]Connect With a Mentor Billing EngineerCommented:
either,
* check if it is set before using it:
  if (isset($_SESSION['role']))
   { $role = $_SESSION['role']; }

* ignore the fact if it is set:
  $role = @$_SESSION['role'];

* check out WHY it is not set:
  did you use session_start() on all the pages?
0
 
aej1973Author Commented:
Here's what I am doing: based on the user name, I use this statement
session_start();
...
if ($_POST['user_name']=="XYZ") {
$_SESSION['role'] = 1;
header('location: main_menu.html');
}//endif
else {
$_SESSION['role'] = 0;
header ('location: reportchoice.php');
}//end else

In my script:
session_start();
...
<?php
 if (isset($_SESSION['role']))
   { $role = $_SESSION['role']; }
echo 'The value of $_SESSION[\'role\'] is' .$role . '<br />';
if (!isset($_SESSION['role'])) {
?>
<p align="center"><input  type="submit" name="submit" value="Return to Main Menu"></p>
<?php
}
?>

I used session_start() on all pages accessing the session variable. It still gives me the same error.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.