0

0

p你看到QQ空间那个朋友好久没有联系了么

php中文网

php中文网

发布时间:2016-07-25 08:51:10

|

1434人浏览过

|

来源于php中文网

原创

下午看到空间开始流行一个,朋友好久联系了吧!联系我吧!谁在自己的空间看到,图片上就显示的谁的QQ和昵称!这个是怎么做的呢?我这里就写了一个小demo。获取QQ昵称是需要访问一个网页的,我这里有原来的类!就直接用了,获取方式有很多!不过说直接上代码!
  1. $ment = $_SERVER["HTTP_REFERER"];
  2. preg_match("#[0-9]{5,11}#",$ment,$rr);
  3. $r=$rr[0];
  4. include_once("Curl.class.php");
  5. $curl=new Curl();
  6. $webtext=$curl->get('http://redstones.sinaapp.com/apis/qqinfo-service.php?qq='.$r);
  7. preg_match('#"nickname":"(.*?)"#',$webtext,$rr);
  8. $rrr=$rr[1];
  9. header("Content-type:image/png");
  10. $im=imagecreatefromjpeg("1.jpg");
  11. $black = ImageColorAllocate($im, 56,73,136);
  12. $fnt="shenfenzheng.TTF";
  13. imagettftext($im,26,0,110,100,$black,"shenfenzheng.TTF",$rrr);
  14. imagettftext($im,26,0,100,180,$black,"shenfenzheng.TTF",$r);
  15. imagejpeg($im);
  16. imagedestroy($im);
  17. ?>
