web-dev-qa-db-ja.com

関数呼び出しの結果にisset()を使用することはできません(代わりに「null!= Func()」を使用できます)

( ! ) Fatal error: Cannot use isset() on the result of a function call (you can use "null !== func()" instead) in C:\Users\sanoj\Documents\NetBeansProjects\video-site\app\detect.php on line 45
Call Stack
#   Time    Memory  Function    Location
1   0.0000  234208  {main}( )   ..\index.php:0

以前の私のコードは

if(!defined('WAP'))
    define('WAP', isset($_REQUEST['wap']) || isset($_REQUEST['wap2']) || isset($_REQUEST['imode'])|| isset($_REQUEST['html'])|| isset($_REQUEST['Android'])|| isset($_REQUEST['iphone'])|| isset($_REQUEST['IEMobile']));

    if (WAP)
{
    define('WIRELESS_PROTOCOL', isset($_REQUEST['wap']) ? 'wap' : (isset($_REQUEST['wap2']) ? 'wap2' : (isset($_REQUEST['iphone']) ? 'iphone' : (isset($_REQUEST['imode']) ? 'imode' : (isset($_REQUEST['IEMobile']) ? 'IEMobile' :(isset($_REQUEST['html']) ? 'html' : (isset($_REQUEST['Android']) ? 'Android' : '')))))));  

そして私のIDE警告Do Not Access SuperGlobal $_REQUEST Array Directlyだから私はこの次のコードを使用しました

if(!defined('WAP'))
{
    define('WAP', isset(filter_input(INPUT_REQUEST, 'wap', FILTER_SANITIZE_STRING)) || isset(filter_input(INPUT_REQUEST, 'wap2', FILTER_SANITIZE_STRING)) || isset(filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING))|| isset(filter_input(INPUT_REQUEST, 'html', FILTER_SANITIZE_STRING))|| isset(filter_input(INPUT_REQUEST, 'Android', FILTER_SANITIZE_STRING))|| isset(filter_input(INPUT_REQUEST, 'iphone', FILTER_SANITIZE_STRING))|| isset(filter_input(INPUT_REQUEST, 'IEMobile', FILTER_SANITIZE_STRING)));
}
    if (WAP)
{
    define('WIRELESS_PROTOCOL', isset(filter_input(INPUT_REQUEST, 'wap', FILTER_SANITIZE_STRING)) ? 'wap' : (isset(filter_input(INPUT_REQUEST, 'wap2', FILTER_SANITIZE_STRING)) ? 'wap2' : (isset(filter_input(INPUT_REQUEST, 'iphone', FILTER_SANITIZE_STRING)) ? 'iphone' : (isset(filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING)) ? 'imode' : (isset(filter_input(INPUT_REQUEST, 'IEMobile', FILTER_SANITIZE_STRING)) ? 'IEMobile' :(isset(filter_input(INPUT_REQUEST, 'html', FILTER_SANITIZE_STRING)) ? 'html' : (isset(filter_input(INPUT_REQUEST, 'Android', FILTER_SANITIZE_STRING)) ? 'Android' : '')))))));  

ここは detect.php

<?php
$userBrowser = $_SERVER['HTTP_ACCEPT']; 
if(stristr($userBrowser, 'application/vnd.wap.xhtml+xml')) 
{
$_REQUEST['wap2'] = 1;
}

elseif(stripos($_SERVER['HTTP_USER_AGENT'],"iPod"))
{
$_REQUEST['iphone'] = 1;

}
elseif(stripos($_SERVER['HTTP_USER_AGENT'],"iPhone"))
{
$_REQUEST['iphone'] = 1;

}
elseif(stripos($_SERVER['HTTP_USER_AGENT'],"Android"))
{
$_REQUEST['Android'] = 1;

}
elseif(stripos($_SERVER['HTTP_USER_AGENT'],"IEMobile"))
{
$_REQUEST['IEMobile'] = 1;

}
elseif(stristr($userBrowser, 'DoCoMo/' || 'portalmmm/'))
{
$_REQUEST['imode'] = 1;
}

