최근 세션 문제를 살펴보며 사용자의 로그인 여부를 확인해야 했습니다. 다음 두 가지 방법으로 사용자의 로그인 여부를 성공적으로 확인할 수 있다는 것을 알았습니다.
코드는 다음과 같습니다.
<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>
문제: 두 번째 판단문에서 $_SESSION['uname'] 대신 $_SESSION만 쓰면 첫 번째 방법을 사용하면 빈 뒤에 있는 괄호가 $_SESSION['인지 오류가 발생합니다. uname'] 또는 $_SESSION에는 문제가 없습니다. 이유가 무엇입니까? 두 가지 방법 중 어느 것이 더 낫습니까? 아니면 더 안전한가요? 감사합니다
최근 세션 문제를 살펴보며 사용자의 로그인 여부를 확인해야 했습니다. 다음 두 가지 방법으로 사용자의 로그인 여부를 성공적으로 확인할 수 있다는 것을 알았습니다.
코드는 다음과 같습니다.
<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>
문제: 두 번째 판단문에서 $_SESSION['uname'] 대신 $_SESSION만 쓰면 첫 번째 방법을 사용하면 빈 뒤에 있는 괄호가 $_SESSION['인지 오류가 발생합니다. uname'] 또는 $_SESSION에는 문제가 없습니다. 이유가 무엇입니까? 두 가지 방법 중 어느 것이 더 낫습니까? 아니면 더 안전한가요? 감사합니다
두 번째 옵션을 사용하는 것이 좋습니다. 두 번째 코드를 올바르게 사용한다는 전제 하에 코드는 더욱 엄격해집니다.
Empty는 비어 있는지 여부, isset은 변수가 존재하는지 여부입니다.
세션 기능인 session_start()를 활성화하면 배열 변수 $_SESSION이 생성됩니다.
그러나 로그인하지 않은 경우 $_SESSION은 단지 빈 배열입니다. 로그인한 경우에만
$_SESSION['uname']과 같이 $_SESSION 데이터에 데이터가 기록됩니다.
그래서 $_SESSION만 작성하면 오류가 보고되는 두 번째 이유는 아직 로그인하지 않았기 때문에 $_SESSION['uname']은 존재하지 않지만 $_SESSION은 빈 배열로 존재하기 때문입니다.
empty는 매개변수가 비어 있는지 여부를 결정합니다. 매개변수가 존재하지만 해당 값이 false인 경우에도 매개변수는 여전히 비어 있는 것으로 간주됩니다.
if(isset($_SESSION['uname']) && !empty($_SESSION['uname'])){//좋습니다
}
isset과 공백의 차이점: 공백()과 isset()의 처리 개체는 정의되지 않은 변수, 0 및 빈 문자열에 지나지 않습니다.
<code>如果变量为0,则empty()会返回TRUE,isset()会返回TRUE; 如果变量为空字符串,则empty()会返回TRUE,isset()会返回TRUE; 如果变量未定义,则empty()会返回TRUE,isset()会返回FLASE; </code>