分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

php发送飞信消息

发布时间:2023-09-06 01:22责任编辑:蔡小小关键词:暂无标签

实例结构:


1. demo.php

<?php// 获取天气数据$w = json_decode( file_get_contents(‘http://www.weather.com.cn/data/cityinfo/101280601.html‘) ) ;$wi = $w->weatherinfo;$str = "【{$wi->city}】".date(‘Y-m-d‘).‘ 天气: ‘;$str.= "{$wi->weather}, {$wi->temp1}-{$wi->temp2}";// 开始发送飞信require_once(‘PHPFetion.class.php‘);header ( "Content-Type:text/html; charset=utf-8" );$fetion = new PHPFetion(‘18898927320‘, ‘c*****00‘);$rs = $fetion->send(‘18898927320‘, $str);if(strpos($rs,‘200‘)){ ???echo ‘发送成功‘;}else{ ???echo ‘发送失败‘;}


2.  PHPFetion.class.php

<?php/** * PHP飞信发送类 * * @author quanhengzhuang <blog.quanhz.com> * @version 1.5.0 */class PHPFetion{ ???/** ????* 发送者手机号 ????* @var string ????*/ ???protected $_mobile; ???/** ????* 飞信密码 ????* @var string ????*/ ???protected $_password; ???/** ????* Cookie字符串 ????* @var string ????*/ ???protected $_cookie = ‘‘; ???/** ????* Uid缓存 ????* @var array ????*/ ???protected $_uids = array(); ???/** ????* csrfToken ????* @var string ????*/ ???protected $_csrfToten = null; ???/** ????* 构造函数 ????* @param string $mobile 手机号(登录者) ????* @param string $password 飞信密码 ????*/ ???public function __construct($mobile, $password) ???{ ???????if ($mobile === ‘‘ || $password === ‘‘) ???????{ ???????????return; ???????} ???????????????$this->_mobile = $mobile; ???????$this->_password = $password; ???????????????$this->_login(); ???} ???/** ????* 析构函数 ????*/ ???public function __destruct() ???{ ???????$this->_logout(); ???} ???/** ????* 登录 ????* @return string ????*/ ???protected function _login() ???{ ???????$uri = ‘/huc/user/space/login.do?m=submit&fr=space‘; ???????$data = ‘mobilenum=‘.$this->_mobile.‘&password=‘.urlencode($this->_password); ???????????????$result = $this->_postWithCookie($uri, $data); ???????//解析Cookie ???????preg_match_all(‘/.*?\r\nSet-Cookie: (.*?);.*?/si‘, $result, $matches); ???????if (isset($matches[1])) ???????{ ???????????$this->_cookie = implode(‘; ‘, $matches[1]); ???????} ???????????????$result = $this->_postWithCookie(‘/im/login/cklogin.action‘, ‘‘); ???????return $result; ???} ???/** ????* 向指定的手机号发送飞信 ????* @param string $mobile 手机号(接收者) ????* @param string $message 短信内容 ????* @return string ????*/ ???public function send($mobile, $message) ???{ ???????if ($message === ‘‘) ???????{ ???????????return ‘‘; ???????} ???????//判断是给自己发还是给好友发 ???????if ($mobile == $this->_mobile) ???????{ ???????????return $this->_toMyself($message); ???????} ???????else ???????{ ???????????$uid = $this->_getUid($mobile); ???????????return $uid === ‘‘ ? ‘‘ : $this->_toUid($uid, $message); ???????} ???} ???/** ????* 获取飞信ID ????* @param string $mobile 手机号 ????* @return string ????*/ ???protected function _getUid($mobile) ???{ ???????if (empty($this->_uids[$mobile])) ???????{ ???????????$uri = ‘/im/index/searchOtherInfoList.action‘; ???????????$data = ‘searchText=‘.$mobile; ???????????????????????$result = $this->_postWithCookie($uri, $data); ???????????????????????//匹配 ???????????preg_match(‘/toinputMsg\.action\?touserid=(\d+)/si‘, $result, $matches); ???????????$this->_uids[$mobile] = isset($matches[1]) ? $matches[1] : ‘‘; ???????} ???????????????return $this->_uids[$mobile]; ???} ???/** ????* 获取csrfToken,给好友发飞信时需要这个字段 ????* @param string $uid 飞信ID ????* @return string ????*/ ???protected function _getCsrfToken($uid) ???{ ???????if ($this->_csrfToten === null) ???????{ ???????????$uri = ‘/im/chat/toinputMsg.action?touserid=‘.$uid; ???????????????????????$result = $this->_postWithCookie($uri, ‘‘); ???????????????????????preg_match(‘/name="csrfToken".*?value="(.*?)"/‘, $result, $matches); ???????????$this->_csrfToten = isset($matches[1]) ? $matches[1] : ‘‘; ???????} ???????return $this->_csrfToten; ???} ???/** ????* 向好友发送飞信 ????* @param string $uid 飞信ID ????* @param string $message 短信内容 ????* @return string ????*/ ???protected function _toUid($uid, $message) ???{ ???????$uri = ‘/im/chat/sendMsg.action?touserid=‘.$uid; ???????$csrfToken = $this->_getCsrfToken($uid); ???????$data = ‘msg=‘.urlencode($message).‘&csrfToken=‘.$csrfToken; ???????????????$result = $this->_postWithCookie($uri, $data); ???????????????return $result; ???} ???/** ????* 给自己发飞信 ????* @param string $message ????* @return string ????*/ ???protected function _toMyself($message) ???{ ???????$uri = ‘/im/user/sendMsgToMyselfs.action‘; ???????$result = $this->_postWithCookie($uri, ‘msg=‘.urlencode($message)); ???????return $result; ???} ???/** ????* 退出飞信 ????* @return string ????*/ ???protected function _logout() ???{ ???????$uri = ‘/im/index/logoutsubmit.action‘; ???????$result = $this->_postWithCookie($uri, ‘‘); ???????????????return $result; ???} ???/** ????* 携带Cookie向f.10086.cn发送POST请求 ????* @param string $uri ????* @param string $data ????*/ ???protected function _postWithCookie($uri, $data) ???{ ???????$fp = fsockopen(‘f.10086.cn‘, 80); ???????fputs($fp, "POST $uri HTTP/1.1\r\n"); ???????fputs($fp, "Host: f.10086.cn\r\n"); ???????fputs($fp, "Cookie: {$this->_cookie}\r\n"); ???????fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n"); ???????fputs($fp, "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1\r\n"); ???????fputs($fp, "Content-Length: ".strlen($data)."\r\n"); ???????fputs($fp, "Connection: close\r\n\r\n"); ???????fputs($fp, $data); ???????$result = ‘‘; ???????while (!feof($fp)) ???????{ ???????????$result .= fgets($fp); ???????} ???????fclose($fp); ???????return $result; ???}}


;

php发送飞信消息

原文地址:http://www.cnblogs.com/upup2015/p/7782624.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved