>  기사  >  백엔드 개발  >  isset 및empty에 대해 질문이 있으십니까?

isset 및empty에 대해 질문이 있으십니까?

WBOY
WBOY원래의
2016-10-22 00:14:091311검색

최근 세션 문제를 살펴보며 사용자의 로그인 여부를 확인해야 했습니다. 다음 두 가지 방법으로 사용자의 로그인 여부를 성공적으로 확인할 수 있다는 것을 알았습니다.
코드는 다음과 같습니다.

<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>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.