php免费利用飞信发送验证码,php通过飞信发送短信
php发送短信有两个方法一个就是通过审请的接口接入网站,之后就可以使用啦。
但是上面的这一种是收费的。
下面给大家介绍一种免费的,使用飞信发送的方法,这个发送短信的类是一位高手写出来的。
/**
* PHP飞信发送类
*
* @author quanhengzhuang
* @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;
}
把上面的内容保存成一个文件比如 ? phpFetion.php
下面是使用方法
require 'PHPFetion.php';
$fetion = new PHPFetion('13633719215', '飞信密码');// 手机号、飞信密码
$fetion->send('13633719215', 'Hello!');// 接收人手机号、飞信内容
本人已经测试可以发送成功
php免费利用飞信发送验证码,php通过飞信发送短信相关推荐
- thinkphp+小程序手机短信验证码(防止恶意调用短信接口)
thinkphp+小程序手机短信验证码 前言 一.短信轰炸是什么? 二.小程序准备 1.wxml 2.wxss 3.js(使用小程序定时器限制) 三.后台接口(ThinkPHP) 前言 一.短信轰炸是 ...
- php 短信验证码30分钟,php下发短信验证码60秒简单验证
下发短信验证码,除了注册就是验证手机号 简单实现原理就是 用手机号和一个键作为key存到缓存里, 用户请求的时候,验证这个手机号是不是已经申请过key*(即已手机号为缓存的key有没有,)如果有,并且 ...
- android短信拦截与发送,有效拦截苹果iMessage垃圾短信的几个方法
近来,有不少手机用户反映,自己使用的iPhone手机经常出现各类促销广告的垃圾短信,涉及到的内容跟其它的垃圾短信几乎没什么区别.不过,值得注意的 是,这些垃圾短信并不是通过陌生手机号码或者特定的短信客 ...
- 上行短信验证码服务可以作为106短信验证码的补充
集成开发过106短信验证码的都知道,短信经常会出现一些异常. 比如 1.延迟 由于网络等原因,很久才能收到 2.丢包 3.客户手机或者信号异常 因为短信还受政策等影响,哪怕你是短信验证码服务,也 ...
- atitit 破解 拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结
atitit.破解 拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结 1. 自动获取手机短信方式的原理 1 2. 调用api 1 3. ----核心代码 2 4. ...
- PHP版本移动物联网卡短信发送接收,发送短信源码对接,支持中文发送,onelink短信发送源码,物联网卡短信发送
移动物联网卡短信发送和接收源码,php+vue+tp6版本,支持中文: 开发流程 1)提供移动相关的账号 2)提供服务器,ip需要做好在移动的备份 3)linux 服务器 4)配置workman所需要 ...
- springboot实现短信发送验证码及消息队列发送注册成功短信
需要源码小伙伴可以到微信小程序:"MINIIT资源库"获取,作者承诺免费 PS:在编写功能之前,需要得到阿里云短信服务API: 使用消息队列(mq)可以将主业务和副业务分离,主业务 ...
- php如何写短信验证码,怎么用php实现短信验证码发送
我在在众多的第三方短信服务商里选择了云片网这个短信服务商,我也会尽可能利用最简单的方式去帮助广大开发者解决短信验证码功能模块的实现. 再次之前我也参考了大部分网上的博客等,大多数都是把云片网的demo ...
- 利用聚合数据API进行Android开发之短信验证码
在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据 聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务.免费提供从天气查询.空气质量.地图坐标到金融 ...
最新文章
- 使用windows.name解决js跨域数据通信
- 马哥2013年运维视频笔记 day02 Linux系统常识
- js、jquery实用小技巧集合
- Activiti工作流之个人任务分配模式
- Omnispace 收藏夹
- android 图片气泡,android图片上显示气泡消息
- 花店橱窗布置(洛谷P1854)(动态规划)
- 三十岁前不要去在乎的18件事
- 飞鸽传书2007用户需求就是做好需求处理
- MySQL生产常用SQL语句汇总
- 回溯法——设计一个算法在1、2、3... 9(顺序不能变)数字之间插入+ 或 - 或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性和全排列
- 设置Easyui datagrid的pageNumber导致两次请求的解决方案
- html php交互json 结果集,基于HTML模板和JSON数据的JavaScript交互(移动端)
- vscode 启用open with live server功能,配置谷歌浏览器chrome
- [na]思科产品选型pdf
- 前额单通道脑电睡眠分期算法设计
- PDF文件批量添加目录详细教程
- mac 安装Xshell4
- BFS算法和DFS算法(含图解:简单易懂)
- 产品经理的职责有哪些?到底该做什么?
热门文章
- android的SDK、ADT下载地址
- 逻辑学探幽 Part1
- SolidWorks装配体及约束快速导入Adams
- 基于matlab指纹识别论文,毕业论文-基于Matlab的指纹识别
- win10修复引导工具怎么用【系统天地】
- android ppsspp 存档位置,ppsspp怎么用,ppsspp怎么用psp存档
- 云队友丨传道士与雇佣兵:“电商之王”杰夫·贝佐斯传奇
- 可以分屏的软件_mac必备软件
- Cannot enable Hyper-V service
- 采用STM32外部中断模式控制LED灯亮灭