phpではあまり経験がありません。私が直面している問題は次のとおりです。データ型とそのコンパイルはPHPで
print "post: {$_POST['var']} session: {$_SESSION['var']}\n";
これは2つの等しい出力を出力します。
その後、
if($_POST['var'] == $_SESSION['var']){
...
}
は、trueと評価することはありません。それを修正するために私は何をすべきですか?
phpではあまり経験がありません。私が直面している問題は次のとおりです。データ型とそのコンパイルはPHPで
print "post: {$_POST['var']} session: {$_SESSION['var']}\n";
これは2つの等しい出力を出力します。
その後、
if($_POST['var'] == $_SESSION['var']){
...
}
は、trueと評価することはありません。それを修正するために私は何をすべきですか?
次のことを試してみてください。
if (trim($_POST['var']) == trim($_SESSION['var'])) {
// ...
}
あなたはまたvar_dump
を使用して$_SESSION['var']
と$_POST['var']
の内容を確認し、それらが一致するかどうかを確認できます。
var_dump($_POST['var']);
var_dump($_SESSION['var']);
浮動小数点数以外はデータ型の問題ではないと思われますが、同じ型であるかどうかを確認する場合は===を使用します。私の推測では、あなたがあなたがそれを印刷したときにあなたが検出することができない、彼らのうちの1つの中にルージュスペースがあるということでしょう。何が印刷されるかの例を挙げることができますか?
<?php
$_SESSION['var'] = "Variable";
$_POST['var'] = "Variable";
if($_POST['var'] == $_SESSION['var'])
print 1;
else
print 2;
?>
結果は1どのようなものですあなたが比較する変数の値?
私は、これは、データ型の問題ではないと思いますが、あなたは、あなたが次の操作を行うことができますPHPのデータ型を比較したいならば:
if($_POST['var'] === $_SESSION['var']){
...
}
代わりに次の操作を実行してデータ型をキャストすることができます( int)(配列)(オブジェクト)
$a = (int)$_POST['var'];
$b = (int)$_SESSION['var'];
if($a === $b) {
...
}
ここで出力した内容をそのままコピーして貼り付けることはできますか? – jprofitt
正確には何が印刷されますか?ヘキサエディターで見ましたか?それが同じであると思われるからといって、どちらかに余分なスペースやNULバイトがないことを意味するわけではありません。 – mario
@marioのように、 'var'の両側に空白があると、比較が真を返すことはありません。 '$ _SESSION ['var']'と '$ _POST ['var']'の両方に 'trim'を実行してみてください。 – Cyclonecode