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はtrue0 == falseとしてタイプジャグリングします。

于 2013-11-05T20:00:30.197 に答える
0

文字列位置 0 を取得しないように、正確に false を確認します。

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

于 2013-11-05T20:00:38.620 に答える