What is the proper way to test CodeIgniter session

2019-05-11 13:52发布

问题:

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?

回答1:

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.



回答2:

If your aim is to see whether or not the session variable 'userID' is set, then the following should work:

$this->session->userdata('userID') !== false


回答3:

Why don't you create a boolean field in your session called is_logged_in and then check like:

if(false !== $this->session->userdata('is_logged_in'))


回答4:

if($this->session->userdata('is_logged_in')) {
    //then condition
}

This is the proper way to test!