elseif(stristr($userBrowser, 'text/vnd.wap.wml')) 
{
$_REQUEST['wap'] = 1;
}
elseif(stristr($userBrowser, 'text/html')) 
{
$_REQUEST['html'] = 1;
}


if(!defined('WAP'))
    define('WAP', isset($_REQUEST['wap']) || isset($_REQUEST['wap2']) || isset($_REQUEST['imode'])|| isset($_REQUEST['html'])|| isset($_REQUEST['Android'])|| isset($_REQUEST['iphone'])|| isset($_REQUEST['IEMobile']));

    if (WAP)
{
    define('WIRELESS_PROTOCOL', isset($_REQUEST['wap']) ? 'wap' : (isset($_REQUEST['wap2']) ? 'wap2' : (isset($_REQUEST['iphone']) ? 'iphone' : (isset($_REQUEST['imode']) ? 'imode' : (isset($_REQUEST['IEMobile']) ? 'IEMobile' :(isset($_REQUEST['html']) ? 'html' : (isset($_REQUEST['Android']) ? 'Android' : '')))))));  

if (WIRELESS_PROTOCOL == 'wap')
      {
$browser_t = "mobile";
      }
elseif (WIRELESS_PROTOCOL == 'wap2')
      {


$browser_t = "mobile";


      }
elseif (WIRELESS_PROTOCOL == 'imode')
      {

$browser_t = "mobile";

      }
      elseif (WIRELESS_PROTOCOL == 'iphone')
      {


$browser_t = "smartphone";

      }
      elseif (WIRELESS_PROTOCOL == 'Android')
      {


$browser_t = "smartphone";

      }
       elseif (WIRELESS_PROTOCOL == 'IEMobile')
      {

$browser_t = "smartphone";

      }
      elseif (WIRELESS_PROTOCOL == 'html')
      {

     $mobile_browser = '0';

if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i',
    strtolower($_SERVER['HTTP_USER_AGENT']))){
    $mobile_browser++;
    }

if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or 
    ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))){
    $mobile_browser++;
    }

$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
    'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
    'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
    'ipaq','Java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
    'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
    'newt','noki','oper','Palm','pana','pant','phil','play','port','prox',
    'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
    'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
    'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
    'wapr','webc','winw','winw','xda','xda-');

if(in_array($mobile_ua,$mobile_agents)){
    $mobile_browser++;
    }
if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
    $mobile_browser++;
    }
        if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'iemobile')>0) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
    $mobile_browser=0;
    }


if($mobile_browser>0){
   // do something wap

$browser_t = "mobile";

}
// non-mobile
else
{

$_SESSION['Browser_d'] = "web";
$browser_t = "web";

}
   } else {
   // do something else html

$_SESSION['Browser_d'] = "web";
$browser_t = "web";
   }

      }


    else
    {
$mobile_browser = '0';

if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone)/i',
    strtolower($_SERVER['HTTP_USER_AGENT']))){
    $mobile_browser++;
    }

if((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml')>0) or 
    ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))){
    $mobile_browser++;
    }

$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
$mobile_agents = array(
    'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
    'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
    'ipaq','Java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
    'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
    'newt','noki','oper','Palm','pana','pant','phil','play','port','prox',
    'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
    'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
    'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
    'wapr','webc','winw','winw','xda','xda-');

if(in_array($mobile_ua,$mobile_agents)){
    $mobile_browser++;
    }
    if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'iemobile')>0) {
$mobile_browser++;
}
if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini')>0) {
    $mobile_browser++;
    }
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows')>0) {
    $mobile_browser=0;
    }


if($mobile_browser>0){
   // do something wap

$browser_t = "mobile";

}
// non-mobile
else
{
$_SESSION['Browser_d'] = "web";
$browser_t = "web";
}

    }
     ?>

そしてindex.php

