我不是很有經驗的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