Joe*_*oey 5 php session overwrite
我总结了问题的关键是尽可能简短:
一个简单的脚本:
<?php
session_start();
$_SESSION['user']="logged";
Run Code Online (Sandbox Code Playgroud)
然后覆盖
$_SESSION['user']=0;
Run Code Online (Sandbox Code Playgroud)
并显示$ _SESSION内容
var_dump($_SESSION);
Run Code Online (Sandbox Code Playgroud)
显示$ _SESSION ['user']为'0' - 确定,因为它刚刚被覆盖
但是现在看
if ($_SESSION['user']=="logged"){
echo "logged";
}
else{
echo "unlogged";
}
Run Code Online (Sandbox Code Playgroud)
输出"已记录"....
似乎变量类型的变化只是肤浅的 - 我不知道我做错了什么..我是否需要使用===比较来包括检查类型?
确实,需要严格比较===
这是因为 PHP 尝试将您的字符串转换为数字,因此“记录”传递为 0
然后 0 == 0
http://www.php.net/manual/en/language.types.type-juggling.php