<?php 
include "app/config.php";
include "app/detect.php";

if ($page_name=='') {
    include $browser_t.'/index.html';
    }
elseif ($page_name=='index.html') {
    include $browser_t.'/index.html';
    }
elseif ($page_name=='singlepage.html') {
    include $browser_t.'/singlepage.html';
    }
elseif ($page_name=='categories.html') {
    include $browser_t.'/categories.html';
    }
elseif ($page_name=='contact.html') {
    include $browser_t.'/contact.html';
    }
else
    {
        include $browser_t.'/404.html';
    }

?>

そしてconfig.php

<?php
$current_page_uri = $_SERVER['REQUEST_URI'];
$part_url = explode("/", $current_page_uri);
$page_name = end($part_url);
$email_id = "[email protected]";
?>

インデックスファイルがロードされると、デバイスを検出して適切なルートにリダイレクトする必要がありますが、私の場合は次のエラーが発生しません

( ! ) Notice: Undefined index: ALL_HTTP in C:\Users\sanoj\Documents\NetBeansProjects\video-site-2\app\detect.php on line 118
Call Stack
#   Time    Memory  Function    Location
1   0.0090  233992  {main}( )   ..\index.php:0
2   0.0230  295896  include( 'C:\Users\sanoj\Documents\NetBeansProjects\video-site-2\app\detect.php' )  ..\index.php:11

( ! ) Warning: include(web/404.html): failed to open stream: No such file or directory in C:\Users\sanoj\Documents\NetBeansProjects\video-site-2\index.php on line 30
Call Stack
#   Time    Memory  Function    Location
1   0.0090  233992  {main}( )   ..\index.php:0

( ! ) Warning: include(): Failed opening 'web/404.html' for inclusion (include_path='.;C:\php\pear') in C:\Users\sanoj\Documents\NetBeansProjects\video-site-2\index.php on line 30
Call Stack
#   Time    Memory  Function    Location
1   0.0090  233992  {main}( )   ..\index.php:0
8
sanoj lawrence

まず、NetBeans IDEはこれらの警告を表示するため、_$_REQUEST_値を直接信頼せず、何らかの方法で検証します。 isset($_REQUEST['wap'])をチェックすることにより、IDEが示唆しているチェックの一部をすでに実行しています。このプロセスの他のステップがあり、前に実行する必要がありますuseデータベースに挿入するように、NetBeansは入力/変数をどうするかわからないため、NetBeansの警告の多くを無視します。 。ベストプラクティスについて警告するだけで、私の場合に最適な場合とそうでない場合があります。また、警告は、提案としてのみ解釈する必要があります。あなたがしなければならないこと

次に、 filter_input() を使用する場合、isset()を追加で使用する必要はありません。なぜなら、filter_input()はすでにあなたのためにそれをやっているからです。ドキュメントにあるように、

戻り値:成功した場合の要求された変数の値、フィルターが失敗した場合はFALSE、またはvariable_name変数の場合はNULL設定されていません。フラグ_FILTER_NULL_ON_FAILURE_が使用されている場合、変数が設定されていない場合はFALSEを返し、フィルターが失敗した場合はNULLを返します。

したがって、isset()を削除するだけで、コードは安全に機能するはずです。ただし、代替値を適用するように値が設定されているかどうかを確認することもできます。その場合は、 empty() 関数を使用してください。これは、filter_input()から返される値がFALSE/NULLの場合、FALSEを返します。したがって、ケースに一致するように条件を否定するだけです。このように-

