用php实现让页面只能被百度gogole蜘蛛访问的方法
普通用户与搜索引擎蜘蛛爬行的区别在于发送的user agent,
看网站日志文件能发现百度蜘蛛名字包含Baiduspider, 而google的则是Googlebot, 这样我们可以通过判断发送的user agent来决定要不要取消普通用户的访问,编写函数如下:
代码如下:
function isAllowAccess($directForbidden = FALSE) {
$allowed = array('/baiduspider/i', '/googlebot/i');
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$valid = FALSE;
foreach ($allowed as $pattern) {
if (preg_match($pattern, $user_agent)) {
$valid = TRUE;
break;
}
}
if (!$valid && $directForbidden) {
exit("404 not found");
}
return $valid;
}
在要禁止访问的页面头部引用这个函数来做判断就ok了,如下俩中调用方式:
代码如下:
if (!isAllowAccess()) {
exit("404 not found");
}
//或者
isAllowAccess(TRUE);
相关推荐
-
php实现批量下载百度云盘文件例子分享
百度开放云PhpSDK下载地址:http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/web%E5%BA%94%E7%94%A8%E6%8E%A5%E5%85%A5/SDK 实例代码: 复制代码 代码如下: <?php/** * Author: hankcs * Date : 14-3-29 * Time : 下午10:29 */ini_se
-
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
最近遇到一个项目,客户需要一个功能,一个商品销售下单需要知道用户下单是从哪个途径来的,认为客服软件(53客服)和站长统计只能满足工作时间,及晚上下班和周六日休息,客服不在线,用户下单会不知道该订单的具体来源,所以嘛,又只能通过网站功能来增加一字段,获取来源关键字,如何获取来源关键字,代码发在下面,里面包含(百度.谷歌.雅虎.搜狗.搜搜.必应.有道)几大搜索引擎的获取方法,代码中均注明,希望对你有帮助,分享一下 代码如下: 复制代码 代码如下: <?php //获取来自搜索引擎入站时的关键词 fu
-
php使用百度天气接口示例
注意地区要转码的百度ak申请地址:http://lbsyun.baidu.com/apiconsole/key 复制代码 代码如下: <?php $city="嘉兴";$content = file_get_contents("http://api.map.baidu.com/telematics/v3/weather?location=%E5%98%89%E5%85%B4&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ&
-
phpsir 开发 一个检测百度关键字网站排名的python 程序
源码如下 :保存成utf-8 bd.py 文件 复制代码 代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import urllib ,urllib2 import re def baidu(w): url= "http://www.baidu.com/s?" values = { "w":w.encode('gbk','ignore') } data = urllib.urlencode
-
php+js实现百度地图多点标注的方法
本文实例讲述了php+js实现百度地图多点标注的方法.分享给大家供大家参考,具体如下: 1.php创建json数据 $products = $this->product_db->select($where); $products_json = json_encode($products); 2.js传入json数据 类似于这样的结构 var markerArr = [{ title: "名称:广州火车站", point: "113.264531,23.157003
-
PHP计算百度地图两个GPS坐标之间距离的方法
本文实例讲述了PHP计算百度地图两个GPS坐标之间距离的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: /** * 计算两个坐标之间的距离(米) * @param float $fP1Lat 起点(纬度) * @param float $fP1Lon 起点(经度) * @param float $fP2Lat 终点(纬度) * @param float $fP2Lon 终点(经度) * @return int */ function distanceBetw
-
php+ajax做仿百度搜索下拉自动提示框(有实例)
php+mysql+ajax实现百度搜索下拉提示框 主要有3个文件三个文件在同一个目录里 如下图 下面是三个文件的代码 把sql文件导入到mysql数据库里 修改下数据库密码为自己的 记得哦是UTF-8编码 php+mysql+ajax实现百度搜索下拉提示框 效果图 rpc.php文件 复制代码 代码如下: <?php mysql_connect('localhost', 'root' ,''); mysql_select_db("test"); $queryString = $
-
php使用百度翻译api示例分享
百度翻译API的PHP代码,测试可以实现,不过英译中可能需要转换编码. 复制代码 代码如下: <?phpfunction language($value,$from="auto",$to="auto"){ $value_code=urlencode($value); #首先对要翻译的文字进行 urlencode 处理 $appid="YourApiKey"; #您注册的API Key $languageurl = "ht
-
用php实现百度网盘图片直链的代码分享
第一种代码:代码量较少通过正则表达式获取百度网盘的文件真实地址,来实现直链的效果 将下面的代码保存为downbd.php 复制代码 代码如下: <?php $canshu=$_SERVER["QUERY_STRING"]; if($canshu=="") { die("文件不存在"); } else { $wangzhi="http://pan.baidu.com/share/link?".$canshu; $file=
-
php生成百度sitemap站点地图类函数实例
本文实例讲述了php生成百度sitemap站点地图类函数的方法,分享给大家供大家参考.具体实现方法如下: 问题概述: 公司网站是问答百科的网站.seo工程师提出需求说根据网站的问题来生成xml文件.每个xml文件包含5000条setmap格式数据.现在线上网站大约有70w条问题,所以说基本生成140个xml文件.还有一个索引文件.比如文件的名称以数字开头的.索引文件包含的内容就是每个xml文件的路径还有名称. 为什么要每个文件存储5000条数据呢,因为这是mysql的一个界限值.如果每次取多了以
-
php实现计算百度地图坐标之间距离的方法
本文实例讲述了php实现计算百度地图坐标之间距离的方法.分享给大家供大家参考,具体如下: 下面是网上的代码,使用的时候需要进行些许修改 第一个函数是获得范围,参数为纬度经度半径 第二个函数是计算坐标距离 <?php define('PI',3.1415926535898); define('EARTH_RADIUS',6378.137); //计算范围,可以做搜索用户 function GetRange($lat,$lon,$raidus){ //计算纬度 $degree = (24901 *
-
php获取从百度搜索进入网站的关键词的详细代码
分享一个php获取从百度搜索进入网站的关键词的代码,有需要的朋友可以参考一下: 代码: 复制代码 代码如下: <?php function search_word_from() { $referer = isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:''; if(strstr( $referer, 'baidu.com')){ //百度 preg_match( "|baidu.+wo?r?d=([^\\&]*)|i
随机推荐
- asp.net动态加载用户控件,关于后台添加、修改的思考
- DEDE隔行变色以及分组加线修改方法
- Microsoft .Net Remoting系列教程之二:Marshal、Disconnect与生命周期以及跟踪服务
- 动态刷新 dorado树的js代码
- asp.net 获取IP的相关资料
- javascript错误的认识不用关心内存管理
- 我需要目标-有眼光的人和没眼光的人
- expdp 中ORA-39002、ORA-39070错误详解及解决办法
- js获取div高度的代码
- js tr控制下面的tbody隐藏和显示
- 禁止IP访问网站的多种方法分享(linux,php,nginx,apache)
- 基于.net开发的遵循web标准的个人站点程序包下载
- Android 广播监听网络状态详解及实例代码
- C#中Mutex对象用法分析
- 简述:我为什么选择Python而不是Matlab和R语言
- 详解Node.js模板引擎Jade入门
- vue计算属性时v-for处理数组时遇到的一个bug问题
- Spring源码解密之默认标签的解析
- python 中的list和array的不同之处及转换问题
- 详解spring cloud整合Swagger2构建RESTful服务的APIs