What is the proper way to test CodeIgniter session variable?

JamieHoward picture JamieHoward · May 23, 2012 · Viewed 11.2k times · Source

Take the following code snippet. What is the best way to test to make sure the session variable isn't empty?

<?php if ($this->session->userdata('userID')) {
   $loggedIn = 1;
}
else {
   $loggedIn = 0;
} ?>

If later in my script, I call the following, the first prints properly, but on the second I receive Message: Undefined variable: loggedIn

<?php echo $this->session->userdata('userID'));
      echo $loggedIn; ?>

I've tried using !empty and isset, but both have been unsuccessful. I also tried doing the if/then statement backwards using if (!($this->session->userdata('userID')), but no dice. Any thoughts?

Answer

Aaron W. picture Aaron W. · May 23, 2012

Try doing the following instead:

<?php 
$loggedIn = 0;
if ($this->session->userdata('userID') !== FALSE) {
   $loggedIn = 1;
}
?>

If the error continues, you'll need to post more code in case you're calling that variable in another scope.