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

前端 未结 3 2013
小蘑菇
小蘑菇 2021-01-18 02:11

I\'ve noticed that frequently people simply write


while I have been using:



        
相关标签:
3条回答
  • 2021-01-18 02:25

    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';
    }
    
    0 讨论(0)
  • 2021-01-18 02:35

    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.
    }
    
    0 讨论(0)
  • 2021-01-18 02:36

    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"!

    0 讨论(0)
提交回复
热议问题