PHP实现百度、网易、新浪短网址服务的API接口调用
1 谷歌、百度、网易、新浪短网址服务的API比较
百度短网址API接口完全对外开放,用户不需申请其开放平台的APPKEY,也不用采用OAuth的协议,因此相对简单方便;谷歌的短网址API接口有两种形式,一种类似于百度无需进行繁复的OAuth认证,不过限制比多;另一种是采用GAE平台OAuth2.0的认证方式,限制较少。新浪微博的短网址API接口服务也类似于谷歌,第一种只需要取得新浪微博开放平台的APPKEY即可使用,第二种是采用OAuth2.0认证的方式。网易只提供类似于新浪微博提供的第二种API接口调用方式,即需要申请APPKEY,不过申请非常容易通过,这点不同于新浪微博。值得一提的是,经博主测试,网易的短网址API接口貌似有bug。最终三个接口的测试效果如下图所示:
百度网易新浪微博短网址API接口
2 PHP实现百度短网址API接口调用
百度短网址的API接口封装不是很好,需要针对长网址转短网址和短网址转长网址请求不同的页面(create.php和query.php),另外官方的示例程序也有错误。
代码如下 | 复制代码 |
<?php /** * @author: vfhky 20130304 20:10 * @description: PHP调用百度短网址API接口 * * @param string $type: 非零整数代表长网址转短网址,0表示短网址转长网址 */ function bdUrlAPI($type, $url){ if($type) $baseurl = 'http://dwz.cn/create.php'; else $baseurl = 'http://dwz.cn/query.php'; $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$baseurl); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); if($type) $data=array('url'=>$url); else $data=array('tinyurl'=>$url); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); $strRes=curl_exec($ch); curl_close($ch); $arrResponse=json_decode($strRes,true); if($arrResponse['status']!=0) { echo 'ErrorCode: ['.$arrResponse['status'].'] ErrorMsg: ['.iconv('UTF-8','GBK',$arrResponse['err_msg'])."]<br/>"; return 0; } if($type) return $arrResponse['tinyurl']; else return $arrResponse['longurl']; } echo '<br/><br/>----------百度短网址API----------<br/><br/>'; echo 'Long to Short: '.bdUrlAPI(1, 'http://www.111cn.net').'<br/>'; echo 'Short to Long: '.bdUrlAPI(0, 'http://dwz.cn/evlhW').'<br/><br/>'; ?> |
3 PHP实现网易短网址API接口调用
网易短网址API接口
用户首先需要申请一个appkey,申请地址是http://126.am/,登录进去即可申请,并且很快得到审核。不过,经过测试发现一个bug:用接口生成的短网址无法通过API接口还原为之前的长网址,提示“NOT_MATCH”(对应的官方说明是:Key和短地址不匹配,无法还原)。但是如上图所示,如果在http://126.am/user.action的页面生成的短网址却能够通过API还原为原来的长网址。
代码如下 | 复制代码 |
<?php /** * @author: vfhky 20130304 20:10 * @description: PHP调用网易短网址API接口 * * @param string $type: 非零整数代表长网址转短网址,0表示短网址转长网址 */ function wyUrlAPI($type,$url){ if($type) $baseurl = 'http://126.am/api!shorten.action'; else $baseurl = 'http://126.am/api!expand.action'; /* 这是我申请的APPKEY,大家可以测试使用 */ $key = '4f0c04771d4e40b4945afcfdc0337e3d'; $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$baseurl); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); if($type) $data=array('longUrl'=>$url,'key'=>$key); else $data=array('shortUrl'=>$url,'key'=>$key); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); $strRes=curl_exec($ch); curl_close($ch); $arrResponse=json_decode($strRes,true); if($arrResponse['status_code']!=200) { echo 'ErrorCode: ['.$arrResponse['status_code'].'] ErrorMsg: ['.iconv('UTF-8','GBK',$arrResponse['status_txt'])."]<br/>"; return 0; } return $arrResponse['url']; } echo '<br/><br/>----------网易短网址API----------<br/><br/>'; echo 'Long to Short: '.wyUrlAPI(1,'http://www.111cn.net').'<br/>'; echo 'Short to Long: '.wyUrlAPI(0,'http://126.am/huangky').' '; echo 'Short to Long: '.wyUrlAPI(0,'126.am/XRYsJ2').'<br/><br/>'; ?> |
4 PHP实现新浪微博短网址API接口调用
同样,用户首先需要申请一个新浪微博开放平台的appkey,申请地址是http://open.t.sina.com.cn/,不过审核相对严格而且比较慢。新浪微博短网址API接口有两种实现方式,第一种是原始的OAuth1.0的验证方式,比较简单,无需申请token,第二种是OAuth2.0的验证方式,这个需要access_token(虽然官方文档http://t.cn/8FgFoL8说可以像第一种那样直接通过appkey验证,但是测试不成功)。因此下面的示例采用的是第一种方式,即直接通过appkey验证。
代码如下 | 复制代码 |
<?php |
5 后记
综上,百度的短网址API相对方便,而且限制较少;新浪和网易的API接口相对麻烦;网易的短网址API是唯一具备API请求统计功能的,但很容易受到“请求过于频繁而遭到REQUEST_LIMIT”。另外,对于任何API接口的调试工作,一定要使用其接口提供的错误信息,例如上面百度接口的$arrResponse['status']字段、网易的$arrResponse['status_code']字段。
原文转自:http://www.huangkeye.cn/web/php/839.html
现在有很多朋友在做网站安全验证时会把session存放在cookie中,这样我们就对一些数据进行加密处理,那么他们这样做的优缺点是什么及有那些安全问题呢?下面我们一起来对比一下。
这篇文章不是讨论session,也不是cookie,现在很多网站都是讲session放cookie中,叫做cookie based session,下面就来讨论下cookie based session的优缺点:
优点:
1.减轻服务器压力,如PHP session默认是文件存储格式的,这样就会较少磁盘压力,不会给磁盘造成较多的碎片。
2.你在做集群的时候,是不是要做session同步的问题,cookie based session后就免去了。
缺点:
1.同一个用户,可能在多个地方登录,你也无从判断谁是真实有效用户。
2.session记录在cookie放本地,可能被hacer获取,通过anehta可以将cookie持久化,使登录状态永久有效,当然你可以再记录cookie的时候记录时间戳,在服务器端验证有效期。
个人建议:
从安全性上来说只要处理得当,session和cookie相差无几,另外还要考虑cookie的存储量,一些重要信息如用户信息或权限信息最好不要放cookie
session和cookie谁更安全
就个人而言,我觉得session更安全一点,我以下几点看法。
1,如果session和cookie一样安全的话,二者就没有并要同时存在了,只要cookie就好了,让客户端来分提服务器的负担,并且对于用户来说又是透明的。何乐而不为呢。
2,session的sessionID是放在cookie里,要想功破session的话,第一要功破cookie。功破cookie后,你要得到 sessionID,sessionID是要有人登录,或者启动session_start才会有,你不知道什么时候会有人登录。第二,sessionID是加密的,第二次session_start的时候,前一次的sessionID就没有用了,session过期时sessionid也会失效,想在短时间内功破加了密的 sessionID很难。session是针对某一次通信而言,会话结束session也就随着消失了,而真正的cookie存在于客户端硬盘上的一个文本文件,谁安全很显然了。
PHP多线程编程中可以通过Thread,Worker的构造方法传递变量到线程,也可以通过线程的public属性或public方法实现,经研究发现都是通过serialize()和unserialize()实现传递,这样就会造成几个问题:测试环境
OS: win7 64
PHP: 5.4.25 ts
pthreads: 0.1.0
1.性能问题
2.PDO等某些类型不能serialize所以就不能传递到线程。
这两个问题是能通过其他凡是解决的,解决方法仁者见仁智者见智。
另外,可以通过传递匿名函数到线程中,但是有个bug,匿名函数不能赋值给线程中的属性,导致传递的匿名函数只能在线程的构造方法中才能使用(call_user_fun*系列函数调用)。
Thread属性定义一定要注意必须在构造方法中初始化,否则必定为null。__construct()和run()里面的代码不在一个次元,如果属性不是PHP标量在run()中不能修改,例如构造方法中初始化一个对象,然后run()中修改对象属性不会生效。
正确写法:
代码如下 | 复制代码 |
abstract class Task extends Thread { |
错误写法:
代码如下 | 复制代码 |
abstract class Task extends Thread { |
这样也是错的,无论stdClass还是数组
代码如下 | 复制代码 |
abstract class Task extends Thread { private $info; public function __construct($task) { $this->info = array(); $this->info ['task'] = $task; $this->info ['finished'] = false; $this->info ['terminate'] = false; $this->info ['terminated'] = false; $this->info ['error'] = false; $this->info ['info'] = array (); } } |
后来研究又发现,复合类型的数据整体赋值貌似能起作用。
如果程序有很多回调函数在线程内部用的话就是找死啊。
初学php时就知道利用替换函数来替换指定的数字,但要替换指定位置我们需要简单处理一下才行,下面我介绍几个例子把指定位星号显示出来。
例子,用户名
代码如下 | 复制代码 |
function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen)); for($i=0; $i< $strlen; $i++) |
示例
代码如下 | 复制代码 |
$str = "如来神掌"; |
下面附两个IP地址与手机号星号显示
初学PHP,看到别人是通过合并和拆分数组进行这个操作!所以转过来!!
代码如下 | 复制代码 |
<?php $ip =$_SERVER['REMOTE_ADDR']; $ip_arr= explode('.', $ip); $ip_arr[3]='*'; $ip= implode('.', $ip_arr); echo $ip; ?> |
手机号的
代码如下 | 复制代码 |
<?php |
今天写php的时候发现$_POST["arr"]无法获取参数arr的数组,记录一下。
例如有以下表单需要提交:
代码如下 | 复制代码 |
<input type="checkbox" name="arr" value="" /> |
使用$_POST["arr"]只能获得最后选择的复选框的值,要获得全部选中的复选框的值需要把表单修改成下面:
代码如下 | 复制代码 |
<input type="checkbox" name="arr[]" value="" /> |
这样就可以使用$_POST["arr"]获得全部选中的checkbox的值,那这样获取值了我们要怎么解析出来呢。
第一中方法
代码如下 | 复制代码 |
<form action="test1.php" method="post"> test1.php <?php |
?>
第二种用法
test3.php
代码如下 | 复制代码 |
<?php if(isset($_POST['submit'])){ |
相关文章
- 专做了百度和google的网盟推广以作推广效果的评估比较。百度的周期为6天,google为4天。 从百度的统计数据可以看出这六天的点击次数总共为464,平均点击花费了0.30元...2017-07-06
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
以下是使用js代码实现百度地图计算两地距离,代码如下所示:<script src="js/jquery-1.9.0.js" type="text/javascript" language="javascript"></script><script language="javascript" type="text/javascript" src="js/...2015-10-30- 百度联盟封号对于许多的站长来说肯定是会影响到心情的,那么既然是百度联盟封号了我们就肯定有一些原因的,虽然不是你自己搞的或一些其它因素都有可能,我们下面整理一下百...2016-10-10
- 经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
本文给大家介绍javascript实现高德地图和百度地图提取行政区边界经纬度坐标的相关知识,本文实用性非常高,代码简单易懂,需要的朋友参考下吧...2016-01-24- 网站被K后,笔者做的第一件事便是在网站上增加更新模块。百度算法更新,对于网站内容给予了相当大的权重,这是笔者网站最欠缺的部分,保证了及时的更新便有了吸引蜘蛛爬取的...2016-10-10
- 我们知道百度熊抱枕很大,只想要百度熊的大头,该怎么办呢?下面我们就来看看详细的教程。 1、首先打开photoshopCS6软件,新建一个“1600*1600”的白色背景图,并从右上角...2016-12-31
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
以下是使用js代码实现百度地图计算两地距离,代码如下所示:<script src="js/jquery-1.9.0.js" type="text/javascript" language="javascript"></script><script language="javascript" type="text/javascript" src="js/...2015-10-30- 用户为满足自己某种需求而来到搜索引擎的,判断用户的需求是做好网站的开始。只有准确地判断出用户需求,了解用户搜索的目的,才能合理地衡量出一个网站结果的质量好,做好搜...2016-10-10
- 网页头部head 部分:TITLE 、<mtea>部分 网站描述Description、keyword 内容中的关键词,大家优化时也都比较重视这部分的关键词优化,因为在查询搜索结果时此处出现的关键词...2017-07-06
JS实现获取来自百度,Google,soso,sogou关键词的方法
这篇文章主要介绍了JS实现获取来自百度,Google,soso,sogou关键词的方法,结合实例形式分析了js获取来路页面的方法与相关搜索引擎关键词的处理技巧,需要的朋友可以参考下...2017-01-09- 这篇文章主要介绍了WinForm调用百度地图接口用法,结合具体实例形式简单分析了WinForm WebBrower控件与前端百度接口交互的相关操作技巧,需要的朋友可以参考下...2020-06-25
- 今天小编在这里就来给Illustrator的这一款软件的使用者们来说一说绘制百度云标志LOGO的教程,各位想知道具体绘制方法的使用者,那么下面就快来跟着小编一起看一看教程。...2016-09-14
- 我们一起来看一篇关于PHPCMS实现自动推送URL到百度站长平台,希望此教程能够帮助到各位朋友。 百度站长平台开放url推送接口,可以使用调用接口的形式主动及时推送u...2016-11-25
- 百度不更新网站原因分析 今天我们来看一篇关于 哦,你是不是其它的之一呢,好了下面来看看各位站长总结了来百度不更新网页的原因吧。 一、首页的大flash图片。 ...2016-10-10
- 一位站长译的一个国外的如何判断用户是否访问过某个网址文章,个人感觉写得非常不错,下面分享一下。 我们经常有这样的需求:想知道用户之前有没有访问过某个网址。有...2016-09-20
- 仅仅凭自己的感觉是根本无法判断这个关键词的价值的,那么这时候我们就可以适当的应用一下百度指数工具,利用这个工具我们可以挖掘出一些有价值的关键词。 一、从百...2016-10-10
- 这篇文章主要介绍了C# 10分钟完成百度人脸识别(入门篇),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 网站运营是很多人向往的赚钱方法,一些网站会发现,自己做的聚合页面和站内搜索页面被百度搜索无情打击,这是为什么,不知道原因的伙伴下面跟小编一起来看看。 今天杨子...2017-07-06
- 以前讲过很多关于curl模拟登陆用户的一些例子了,今天我来介绍一个登录百度产品的一个php程序代码,希望文章给你带来帮助,此文章只供学习使用。 最近弄了一个工具,希望...2016-11-25