2核1G3M服务器88一季度

腾讯云,阿里云百度云等 折扣价→点我←

Discuz X3.4中相关新更新应用的比较实用的函数 discuz 教程

游客1 游客组

判断是否为机器人、判断是否为移动设备[p=24, null, left]这个自己收集比较麻烦[/p][p=24, null, left]//判断是否为机器人、爬虫
function checkrobot($useragent = '') {
static $kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla';
static $kw_browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla';

$useragent = empty($useragent) ? $_SERVER['HTTP_USER_AGENT'] : $useragent;

if(!strexists($useragent, 'http://') && preg_match("/($kw_browsers)/i", $useragent)) {
return false;
} elseif(preg_match("/($kw_spiders)/i", $useragent)) {
return true;
} else {
return false;
}
}

//判断是否为移动设备
function checkmobile() {
global $_G;
$mobile = array();
static $mobilebrowser_list ='iPhone|Android|phone|WAP|NetFront|JAVA|Opera\sMini|UCWEB|Windows\sCE|Symbian|Series|webOS|SonyEricsson|Sony|BlackBerry|IEMobile|dopod|Nokia|samsung|PalmSource|Xda|PIEPlus|MEIZU|MIDP|CLDC';
if(preg_match("/$mobilebrowser_list/i", $_SERVER['HTTP_USER_AGENT'], $mobile)) {
$_G['mobile'] = $mobile[0];
return true;
} else {
if(preg_match('/(mozilla|chrome|safari|opera|m3gate|winwap|openwave|myop)/i', $_SERVER['HTTP_USER_AGENT'])) {
return false;
} else {
$_G['mobile'] = 'unknown';
if($_GET['mobile'] === 'yes') {
return true;
} else {
return false;
}
}
}
}
[/p]防止XSS跨站点注入[p=24, null, left]通过检测是否含有左尖括号’<'、双引号来判断,发现此类字符,立即exit。Beta版小bug[/p][p=24, null, left]function _xss_check() {
$temp = strtoupper(urldecode(urldecode($_SERVER['REQUEST_URI'])));
if(strpos($temp, '<') !== false || strpos($temp, '"') !== false || strpos($temp,'CONTENT-TRANSFER-ENCODING')!==false) {
system_error('request_tainting');
}
return true;
}
[/p]获取客户端IP地址[p=24, null, left]使用正则/^([0-9]{1,3}\.){3}[0-9]{1,3}$/判断是否合法,但不够严格。直接使用函数ip2long()即可。这里都是IPV4.[/p][p=24, null, left]function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
foreach ($matches[0] AS $xip) {
if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
$ip = $xip;
break;
}
}
}
return $ip;
}
[/p]
站长窝论坛版权声明 1、本帖标题:Discuz X3.4中相关新更新应用的比较实用的函数
2、论坛网址:站长窝论坛
3、站长窝论坛的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
4、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
5、站长窝论坛一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本帖由游客1在站长窝论坛《程序综合区》版块原创发布, 转载请注明出处!
评论
最新回复 (0)
返回
发新帖