_if(!defined('WAP'))
{
    define('WAP', !empty(filter_input(INPUT_REQUEST, 'wap', FILTER_SANITIZE_STRING)) || !empty(filter_input(INPUT_REQUEST, 'wap2', FILTER_SANITIZE_STRING)) || !empty(filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING))|| !empty(filter_input(INPUT_REQUEST, 'html', FILTER_SANITIZE_STRING))|| !empty(filter_input(INPUT_REQUEST, 'Android', FILTER_SANITIZE_STRING))|| !empty(filter_input(INPUT_REQUEST, 'iphone', FILTER_SANITIZE_STRING))|| !empty(filter_input(INPUT_REQUEST, 'IEMobile', FILTER_SANITIZE_STRING)));
}

 if (WAP)
{
    define('WIRELESS_PROTOCOL', !empty(filter_input(INPUT_REQUEST, 'wap', FILTER_SANITIZE_STRING)) ? 'wap' : (!empty(filter_input(INPUT_REQUEST, 'wap2', FILTER_SANITIZE_STRING)) ? 'wap2' : (!empty(filter_input(INPUT_REQUEST, 'iphone', FILTER_SANITIZE_STRING)) ? 'iphone' : (!empty(filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING)) ? 'imode' : (!empty(filter_input(INPUT_REQUEST, 'IEMobile', FILTER_SANITIZE_STRING)) ? 'IEMobile' :(!empty(filter_input(INPUT_REQUEST, 'html', FILTER_SANITIZE_STRING)) ? 'html' : (!empty(filter_input(INPUT_REQUEST, 'Android', FILTER_SANITIZE_STRING)) ? 'Android' : '')))))));
} 
_

2番目のエラー

注意:未定義のインデックス:ALL_HTTP

$ _ SERVER のphpドキュメントで_ALL_HTTP_という変数が見つかりませんでした。したがって、リンクを確認して、目的に役立つリンクを見つけてください。あなたが実際に何をしようとしているのかわからないので、私は何も提案できません。

3番目のエラー

警告:include(web/404.html):ストリームを開くことができませんでした。

エラーは、ファイルが存在しないことをすでに示しています。したがって、ファイルが存在しないか、パスが正しく指定されていません。 plsはそれをチェックして修正します。

2番目の例のisset()呼び出しを削除すると、機能するはずです。

_if(!defined('WAP'))
{
    define('WAP', filter_input(INPUT_REQUEST, 'wap', FILTER_SANITIZE_STRING) || filter_input(INPUT_REQUEST, 'wap2', FILTER_SANITIZE_STRING) || filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING)|| filter_input(INPUT_REQUEST, 'html', FILTER_SANITIZE_STRING)|| filter_input(INPUT_REQUEST, 'Android', FILTER_SANITIZE_STRING)|| filter_input(INPUT_REQUEST, 'iphone', FILTER_SANITIZE_STRING)|| filter_input(INPUT_REQUEST, 'IEMobile', FILTER_SANITIZE_STRING));
}
if (WAP)
{
    define('WIRELESS_PROTOCOL', filter_input(INPUT_REQUEST, 'wap', FILTER_SANITIZE_STRING) ? 'wap' : (filter_input(INPUT_REQUEST, 'wap2', FILTER_SANITIZE_STRING) ? 'wap2' : (filter_input(INPUT_REQUEST, 'iphone', FILTER_SANITIZE_STRING) ? 'iphone' : (filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING) ? 'imode' : (filter_input(INPUT_REQUEST, 'IEMobile', FILTER_SANITIZE_STRING) ? 'IEMobile' :(filter_input(INPUT_REQUEST, 'html', FILTER_SANITIZE_STRING) ? 'html' : (filter_input(INPUT_REQUEST, 'Android', FILTER_SANITIZE_STRING) ? 'Android' : '')))))));
}
_

これは、filter_input()関数がすでにtrue/falseと評価される値を返すため、isset()も必要ないためです。詳細については、 filter_input()のPHPマニュアル の戻り値を確認してください。

また、empty()is_null()をチェックして、それらの使用法がisset()とどのように比較されるかを確認することもできます。この状況では、関数empty()の方が理にかなっています。

未定義の_%_SERVER['ALL_HTTP']_の問題については、そこでisset()を使用して、変数が存在するかどうかを最初に確認する必要があります。例:

