Difference between `if (isset($_SESSION))` and `if ($_SESSION)`?

与世无争的帅哥 提交于 2019-12-04 03:21:42

问题


I've noticed that frequently people simply write

<?php  if($_SESSION['username']) {...} ?>

while I have been using:

 <?php if(isset($_SESSION['username'])) {...} ?> 

Could someone explain the difference when checking if a variable is set (that's what I'd be using it for)?


回答1:


According to PHP.net, isset() does the following:

Determine if a variable is set and is not NULL.

When writing:

<?php  if($_SESSION['username']) {...} ?>

You are checking to see if $_SESSION['username'] is equal to true. In other words, you are checking if the value does not equal false.

According to PHP.net the following are considered FALSE:

When converting to boolean, the following values are considered FALSE:

the boolean FALSE itself
the integer 0 (zero)
the float 0.0 (zero)
the empty string, and the string "0"
an array with zero elements
an object with zero member variables (PHP 4 only)
the special type NULL (including unset variables)
SimpleXML objects created from empty tags

As you can see unset variables / NULL variables are considered FALSE. Therefore by testing if the $_SESSION element is true, you are also determining if it exists.

Isset, on the otherhand, actually checks if the variable exists. If you would like to know if there is a SESSION variable by that name, use isset() as testing it for TRUE/FALSE isn't dependent on whether the variable exists or not.

Further, look at the following examples:

$_SESSION['a'] = FALSE;
if($_SESSION['a']){
echo 'Hello'; //This line is NOT echo'd.
}

if(isset($_SESSION['b'])){
echo 'Hello'; //This line is NOT echo'd because $_SESSION['b'] has not been set.
}



回答2:


In PHP, if a variable does not exist (is "unset") then PHP will spit out an E_NOTICE error, create the missing variable, and assign it to NULL.

If you do not want your scripts filled with annoying error messages that leak information about your server and script - then use isset() to test before trying to access a value.

Basically, you're asking PHP to get username out of $_SESSION and PHP is like, "there is no username"!




回答3:


say you set a variable = to false...

$variable = false;

This will not return anything, because it is making sure that the variable is not null, false or empty('')...

if($variable){
    echo'something';
}

This will work regardless of what we set the variable to, as long as we set it... It can be false, str, int, anything except null!

if(isset($variable)){
    echo'something';
}


来源:https://stackoverflow.com/questions/10490678/difference-between-if-isset-session-and-if-session

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!