( ! ) 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
Во-первых, IDE NetBeans показывает эти предупреждения, чтобы вы не доверяли$_REQUEST
значения непосредственно и проверить его в некотором роде. Проверяя isset($_REQUEST['wap'])
вы уже выполняете часть проверки, которую предлагает IDE. Там могут быть другие шаги этого процесса, которые вы должны сделать перед вами использование это, как вставка в базу данных. Я игнорирую многие предупреждения NetBeans, потому что NetBeans не знает, что я собираюсь делать со своими входами / переменными. Это просто предупреждает меня о лучших практиках, которые могут или не могут быть лучшими для моего случая. А также предупреждения следует принимать только как предложения, а не то, что вы должен делать.
Во-вторых, если вы используете filter_input (), вам не нужно использовать isset()
дополнительно. Так как, filter_input()
уже делает это для вас. Как сказано в документации,
Возвращаемые значения : Значение запрашиваемой переменной в случае успеха,
FALSE
если фильтр не работает, илиNULL
если переменная variable_name не установлена. Если флагFILTER_NULL_ON_FAILURE
используется, это возвращаетсяFALSE
если переменная не установлена а такжеNULL
если фильтр не работает.
Так что вы можете просто удалить isset()
и ваш код должен работать безопасно. Но вы все равно можете проверить, было ли установлено значение для применения альтернативных значений. В этом случае просто используйте пустой () функция, которая будет возвращать FALSE
когда значение возвращается из filter_input()
является 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' : '')))))));
}
Вторая ошибка
Примечание: неопределенный индекс: ALL_HTTP
Я не мог найти переменную с именем ALL_HTTP
в документации php для $ _SERVER. Так что проверьте ссылку и найдите тот, который может служить вашей цели. Я не уверен, что вы на самом деле пытаетесь получить с этим, поэтому я не могу предложить ничего.
Третья ошибка
Предупреждение: include (web / 404.html): не удалось открыть поток.
Ошибка уже говорит, что файл не существует. Таким образом, либо файл отсутствует, либо вы указали неверный путь. Просьба проверить и исправить это.
Удалить 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()
также. Проверьте возвращаемые значения в Руководство по PHP для filter_input () для получения дополнительной информации.
Вы также можете проверить 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
Вам нужно либо создать / переместить файл в это место, либо изменить путь включения, чтобы указать правильное местоположение файла. Вы можете указать мне местоположение файла, и я дам вам правильный путь для включения.
Вы должны рассмотреть возможность использования более понятного кода:
Шаг 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]);
}
Также, как уже говорилось в других ответах, вы должны использовать filter_input()
функции для удовлетворения вашего предупреждения IDE Do Not Access SuperGlobal $_REQUEST Array Directly
использование isset()
как :
if(!defined('WAP')){
if(isset($_REQUEST['wap']) || isset($_REQUEST['wap2']) || ..){
$wap = $_REQUEST['wap']);
$wap2 = $_REQUEST['wap2']);
//other variables
define('WAP', $wap || $wap2 || ..);
}
}
Хотя первая часть не дает прямого ответа на ваш вопрос, это важная заметка, которая, вероятно, избавит вас от горя в вашем приложении. Вы неправильно используете константы, которые могут вернуться, чтобы укусить вас.
Рассмотрим следующий код:
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 не определен, тогда присвойте WAP значение true, если в REQUEST
область действия: wap, wap2, imode, html, Android, iphone или IEMobile. Если они НЕ находятся в области запроса, назначьте WAP
постоянное значение false.
Я знаю, что это может показаться тривиальным, но константы должны иметь одинаковое значение независимо от любой другой системной реальности. Константы должны быть очень легко обнаружить значения для. Посмотрите, как PHP использует константы, чтобы дать идею. E_NOTICE
всегда одинаковое значение. Таким образом, вы можете использовать целое число (8), которое представляет E_NOTICE
или вы можете использовать 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));
}
Теперь замени WAP
с is_wap()
,
В соответствии с вашим вопросом, вы не могу использование isset()
против прямого вызова функции. Вы можете сделать одну из трех вещей, чтобы обойти это:
null !==
, Это, наверное, самое простое сокращенное решение.Пример:
if (isset(filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING)))
...
Можно так же легко написать, как
if (null !== ($imode = filter_input(INPUT_REQUEST, 'imode', FILTER_SANITIZE_STRING)))
...
Получение вашей переменной назначения, а также.
Если вы настаиваете на использовании isset()
тогда вы можете назначить переменную заранее.
$ imode = filter_input (INPUT_REQUEST, ‘imode’, FILTER_SANITIZE_STRING);
if (isset ($ imode))
…
Ты можешь использовать function
вернуть значения, чтобы определить результат. Вы даже можете создать пользовательскую функцию, которая будет обрабатывать вашу логику, если сторонняя или встроенная функция не имеет правильного возвращаемого значения.
Например, если вы просто хотите убедиться, что значение не равно нулю (и вы в порядке, если оно ложно), вы можете использовать это:
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
полностью, что заставит вашу логическую проверку определить, существует ли переменная без возможности сбоя фильтра.
Должен отметить, что вероятность отказа фильтра в производстве низкая. Пройдя полный круг до моей первоначальной точки, одна из причин, по которой он так низок, состоит в том, что фильтры являются постоянными, ВСЕГДА представлять то же самое.