_if (isset($_SERVER['ALL_HTTP']) && strpos(strtolower($_SERVER['ALL_HTTP']), 'OperaMini') > 0) {
    $mobile_browser++;
}
_

404ファイルが見つからないというエラーは、ファイルがどこに配置されているかを知らなければ解決できないものです。ただし、使用しているインクルードは次のものを探しています。

_C:\Users\sanoj\Documents\NetBeansProjects\video-site-2\web\404.html_

その場所でファイルを作成/移動するか、正しいファイルの場所を指すようにインクルードパスを変更する必要があります。ファイルの場所を教えていただければ、正しいインクルードパスを教えてくれます。

2
Siphon

よりわかりやすいコードの使用を検討する必要があります。

ステップ1:1つの配列でニーズに一致する変数を取得します

_$tab=array_filter(filter_input_array(INPUT_SERVER,Array(
    'wap'     =>FILTER_SANITIZE_STRING,
    'wap2'    =>FILTER_SANITIZE_STRING,
    'imode'   =>FILTER_SANITIZE_STRING,
    'html'    =>FILTER_SANITIZE_STRING,
    'Android' =>FILTER_SANITIZE_STRING,
    'iphone'  =>FILTER_SANITIZE_STRING,
    'IEMobile'=>FILTER_SANITIZE_STRING)));
_

ステップ2:最初に検出された変数を使用する

_if(!defined('WAP'))&&(count($tab)) {
   define('WAP', $tab[0]);
}
_

また、他の回答ですでに述べたように、IDE警告_Do Not Access SuperGlobal $_REQUEST Array Directly_を満たすには、filter_input()関数を使用する必要があります

1
Adam

最初の部分はあなたの質問に直接答えることはありませんが、それは重要な注意事項であり、おそらくあなたのアプリケーションで多くの悲しみを救うでしょう。定数を誤って使用しているため、戻ってきて噛み付く可能性があります。

次のコードについて考えてみます。

_if(!defined('WAP'))
    define('WAP', isset($_REQUEST['wap']) 
    || isset($_REQUEST['wap2']) || isset($_REQUEST['imode'])
    || isset($_REQUEST['html'])|| isset($_REQUEST['Android'])
    || isset($_REQUEST['iphone'])|| isset($_REQUEST['IEMobile']));
_

これらの行は、「WAPが定義されていない場合、次のいずれかがREQUESTスコープにある場合、WAPにtrueの値を割り当てます:wap、wap2、imode、html、Android、iphone、またはIEMobile。リクエストスコープにない場合は、WAP定数に値falseを割り当てます。

これは些細なことだと思うかもしれませんが、他のシステムの現実に関係なく、定数は同じ値を持つ必要があります。定数は、の値を見つけるのが非常に簡単である必要があります。 PHPが定数を使用してアイデアを与える方法を見てください。_E_NOTICE_は常に同じ値です。したがって、_E_NOTICE_またはあなたを表す整数(8)を使用できます。 _E_NOTICE_定数を使用して、まったく同じ結果を得ることができます。

一方、_E_NOTICE_が8に等しい場合、通知が致命的なエラーをトリガーするように指定しない限り、_E_NOTICE_は16(別名_E_CORE_ERROR_)に等しくなります。あなたはあなたの手に少し紛らわしい混乱を持っているでしょう。

この場合、なぜこれが重要なのですか?

あなたのコードを考えてみましょう:

_if(!defined('WAP'))
{
    define('WAP', isset(filter_input(INPUT_REQUEST, 'wap', FILTER_SANITIZE_STRING)) 
    || isset(filter_input(INPUT_REQUEST, 'wap2', FILTER_SANITIZE_STRING)) 
    || isset(filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING))
    || isset(filter_input(INPUT_REQUEST, 'html', FILTER_SANITIZE_STRING))
    || isset(filter_input(INPUT_REQUEST, 'Android', FILTER_SANITIZE_STRING))
    || isset(filter_input(INPUT_REQUEST, 'iphone', FILTER_SANITIZE_STRING))
    || isset(filter_input(INPUT_REQUEST, 'IEMobile', FILTER_SANITIZE_STRING)));
}
_

