找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1522|回复: 0

[分享] 屏蔽特定国内特定地区用户访问dedecms搜索功能

[复制链接]
发表于 2018-6-17 10:59:21 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
 
由于很多人有一些需求在做国内站的时候,不做国内某个地区的业务的时候,他想屏蔽用户访问网站,我这边以dedecms搜索功能为例子,因为是以前开发的,时间比较有限现在,不重新调整做整站的功能,如果有需要,可以将以下相关代码放入一个php文件,然后在data/common.ini.php里面包含就可以了。

   目前网络上有很多资源,例如著名的珊瑚虫ip数据库,但是其文件在本地,得定时更新。我们现在使用淘宝ip数据库,通过json返回的数据来解析ip是否某地区,下面以"上海市"为例:

   首页找到dedecms底下plus下的search.php文件,查找以下代码
  1. if($cfg_notallowstr !='' && preg_match("#".$cfg_notallowstr."#i", $keyword))
  2. {  
  3.     ShowMsg("你的搜索关键字中存在非法内容,被系统禁止!","-1");
  4.     exit();
  5. }
复制代码

   在上面加入
  1. function get_ip_data(){   
  2.     $ip=file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".get_client_ip());
  3.     $ip = json_decode($ip);
  4.     if($ip->code){
  5.         return false;
  6.     }
  7.     $data = (array) $ip->data;
  8.     if($data['city']=='上海市' && !isCrawler()){
  9.        // exit('http://www.xx.net');
  10.   return true;
  11.         
  12. /*     header("location:".getenv("HTTP_REFERER")); // 返回其调用页面 */

  13.     }
  14. }

  15. function isCrawler() {
  16.         $spiderSite= array(
  17.                         "TencentTraveler",
  18.                         "Baiduspider+",
  19.                         "BaiduGame",
  20.                         "Googlebot",
  21.                         "msnbot",
  22.                         "Sosospider+",
  23.                         "Sogou web spider",
  24.                         "ia_archiver",
  25.                         "Yahoo! Slurp",
  26.                         "YoudaoBot",
  27.                         "Yahoo Slurp",
  28.                         "MSNBot",
  29.                         "Java (Often spam bot)",
  30.                         "BaiDuSpider",
  31.                         "Voila",
  32.                         "Yandex bot",
  33.                         "BSpider",
  34.                         "twiceler",
  35.                         "Sogou Spider",
  36.                         "Speedy Spider",
  37.                         "Google AdSense",
  38.                         "Heritrix",
  39.                         "Python-urllib",
  40.                         "Alexa (IA Archiver)",
  41.                         "Ask",
  42.                         "Exabot",
  43.                         "Custo",
  44.                         "OutfoxBot/YodaoBot",
  45.                         "yacy",
  46.                         "SurveyBot",
  47.                         "legs",
  48.                         "lwp-trivial",
  49.                         "Nutch",
  50.                         "StackRambler",
  51.                         "The web archive (IA Archiver)",
  52.                         "Perl tool",
  53.                         "MJ12bot",
  54.                         "Netcraft",
  55.                         "MSIECrawler",
  56.                         "WGet tools",
  57.                         "larbin",
  58.                         "Fish search",
  59.                 );
  60.         if(in_array(strtolower($_SERVER['HTTP_USER_AGENT']),$spiderSite)){
  61.             return true;
  62.         }else{
  63.             return false;
  64.         }
  65. }

  66. //获取客户端ip
  67. function get_client_ip()
  68. {
  69.     if (isset($_SERVER)){
  70.             if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
  71.                 $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  72.             } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
  73.                 $realip = $_SERVER["HTTP_CLIENT_IP"];
  74.             } else {
  75.                 $realip = $_SERVER["REMOTE_ADDR"];
  76.             }
  77.     } else {
  78.             if (getenv("HTTP_X_FORWARDED_FOR")){
  79.                 $realip = getenv("HTTP_X_FORWARDED_FOR");
  80.             } else if (getenv("HTTP_CLIENT_IP")) {
  81.                 $realip = getenv("HTTP_CLIENT_IP");
  82.             } else {
  83.                 $realip = getenv("REMOTE_ADDR");
  84.             }
  85.         }
  86.     return $realip;
  87. }
  88. if(get_ip_data())
  89. {
  90.     ShowMsg("你的IP被禁止!","-1");
  91.     exit();
  92. }
复制代码

   我将函数直接写在search.php文件中,大家不要学我,这会导致原来的文件代码有些杂乱,建议使用包含函数文件的方式。

   保存文件后,你让上海市的朋友访问,系统就会提示"你的IP被禁止!"的提示,赶紧试试吧,后面我将介绍一种国外做站屏蔽国内访客的办法。

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-1-10 20:35 , Processed in 0.048806 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表