如果'我的验证失败了。声明。我的字符串值为" 24"对于我的变量$_SESSION_PLAN_ID (post data)
,并尝试将其与$plancompare
9 (not a string/DB data)
的值进行比较。
24大于> 9
但我的调试输出echo 'burrp 3';
永远不会被命中。
var_dump($_SESSION['SESS_PLAN_ID']);
echo "</br>";
if(!empty($_SESSION['SESS_PLAN_ID'])){
echo 'burrrp 1';
if($_SESSION['SESS_PLAN_ID'] >= 20 || $plancompare >= 20){
echo 'burrrp 2';
$_SESSION['SESS_DNSSEC'] = 1;
}else if($_SESSION['SESS_PLAN_ID'] > $plancompare){
echo 'burrrp 3';
echo '<br>';
$_SESSION['SESS_PLAN_BUY_CODE'] = $_SESSION['SESS_PLAN_ID'];
}
}
$_SESSION['SESS_PLAN_ID'] = $plancompare;
var_dump($_SESSION['SESS_PLAN_ID']);
echo "</br>";
var_dump($_SESSION['SESS_PLAN_BUY_CODE']);
echo "</br>";
var_dump($_SESSION['SESS_DNSSEC']);
session_write_close();
var_dump()输出:
string(2) "24"
burrrp 1burrrp 2int(9)
int(0)
int(1)
如何验证字符串24是否大于int 9?
答案 0 :(得分:0)
如下所示更改条件,您需要在类似的数据类型之间进行压缩: -
if((int)$_SESSION['SESS_PLAN_ID'] >= 20 || $plancompare >= 20){
echo 'burrrp 2';
$_SESSION['SESS_DNSSEC'] = 1;
}else if((int)$_SESSION['SESS_PLAN_ID'] > $plancompare){
echo 'burrrp 3';
echo '<br>';
$_SESSION['SESS_PLAN_BUY_CODE'] = $_SESSION['SESS_PLAN_ID'];
}
注意: - 将变量值更改为整数然后进行比较。感谢。
答案 1 :(得分:0)
PHP会自动将数字字符串转换为整数进行比较,不需要单独输入它们。您的代码永远不会因为您的第一个条件始终有效而进入第三次打嗝,因为24将始终大于20 - $_SESSION['SESS_PLAN_ID'] >= 20
- 因此永远不会评估else
部分。此外,您的第一个if
条件为||
,意为OR
,因此如果第一部分为真,则第二部分是否为真无关紧要。如果两者都必须为真,请使用&&
。
除非您在调试之间重置会话,否则行$_SESSION['SESS_PLAN_ID'] = $plancompare;
可能会产生另一个问题。如果您将它们设置为相同的值,那么$_SESSION['SESS_PLAN_ID'] > $plancompare
将始终为false,因为9 > 9 == false
。