Ich habe mir kürzlich Sitzungsprobleme angesehen und musste feststellen, ob der Benutzer angemeldet war. Ich habe festgestellt, dass mit den folgenden beiden Methoden erfolgreich festgestellt werden kann, ob der Benutzer angemeldet ist.
Der Code lautet wie folgt:
<code>第一种: if(empty($_SESSION)){ echo '您还未登录,请<a href="login.php">登录</a><p>'; }else{ echo '欢迎'.$_SESSION['uname'].' 这里是主页 '; echo '<a href="quit.php">退出</a><p>'; } 第二种: if(!isset($_SESSION['uname'])){ echo '您还未登录,请<a href="login.php">登录</a><p>'; }else{ echo '欢迎'.$_SESSION['uname'].' 这里是主页 '; echo '<a href="quit.php">退出</a><p>'; } </code>
Problem: Wenn Sie in der zweiten Beurteilungsanweisung nur $_SESSION anstelle von $_SESSION['uname'] schreiben, wird bei Verwendung der ersten Methode ein Fehler gemeldet, ob die Klammern nach dem Leerzeichen $_SESSION[ ' sind. uname'] oder $_SESSION sind kein Problem, was ist der Grund? Welche der beiden Methoden ist besser? Oder ist es sicherer? Vielen Dank
Ich habe mir kürzlich Sitzungsprobleme angesehen und musste feststellen, ob der Benutzer angemeldet war. Ich habe festgestellt, dass mit den folgenden beiden Methoden erfolgreich festgestellt werden kann, ob der Benutzer angemeldet ist.
Der Code lautet wie folgt:
<code>第一种: if(empty($_SESSION)){ echo '您还未登录,请<a href="login.php">登录</a><p>'; }else{ echo '欢迎'.$_SESSION['uname'].' 这里是主页 '; echo '<a href="quit.php">退出</a><p>'; } 第二种: if(!isset($_SESSION['uname'])){ echo '您还未登录,请<a href="login.php">登录</a><p>'; }else{ echo '欢迎'.$_SESSION['uname'].' 这里是主页 '; echo '<a href="quit.php">退出</a><p>'; } </code>
Problem: Wenn Sie in der zweiten Beurteilungsanweisung nur $_SESSION anstelle von $_SESSION['uname'] schreiben, wird bei Verwendung der ersten Methode ein Fehler gemeldet, ob die Klammern nach dem Leerzeichen $_SESSION[ ' sind. uname'] oder $_SESSION sind kein Problem, was ist der Grund? Welche der beiden Methoden ist besser? Oder ist es sicherer? Vielen Dank
Es wird empfohlen, die zweite Option zu verwenden. Unter der Voraussetzung, dass der zweite korrekt verwendet wird, wird der Code strenger.
Empty gibt an, ob es leer ist, isset gibt an, ob die Variable existiert.
Solange Sie die Sitzungsfunktion session_start(); aktivieren, gibt es eine Array-Variable $_SESSION.
Wenn Sie jedoch nicht angemeldet sind, ist $_SESSION nur ein leeres Array. Nur wenn Sie angemeldet sind, werden Daten in die $_SESSION-Daten geschrieben, z. B.
$_SESSION['uname'].
Der zweite Grund, warum allein das Schreiben von $_SESSION einen Fehler meldet, ist, dass Sie sich noch nicht angemeldet haben, sodass $_SESSION['uname'] nicht existiert, $_SESSION jedoch als leeres Array existiert.
empty bestimmt, ob der Parameter als leer gilt. Auch wenn der Parameter vorhanden ist, sein Wert jedoch falsch ist, wird der Parameter dennoch als leer betrachtet.
if(isset($_SESSION['uname']) && !empty($_SESSION['uname'])){//Das ist gut
}
Der Unterschied zwischen isset und empty: Die Verarbeitungsobjekte von empty() und isset() sind nichts anderes als undefinierte Variablen, 0 und leere Zeichenfolgen.
<code>如果变量为0,则empty()会返回TRUE,isset()会返回TRUE; 如果变量为空字符串,则empty()会返回TRUE,isset()会返回TRUE; 如果变量未定义,则empty()会返回TRUE,isset()会返回FLASE; </code>