我不是很有经验的PHP。我面临的问题是:在php中的数据类型和它们的比较
print "post: {$_POST['var']} session: {$_SESSION['var']}\n";
比方说,这打印出2个相等的输出。
然后
if($_POST['var'] == $_SESSION['var']){
...
}
永远评估为真。我该怎么做才能解决它?
我不是很有经验的PHP。我面临的问题是:在php中的数据类型和它们的比较
print "post: {$_POST['var']} session: {$_SESSION['var']}\n";
比方说,这打印出2个相等的输出。
然后
if($_POST['var'] == $_SESSION['var']){
...
}
永远评估为真。我该怎么做才能解决它?
尝试以下操作:
if (trim($_POST['var']) == trim($_SESSION['var'])) {
// ...
}
你也可以检查$_SESSION['var']
和$_POST['var']
的内容使用var_dump
,看看它们是否匹配:
var_dump($_POST['var']);
var_dump($_SESSION['var']);
我不认为它可能是一个数据类型问题(除非它们是浮点数然后它可能),但如果你想检查它们是否是相同的类型,那么使用===。我的猜测是,在你打印出来的时候,你无法检测到其中的一个空间。你能举出打印出来的例子吗?
<?php
$_SESSION['var'] = "Variable";
$_POST['var'] = "Variable";
if($_POST['var'] == $_SESSION['var'])
print 1;
else
print 2;
?>
结果1.什么是你比较的变量的值是多少?
你能准确地复制它输出的内容并把它放在这里吗? – jprofitt
什么打印出来?你有没有看过它与一个hexeditor?仅仅因为它看起来相同并不意味着没有任何额外的空间或NUL字节。 – mario
就像@mario说的那样,'var'两边可以立即存在空格,所以你的比较永远不会返回true。尝试在$ _SESSION ['var']'和$ _POST ['var']'上运行'trim'。 – Cyclonecode