我有一个包含用户付费模块的字符串。如果模块不是字符串的一部分,则应显示错误页面。
变量$paidModules
包含reminder newsfeed system finance
这是PHP部分,我检查用户是否支付了该模块的费用。如果不是这种情况,则应显示noAccess.php
页面。
if($paidModules != null & $paidModules != "" ) {
if (strpos($paidModules,'reminder') == false) {
include('noAccess.php');
return;
}
}
现在问题是,即使变量$paidModules
包含reminder
,也会显示noAccess.php
。我做错了什么?
答案 0 :(得分:1)
This function may return Boolean FALSE, but may also return a
non-Boolean value which evaluates to FALSE.
Please read the section on Booleans for more information.
Use the === operator for testing the return value of this function.
您希望使用===
strpos($paidModules,'reminder') === false
答案 1 :(得分:0)
strpos()
可能会返回布尔值false
。它也可以返回0
作为找到的位置。
因此您需要使用strict equality:
if (strpos($paidModules,'reminder') === false) {
// code...
}
在您的情况下,因为reminder
位于零位置。使用==
,PHP键入juggles 0 == false
为 true 。
答案 2 :(得分:0)
检查确切的错误,这样就不会得到字符串位置0:
if (strpos($paidModules,'reminder') === false) {