复制代码
  1. class Curl{
  2. //CURL句柄
  3. private $ch = null;
  4. //CURL执行前后所设置或服务器端返回的信息
  5. private $info = array();
  6. //CURL SETOPT 信息
  7. private $setopt = array(
  8. //访问的端口,http默认是 80
  9. 'port'=>80,
  10. //客户端 USERAGENT,如:"Mozilla/4.0",为空则使用用户的浏览器
  11. 'userAgent'=>'',
  12. //连接超时时间
  13. 'timeOut'=>30,
  14. //是否使用 COOKIE 建议打开,因为一般网站都会用到
  15. 'useCookie'=>true,
  16. //是否支持SSL
  17. 'ssl'=>false,
  18. //客户端是否支持 gzip压缩
  19. 'gzip'=>true,
  20. //是否使用代理
  21. 'proxy'=>false,
  22. //代理类型,可选择 HTTP 或 SOCKS5
  23. 'proxyType'=>'HTTP',
  24. //代理的主机地址,如果是 HTTP 方式则要写成URL形式如:"http://www.proxy.com"
  25. //SOCKS5 方式则直接写主机域名为IP的形式,如:"192.168.1.1"
  26. 'proxyHost'=>'http://www.proxy.com',
  27. //代理主机的端口
  28. 'proxyPort'=>1234,
  29. //代理是否要身份认证(HTTP方式时)
  30. 'proxyAuth'=>false,
  31. //认证的方式.可选择 BASIC 或 NTLM 方式
  32. 'proxyAuthType'=>'BASIC',
  33. //认证的用户名和密码
  34. 'proxyAuthUser'=>'user',
  35. 'proxyAuthPwd'=>'password',
  36. );
  37. /**
  38. * 构造函数
  39. *
  40. * @param array $setopt :请参考 private $setopt 来设置
  41. */
  42. public function __construct($setopt=array())
  43. {
  44. //合并用户的设置和系统的默认设置
  45. $this->setopt = array_merge($this->setopt,$setopt);
  46. //如果没有安装CURL则终止程序
  47. function_exists('curl_init') || die('CURL Library Not Loaded');
  48. //初始化
  49. $this->ch = curl_init();
  50. //设置CURL连接的端口
  51. curl_setopt($this->ch, CURLOPT_PORT, $this->setopt['port']);
  52. //使用代理
  53. if($this->setopt['proxy']){
  54. $proxyType = $this->setopt['proxyType']=='HTTP' ? CURLPROXY_HTTP : CURLPROXY_SOCKS5;
  55. curl_setopt($this->ch, CURLOPT_PROXYTYPE, $proxyType);
  56. curl_setopt($this->ch, CURLOPT_PROXY, $this->setopt['proxyHost']);
  57. curl_setopt($this->ch, CURLOPT_PROXYPORT, $this->setopt['proxyPort']);
  58. //代理要认证
  59. if($this->setopt['proxyAuth']){
  60. $proxyAuthType = $this->setopt['proxyAuthType']=='BASIC' ? CURLAUTH_BASIC : CURLAUTH_NTLM;
  61. curl_setopt($this->ch, CURLOPT_PROXYAUTH, $proxyAuthType);
  62. $user = "[{$this->setopt['proxyAuthUser']}]:[{$this->setopt['proxyAuthPwd']}]";
  63. curl_setopt($this->ch, CURLOPT_PROXYUSERPWD, $user);
  64. }
  65. }
  66. if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off'))
  67. //启用时会将服务器服务器返回的“Location:”放在header中递归的返回给服务器
  68. curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true);
  69. //打开的支持SSL
  70. if($this->setopt['ssl']){
  71. //不对认证证书来源的检查
  72. curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);
  73. //从证书中检查SSL加密算法是否存在
  74. curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, true);
  75. }
  76. //设置http头,支持lighttpd服务器的访问
  77. $header[]= 'Expect:';
  78. curl_setopt($this->ch, CURLOPT_HTTPHEADER, $header);
  79. //设置 HTTP USERAGENT
  80. $userAgent = $this->setopt['userAgent'] ? $this->setopt['userAgent'] : $_SERVER['HTTP_USER_AGENT'];
  81. curl_setopt($this->ch, CURLOPT_USERAGENT, $userAgent);
  82. //设置连接等待时间,0不等待
  83. curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT, $this->setopt['timeOut']);
  84. //设置curl允许执行的最长秒数
  85. curl_setopt($this->ch, CURLOPT_TIMEOUT, $this->setopt['timeOut']);
  86. //设置客户端是否支持 gzip压缩
  87. if($this->setopt['gzip']){
  88. curl_setopt($this->ch, CURLOPT_ENCODING, 'gzip');
  89. }
  90. //是否使用到COOKIE
  91. if($this->setopt['useCookie']){
  92. //生成存放临时COOKIE的文件(要绝对路径)
  93. $cookfile = tempnam(sys_get_temp_dir(),'cuk');
  94. //连接关闭以后,存放cookie信息
  95. curl_setopt($this->ch, CURLOPT_COOKIEJAR, $cookfile);
  96. curl_setopt($this->ch, CURLOPT_COOKIEFILE, $cookfile);
  97. }
  98. //是否将头文件的信息作为数据流输出(HEADER信息),这里保留报文
  99. curl_setopt($this->ch, CURLOPT_HEADER, true);
  100. //获取的信息以文件流的形式返回,而不是直接输出。
  101. curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true) ;
  102. curl_setopt($this->ch, CURLOPT_BINARYTRANSFER, true) ;
  103. }
  104. /**
  105. * 以 GET 方式执行请求
  106. *
  107. * @param string $url :请求的URL
  108. * @param array $params :请求的参数,格式如: array('id'=>10,'name'=>'yuanwei')
  109. * @param array $referer :引用页面,为空时自动设置,如果服务器有对这个控制的话则一定要设置的.
  110. * @return 错误返回:false 正确返回:结果内容
  111. */
  112. public function get($url,$params=array(), $referer='')
  113. {
  114. return $this->_request('GET', $url, $params, array(), $referer);
  115. }
  116. /**
  117. * 以 POST 方式执行请求
  118. *
  119. * @param string $url :请求的URL
  120. * @param array $params :请求的参数,格式如: array('id'=>10,'name'=>'yuanwei')
  121. * @param array $uploadFile :上传的文件,支持相对路径,格式如下
  122. * 单个文件上传:array('img1'=>'./file/a.jpg')
  123. * 同字段多个文件上传:array('img'=>array('./file/a.jpg','./file/b.jpg'))
  124. * @param array $referer :引用页面,引用页面,为空时自动设置,如果服务器有对这个控制的话则一定要设置的.
  125. * @return 错误返回:false 正确返回:结果内容
  126. */
  127. public function post($url,$params=array(),$uploadFile=array(), $referer='')
  128. {
  129. return $this->_request('POST', $url, $params, $uploadFile, $referer);
  130. }
  131. /**
  132. * 得到错误信息
  133. *
  134. * @return string
  135. */
  136. public function error()
  137. {
  138. return curl_error($this->ch);
  139. }
  140. /**
  141. * 得到错误代码
  142. *
  143. * @return int
  144. */
  145. public function errno()
  146. {
  147. return curl_errno($this->ch);
  148. }
  149. /**
  150. * 得到发送请求前和请求后所有的服务器信息和服务器Header信息,其中
  151. * [before] :请求前所设置的信息
  152. * [after] :请求后所有的服务器信息
  153. * [header] :服务器Header报文信息
  154. *
  155. * @return array
  156. */
  157. public function getInfo()
  158. {
  159. return $this->info;
  160. }
  161. /**
  162. * 析构函数
  163. *
  164. */
  165. public function __destruct()
  166. {
  167. //关闭CURL
  168. curl_close($this->ch);
  169. }
  170. /**
  171. * 私有方法:执行最终请求
  172. *
  173. * @param string $method :HTTP请求方式
  174. * @param string $url :请求的URL
  175. * @param array $params :请求的参数
  176. * @param array $uploadFile :上传的文件(只有POST时才生效)
  177. * @param array $referer :引用页面
  178. * @return 错误返回:false 正确返回:结果内容
  179. */
  180. private function _request($method, $url, $params=array(), $uploadFile=array(), $referer='')
  181. {
  182. //如果是以GET方式请求则要连接到URL后面
  183. if($method == 'GET'){
  184. $url = $this->_parseUrl($url,$params);
  185. }
  186. //设置请求的URL
  187. curl_setopt($this->ch, CURLOPT_URL, $url);
  188. //如果是POST
  189. if($method == 'POST'){
  190. //发送一个常规的POST请求,类型为:application/x-www-form-urlencoded
  191. curl_setopt($this->ch, CURLOPT_POST, true) ;
  192. //设置POST字段值
  193. $postData = $this->_parsmEncode($params,false);
  194. /*
  195. //如果有上传文件
  196. if($uploadFile){
  197. foreach($uploadFile as $key=>$file){
  198. if(is_array($file)){
  199. $n = 0;
  200. foreach($file as $f){
  201. //文件必需是绝对路径
  202. $postData[$key.'['.$n++.']'] = '@'.realpath($f);
  203. }
  204. }else{
  205. $postData[$key] = '@'.realpath($file);
  206. }
  207. }
  208. }
  209. */
  210. //pr($postData); die;
  211. curl_setopt($this->ch, CURLOPT_POSTFIELDS, $postData);
  212. }
  213. //设置了引用页,否则自动设置
  214. if($referer){
  215. curl_setopt($this->ch, CURLOPT_REFERER, $referer);
  216. }else{
  217. curl_setopt($this->ch, CURLOPT_AUTOREFERER, true);
  218. }
  219. //得到所有设置的信息
  220. $this->info['before'] = curl_getinfo($this->ch);
  221. //开始执行请求
  222. $result = curl_exec($this->ch);
  223. //得到报文头
  224. $headerSize = curl_getinfo($this->ch, CURLINFO_HEADER_SIZE);
  225. $this->info['header'] = substr($result, 0, $headerSize);
  226. //去掉报文头
  227. $result = substr($result, $headerSize);
  228. //得到所有包括服务器返回的信息
  229. $this->info['after'] = curl_getinfo($this->ch);
  230. //如果请求成功
  231. if($this->errno() == 0){ //&& $this->info['after']['http_code'] == 200
  232. return $result;
  233. }else{
  234. return false;
  235. }
  236. }
  237. /**
  238. * 返回解析后的URL,GET方式时会用到
  239. *
  240. * @param string $url :URL
  241. * @param array $params :加在URL后的参数
  242. * @return string
  243. */
  244. private function _parseUrl($url,$params)
  245. {
  246. $fieldStr = $this->_parsmEncode($params);
  247. if($fieldStr){
  248. $url .= strstr($url,'?')===false ? '?' : '&';
  249. $url .= $fieldStr;
  250. }
  251. return $url;
  252. }
  253. /**
  254. * 对参数进行ENCODE编码
  255. *
  256. * @param array $params :参数
  257. * @param bool $isRetStr : true:以字符串返回 false:以数组返回
  258. * @return string || array
  259. */
  260. private function _parsmEncode($params,$isRetStr=true)
  261. {
  262. $fieldStr = '';
  263. $spr = '';
  264. $result = array();
  265. foreach($params as $key=>$value){
  266. $value = urlencode($value);
  267. $fieldStr .= $spr.$key .'='. $value;
  268. $spr = '&';
  269. $result[$key] = $value;
  270. }
  271. return $isRetStr ? $fieldStr : $result;
  272. }
  273. }
复制代码
p你看到QQ空间那个朋友好久没有联系了么


QQ
QQ

QQ是腾讯在中国开发的一款社交应用,用户可用QQ在手机和电脑上聊天。QQ截止目前拥有超过8.2亿用户,是中国最多人使用的社交应用程序之一,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

178

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

35

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

79

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

2

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

4

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

8

2026.01.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

24

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

122

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

72

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号