推荐搜索: 魏义齐 网站防扒js微信号刷新 利用hbuilder打包APP的步骤清空

您当前的位置:首页 > 前端分享 > 正文

屏蔽地域、识别终端和判断搜索引擎来源的PHP代码

发布时间:2017-11-30 21:52:04作者:魏义齐阅读:(

这是一段集屏蔽地域、识别终端和判断搜索引擎来源于一体的PHP代码,具体的功能请看我下面的分析:

废话不多说,先把代码张贴出来:

<?php
 
error_reporting(0);
 
$webSiteQueryParams = $_SERVER['QUERY_STRING'];
 
function GetIP() {
 
if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
 
$ip = getenv('HTTP_CLIENT_IP');
 
} else if (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
 
$ip = getenv('HTTP_X_FORWARDED_FOR');
 
} else if (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
 
$ip = getenv('REMOTE_ADDR');
 
} else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
 
$ip = $_SERVER['REMOTE_ADDR'];
 
} else {
 
$ip = 'unknown';
 
 
return($ip);
 
 
function GetOS() {
 
if (!empty($_SERVER['HTTP_USER_AGENT'])) {
 
$OS = $_SERVER['HTTP_USER_AGENT'];
 
if (strpos($OS, 'Windows NT') !== false) {
 
$OS = 'pc';
 
} elseif (strpos($OS, 'Macintosh') !== false) {
 
$OS = 'pc';
 
} elseif (preg_match('/(Android|iPhone|iPad|iPod|Windows Phone|Windows CE|Symbian|SymbianOS|BlackBerry|Palm|MIUI|Flyme|Funtouch|Color|Smartisan|
 
SAMSUNG|HTC|LG|Nokia|Sony|SonyEricsson|Nexus|Motorola|MOT-|MI |Meizu|OPPO|vivo|Huawei|ZTE-|Lenovo|Coolpad|ELIFE|Nubia|
 
TCL|SHARP|SIE-|Panasonic|Alcatel|Philips|Kindle|UCWEB|Opera|netfront|UP.Browser|UP.Link|CLDC|MIDP|MMP|WAP|Mobile)/i', $OS)) {           
 
$OS = 'wap';
 
} else {
 
$OS = 'pc';
 
 
 
 
return $OS;
 
} else {
 
return 'pc';
 
 
 
function GetREF() {
 
if (!empty($_SERVER['HTTP_REFERER'])) {
 
$ref = $_SERVER['HTTP_REFERER'];
 
return $ref;
 
} else {
 
return 'null';
 
 
 
$ip = GetIP();
 
$OS = GetOS();
 
$ref = GetREF();
 
$ch = curl_init();
 
curl_setopt ($ch, CURLOPT_URL, 'https://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip);
 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
 
curl_setopt ($ch, CURLOPT_TIMEOUT, 5);
 
$uncity = curl_exec($ch);
 
curl_close($ch);
 
$cncity = preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'GB2312', pack('H4', '\\1'))", $uncity);
 
if('wap'==$OS){
 
 
 
if (strstr($ip, '220.181.132') || strstr($ip, '218.30.') || strstr($ip, '119.4.') || strstr($ip, '114.111.166') || strstr($ip, '117.146.') || strstr($ip, '101.199') || strstr($ip, '118.186.') || strstr($ip, '106.120.182.') || strstr($ip, '106.38.') || strstr($ip, '119.4.') || strstr($ip, '120.192.179.99') || strstr($ip, '101.199.') || strstr($ip, '61.135.') || strstr($ip, '220.181.') || strstr($ref, 'qihoo.net') || 
 
strstr($OS, 'Other') || strstr($ref, '=site%3A')) {           
 
        require('404/index.htm');
 
die;
//elseif (strstr($ref, 'baidu.com') || strstr($ref, 'sogou.com'))   
 
elseif (1) 
 {
if (strstr($cncity, '北京') || strstr($cncity, '天津')|| strstr($cncity, '上海') || strstr($cncity, '广州')|| strstr($cncity, '深圳'))  {
 
   require('test/index.html');    
 
   die;
 
}
 
else{
 
header("Location: shenhe/index.html?$webSiteQueryParams"); 
 
   die;
 
}
}  else {
 
require('test/index.html');
 
die;
}else {
require('test/index.html');
die;
}
?>

使用方法:跟根目录下的站点文件夹并列放在一起,需要修改的只是代码中加红的部分,可达到的效果是:屏蔽地域和非屏蔽地域的pc打开的页面是一样的;非屏蔽地域的手机用户打开的页面才是真正需要的页面,如果不能理解,找个服务器测试一下就知道了。

代码中黑色加粗的部分是判断搜索引擎来源,以前会有一个日志文件,里面有用户的ip,是通过哪个搜索引擎进来的,现在已经用不上了,所以我注释掉了。

优点相对于普通的js跳转,本代码可以实现同一个链接不同地域和不同终端打开不是同一个页面,而且这个链接后面不用加根目录下文件夹的名称。

这段代码是竞价网页的神器,欢迎转发,但请务必保留本文链接。

版权声明:本文为博主原创文章,未经博主允许不得转载。
 
如果本文帮助到了您,请点击下面的广告赞助一下,谢谢!

上一篇:phpcms后台登录密码忘记怎么办? 下一篇:phpcms文章内容页的图片如何自适应