san*_*nce 8 php netbeans function detect
( ! ) 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
Run Code Online (Sandbox Code Playgroud)
以前我的代码是
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' : '')))))));
Run Code Online (Sandbox Code Playgroud)
我的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' : '')))))));
Run Code Online (Sandbox Code Playgroud)
这是 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";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
和 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';
}
?>
Run Code Online (Sandbox Code Playgroud)
和 config.php
<?php
$current_page_uri = $_SERVER['REQUEST_URI'];
$part_url = explode("/", $current_page_uri);
$page_name = end($part_url);
$email_id = "s.hidayath@agileits.com";
?>
Run Code Online (Sandbox Code Playgroud)
当加载索引文件时,它应该检测设备并将其重定向到正确的根,但在我的情况下,我不会得到跟随错误
( ! ) 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
Run Code Online (Sandbox Code Playgroud)
首先,NetBeans IDE会向您显示这些警告,以便您不要$_REQUEST直接信任这些值并以某种方式验证它。通过检查,isset($_REQUEST['wap'])您已经完成了 IDE 建议的检查的一部分。此过程还可以有其他步骤,您应该在使用它之前执行这些步骤,例如插入数据库。我忽略了许多 NetBeans 警告,因为 NetBeans 不知道我将如何处理我的输入/变量。它只是警告我最佳实践,这可能是也可能不是最适合我的情况。警告仅应视为建议,而不是您必须做的事情。
其次,如果使用filter_input(),则不需要isset()另外使用。因为,filter_input()已经为你做了。正如文档所说,
返回值:
FALSE如果过滤器失败或者NULL未设置variable_name 变量,则成功时请求的变量的值。FILTER_NULL_ON_FAILURE如果使用该标志,则如果未设置变量并且过滤器失败,它将返回。FALSENULL
因此,您只需删除即可isset(),您的代码应该可以安全地工作。但您可能仍想检查该值是否设置为应用替代值。在这种情况下,只需使用empty()函数,当从is /FALSE返回值时,该函数将返回。因此,只需否定条件以匹配您的情况即可。就像这样——filter_input()NULLFALSE
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' : '')))))));
}
Run Code Online (Sandbox Code Playgroud)
第二个错误
注意:未定义索引:ALL_HTTP
我找不到ALL_HTTPphp 文档中为$_SERVER调用的任何变量。因此,请检查链接并找到一个可以满足您的目的的链接。我不确定你到底想用它得到什么,所以我不能提出任何建议。
第三个错误
警告:包括(web/404.html):无法打开流。
该错误已经表明该文件不存在。因此,要么该文件不存在,要么您提供的路径不正确。请检查并修复它。