标签归档:PHP

Typecho又拍云Upyun插件:UpyunUploader

插件作用如其名UpyunUploader。因为图片使用又拍云的外链比较方便,最主要的是网站在长城外,但图片在长城内,由此可大幅度的提高加载速度。

在最新稳定版0.9 (13.12.12)中测试通过,可正常使用。注意检查下插件配置是否正确。

如何安装

下载-上传-安装-配置。配置中几个项目都必须填写,如果信息填错了,那么上传肯定失败。目前仅测试了typecho的“最新版”0.8(10.8.15)-release。

下载地址:百度网盘 | 华为网盘

如何使用

配置完成后,当你上传附件时,插件会自动将上传的附件上传一遍到又拍云,如果上传成功,则会返回成功后的外链地址。再点击插入后,可以看到使用的就是外链地址了。

已知缺点

1.会直接在你的又拍云空间里面创建文件夹usr/uploads/…,以实现本地目录和又拍云空间里面的目录保持一致。

2.如果本次上传的文件没有插入到文章内容中去,那么下次打开后点击插入,则会使用本地的文件路径。解决办法可以直接将你的又拍云外链地址替换本地地址即可,原因由上面一条说明。

3.其他暂未知。

PS:吐槽下,TE新版开发太慢了…

新浪微博短地址接口

jucelin在早前发表的一篇关于新浪微博短地址获取办法的文章简单获取新浪微博短地址接口(API),发现很多开发这都对这个比较感兴趣,这里jucelin写了个小接口,方便没有API KEY的朋友使用。实际上获取新浪微博的短地址非常简单,直接使用curl技术就可以了,详细的方法和获取的源代码可以参考上文

API地址:https://jucelin.com/lab/short.php

老规矩,请使用get方式提交参数,post方式获取不到。

参数说明

type:处理方式,1表示原地址缩短为新浪微博短地址;2表示将新浪短地址还原成原地址。

url:链接地址,根据上面的type方式url为相应的地址。

需要注意的地方

请不要尝试将新浪微博短地址再次缩短,结果会返回错误。

演示地址

长转短:https://jucelin.com/lab/short.php?type=1&url=https://jucelin.com

短转长:https://jucelin.com/lab/short.php?type=2&url=http://t.cn/S4bLBm

服务器在国外,建议寄居国外的朋友使用。有API KEY的朋友建议您为自己建个接口,方便自己站内使用。如果有什么疑问欢迎留言。

jucelin写的源代码下载地址:https://jucelin.com/lab/short.txt

Mysql存储过程教程PDF版

自从Mysql5.0版本后,Mysql就增加了存储过程,在MSSQL上肯定大家用过存储过程,知道它的强大,虽然jucelin也没查到Mysql上存储过程能带来多大的效率,但我坚信肯定会提高效率,哪怕是以后的版本才能。至于你信不信,反正我信了。

Mysql存储过程官方教程文档:http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html

俺表示俺对全大写的E文很反感,本来英文水平就不行,看到大写的基本上都是心里默拼下才知道是什么单词,汗颜。OK,下面的PDF文档也是类似的情况,因此,看了好一会,好一会。

MySQL存储过程PDF文档【来自网络】下载地址:

源下载地址:http://net.ytu.edu.cn/share/%D7%CA%C1%CF/MySQL%B4%E6%B4%A2%B9%FD%B3%CC.pdf

DBank下载地址:http://dl.dbank.com/c0bzsslzff

115网盘下载地址:http://115.com/file/dnmr5pn7

另外今天有几个问题待解决,列出来,以后问下前辈们:

1.Mysql存储过程中代码是否区分大小写?平时写sql的时候是不区分的。

2.判断为空咋个写法。如查询出来的结果为空或者没有结果如何判断。

3.等等头疼的问题。

其他参考资料:

跟我学MySQL存储过程:http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html

mysql 5.0存储过程学习总结:http://www.ccvita.com/100.html

简单获取新浪微博短地址接口(API)

短地址(也称短链接、缩短地址等)方面,在twitter发展之后就接着发展了起来,而且很多互联网网站都使用了短地址,国内国外都很多,但稳定和可靠性,还是国内的比较靠谱些,不怕没墙,国外几家已经悲剧了,所以如果项目中用到短地址,个人还是建议使用新浪或者其他国内的短链接服务。

新浪微博短链接API是开放的,而腾讯微博的短地址API没有开放,本想着通过不一样的路径获取腾讯微博的API的,最后还是以失败收场。新浪微博短地址API是不需要用户登录的,所以直接可以调用,而且速度很快,下面的代码是从网站找来的,用的是CURL POST的方法,可供参考。

新浪微博短链接API文档在旧版开发文档中,新版中暂未加入:http://open.weibo.com/wiki/Short_url/shorten

function shortenSinaUrl($long_url){
$apiKey='1234567890';//这里是你申请的应用的API KEY,随便写个应用名就会自动分配给你
$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_short;
}

function expandSinaUrl($short_url){
$apiKey='1234567890';//要修改这里的key再测试哦
$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $apiUrl);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
$response = curl_exec($curlObj);
curl_close($curlObj);
$json = json_decode($response);
return $json[0]->url_long;
}

