Discuz_X中比较实用的函数【转载】

转载自http://blog.panzhibiao.com/index.php/archives/331

版本:x2_Beta

判断是否为机器人、判断是否为移动设备

这个自己收集比较麻烦

//判断是否为机器人、爬虫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;}}}}

防止XSS跨站点注入

通过检测是否含有左尖括号’<‘、双引号来判断,发现此类字符,立即exit。Beta版小bug

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;}


获取客户端IP地址

使用正则/^([0-9]{1,3}\.){3}[0-9]{1,3}$/判断是否合法,但不够严格。直接使用函数ip2long()即可。这里都是IPV4.

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;}


旅行还在继续,这个过程是艰难而又孤单的。

Discuz_X中比较实用的函数【转载】

相关文章:

你感兴趣的文章:

标签云: