0

我有一个包含用户付费模块的字符串。如果模块不是字符串的一部分,则应显示错误页面。

变量$paidModules包含reminder newsfeed system finance

这是我检查用户是否为模块付费的 PHP 部分。如果不是这种情况,noAccess.php则应显示该页面。

if($paidModules != null & $paidModules != "" ) {
    if (strpos($paidModules,'reminder') == false) {
        include('noAccess.php'); 
        return;
    }
}

现在的问题是,即使变量$paidModules包含remindernoAccess.php也会显示 。我究竟做错了什么?

4

3 回答 3

1

来自PHP 手册

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
于 2013-11-05T20:01:00.293 回答
0

strpos()可能返回一个布尔值false。它也可以0作为找到的位置返回。

因此,您需要使用严格相等

if (strpos($paidModules,'reminder') === false) {
  // code...
}

在您的情况下,因为reminder在零位置找到。使用==, PHP type-juggles0 == falsetrue

于 2013-11-05T20:00:30.197 回答
0

检查是否完全错误,这样您就不会得到字符串位置 0:

if (strpos($paidModules,'reminder') === false) {

于 2013-11-05T20:00:38.620 回答