定数が特定のセッションに設定されていることを確認するために、多くの精神体操を行っています。エラーをトリガーしないようにこのコードをクリーンアップする方法はありますが、それでも問題が含まれている可能性があります、つまり変数、さらには関数を使用する必要がある場所で定数を使用しています。

次のように:

_function is_wap()
{
    return (filter_input(INPUT_REQUEST, 'wap2', FILTER_SANITIZE_STRING)
    || filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING)
    || filter_input(INPUT_REQUEST, 'html', FILTER_SANITIZE_STRING)
    || filter_input(INPUT_REQUEST, 'Android', FILTER_SANITIZE_STRING)
    || filter_input(INPUT_REQUEST, 'iphone', FILTER_SANITIZE_STRING)
    || filter_input(INPUT_REQUEST, 'IEMobile', FILTER_SANITIZE_STRING));
}
_

ここで、WAPis_wap()に置き換えます。

あなたの質問にもっと一致して、あなたはできません直接の関数呼び出しに対してisset()を使用します。これを回避するには、次の3つのいずれかを実行できます。

  1. PHPが示唆するように、代わりに_null !==_を使用します。これはおそらく最も簡単な速記ソリューションです。

例:

_if (isset(filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING)))
    ...
_

と同じくらい簡単に書くことができます

_if (null !== ($imode = filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING)))
    ...
_

変数の割り当ても取得します。

  1. isset()の使用を主張する場合は、事前に変数を割り当てることができます。

    $ imode = filter_input(INPUT_REQUEST、 'imode'、FILTER_SANITIZE_STRING); if(isset($ imode)).。

  2. function戻り値を使用して、結果を判別できます。サードパーティまたは組み込み関数に適切な戻り値がない場合は、ロジックを処理するカスタム関数を作成することもできます。

たとえば、値がnullに等しくないことを確認したいだけの場合(そして、falseであっても問題ない場合)、次のように使用できます。

_function isNotNull($val)
{
    return ($val !== null);
    // note that, because you've essentially passed the function result,
    // you could use this line instead:
    // return isset($val);
}
_

次に、コードでカスタム関数を使用できます。

_isNotNull(filter_input(INPUT_REQUEST, 'wap', FILTER_SANITIZE_STRING)) 
|| isNotNull(filter_input(INPUT_REQUEST, 'wap2', FILTER_SANITIZE_STRING)) 
|| isNotNull(filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING))
|| isNotNull(filter_input(INPUT_REQUEST, 'html', FILTER_SANITIZE_STRING))
|| isNotNull(filter_input(INPUT_REQUEST, 'Android', FILTER_SANITIZE_STRING))
|| isNotNull(filter_input(INPUT_REQUEST, 'iphone', FILTER_SANITIZE_STRING))
|| isNotNull(filter_input(INPUT_REQUEST, 'IEMobile', FILTER_SANITIZE_STRING)));
_

_filter_input_は、フィルターが失敗した場合はfalseを返し、変数が存在しない場合はnullを返すためです。したがって、issetを完全に省略すると、フィルターが失敗する可能性なしに変数が存在するかどうかを論理チェックで判断する方が有利な場合があります。

フィルタが生産に失敗する可能性は低いことに注意する必要があります。私の元のポイントに完全に円を描くと、それが非常に低い理由の1つは、フィルターが定数であり、[〜#〜]常に[〜#〜]が同じことを表すためです。

0
smcjones

isset()を次のように使用します。

    if(!defined('WAP')){
      if(isset($_REQUEST['wap']) || isset($_REQUEST['wap2']) || ..){
      $wap = $_REQUEST['wap']);
      $wap2 = $_REQUEST['wap2']);
      //other variables
      define('WAP', $wap || $wap2 || ..);
    }

}
0
Jsparo30