参照新浪微博的开发文档,其推荐的是使用get的方法获取。那代码就更简单了

function shorturl($long_url){
	$apiKey='1234567890';//要修改这里的key再测试哦
	$apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url;
	$response = file_get_contents($apiUrl);
	$json = json_decode($response);
	return $json[0]->url_short;
}

function expandurl($short_url){
	$apiKey='1234567890';//要修改这里的key再测试哦
	$apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url;

	$response = file_get_contents($apiUrl);
	$json = json_decode($response);
	return $json[0]->url_long;
}

OK,是不是更简单了?

大家在调试上面的代码是需要填写自己的API key哦,不然肯定获取不到的。

特别提示:短地址服务现在仅对已经认证的APP KEY提供服务,刚申请的APP KEY会被提示无权限。大家可以使用209678993和3818214747两个KEY做测试,这2个KEY来历不明,不建议用于生产。(感谢@congxz6688的提醒)

jucelin写了个调试的文档,大家可以测试下:

长转短:https://jucelin.com/lab/short.php?type=1&url=https://jucelin.com

短转长:https://jucelin.com/lab/short.php?type=2&url=http://t.cn/S4bLBm

就2个参数,type:1表示长转短,2表示短转长,后面的URL就是目标域名了,因为比较懒,就没有写错误判断,新浪微博短地址不支持短地址再转短地址的,逻辑上也应该这样控制。(不信你可以试试)。

关于新浪微博短地址接口的更详细说明可以参考《新浪微博短地址接口》。

PHP模拟QQ登录

在微博上看到网友使用PHP实现自动挂QQ,就自我思考了下模拟登录的方式。在PHP中CURL模拟提交则可以很简单的实现登录动作,这个方式在ASP则较难实现,使用JS倒是有点思路,但JS不能跨域限制就让我傻眼了。不过至少那位网友也是使用了PHP的curl实现的。好,让咱这个PHP的门外汉也试试吧。

PHP我确实是刚看,至于什么是curl,上php官网查,虽然不明白到底是什么意思,但照葫芦画瓢还是会的,共享万岁。因为是由程序来自动提交登录的,所有JS在程序里面就没什么用处了,而且要找个流量小的,太大程序下载的速度就会非常慢,最后定在使用3gqq登录方式。

跟着CURL的参数来,找个提交登录的3gqq的登陆URL,http://pt5.3g.qq.com/,因为网页格式是wap格式的,所以只有使用chrome或者opera才能访问,否则都会出现下载提示,IE8也不能访问,IE9不知道会不会改善。查看源码,会看到就几个输入框和几个隐藏的输入框,相信看到这里的你知道是神马个东西了。

<?php 
$qqno='你的QQ';
$qqpw='QQ密码';
$cookie = dirname(__FILE__).'/cookie.txt';
$post = array(
	'login_url' => 'http://pt.3g.qq.com/s?sid=ATAll43N7ZULRQ5V8zdfojol&aid=nLogin',
	'q_from' => '',
	'loginTitle' => 'login',
	'bid' => '0',
	'qq' => $qqno,
	'pwd' => $qqpw,
	'loginType' => '1',
	'loginsubmit' => 'login',
);
$curl = curl_init('http://pt.3g.qq.com/handleLogin?aid=nLoginHandle&sid=ATAll43N7ZULRQ5V8zdfojol');
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); // ?Cookie
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
$result = curl_exec($curl);
curl_close($curl);
?>

我在测试的时候主要是因为cookie没有设置,因为总是想着这不是在客户端提交,记录Cookie也没有什么用,就删除了Cookie参数,试了好多次之后加上Cookie就成功了。

另外,QQ登录的时候会对你的IP进行检测,如果登录的IP地址不是经常登录的IP地址,则需要输入验证码,此时上面的模拟登录就不能用了,jucelin也没想到什么好的方式解决。不过,可以手动尝试在http://pt5.3g.qq.com/上登录,多登录几次,验证码就不会再有了,当然这里的几次不是登录就退出再登录再退出那么简单,估计至少时间跨度要大点,登录2-3次基本上就OK了。

其实使用SID登录也是一种模拟QQ登录的方式,SID码来自于登录后的URL中,每次登录都会分配唯一的SID码,这也是3gqq全站登录的方式,因为要考虑有的手机不支持Cookie(这里突然想到腾讯要是使用session,会是什么样的状况),但又要实现全站登录的需求。

OK,通过SID码登录就不多说了,相信聪明的你肯定能想到。 😆

PHP模拟QQ登录

因为这个程序一个多星期之前就写了,就进行了一些拓展,感兴趣的可以看看我写的这个实例:QQ挂机宝(好吧,我承认这个名字取得由点鸟,但我确实没想到啥名,凑合着叫叫吧)。这个实例主要重点放在了功能实现上,所有什么安全措施,什么用户体验,什么程序运行效率都没去弄,,所以…你懂的,如果你发现功能上不对的地方记得给我留言。

如果你有更好的思路或者更深的想法,欢迎交流,例如用来发QQ消息,发微博什么的,虽然上面2项都测试成功了。