AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
# 短信宝 短信验证码 [短信宝](http://www.cocsms.com/member/index.jhtml) ``` <pre class="calibre10">``` <span class="token1"><</span><span class="token1">?</span>php <span class="token">// +----------------------------------------------------------------------</span> <span class="token">// | smsbao for thinkPHP</span> <span class="token">// +----------------------------------------------------------------------</span> <span class="token">// | Copyright (c) 2005 http://smsbao.com All rights reserved.</span> <span class="token">// +----------------------------------------------------------------------</span> <span class="token">// | Licensed ( http://smsbao.com )</span> <span class="token">// +----------------------------------------------------------------------</span> <span class="token">// | Author: llq <llqqxf@163.com></span> <span class="token">// +----------------------------------------------------------------------</span> namespace Org\Sms<span class="token3">;</span> <span class="token">/** * SmsBao实现类 * @category Think * @package Think * @subpackage Sms * @author llqqxf <llqqxf@163.com> */</span> class <span class="token4">SmsBao</span> <span class="token3">{</span> private $account<span class="token3">;</span><span class="token">//短信包账户</span> private $password<span class="token3">;</span><span class="token">//密码</span> private $balance<span class="token3">;</span><span class="token">//短信剩余条数</span> const sendSmsUrl <span class="token1">=</span> <span class="token2">"http://api.smsbao.com/sms"</span><span class="token3">;</span> const queryBalanceUrl <span class="token1">=</span> <span class="token2">"http://api.smsbao.com/query"</span><span class="token3">;</span> <span class="token">/** * 架构函数 * @access public * @param string $account 在短信宝注册的账户名 * @param string $password 在短信宝注册的账户名的密码 */</span> public <span class="token5">function</span> <span class="token4">__construct</span><span class="token3">(</span>$account<span class="token3">,</span>$password<span class="token3">)</span> <span class="token3">{</span> <span class="token5">if</span> <span class="token3">(</span><span class="token4">empty</span><span class="token3">(</span>$account<span class="token3">)</span> <span class="token1">||</span> <span class="token4">empty</span><span class="token3">(</span>$password<span class="token3">)</span><span class="token3">)</span> <span class="token3">{</span> <span class="token4">E</span><span class="token3">(</span><span class="token2">"用户名和密码不可为空!"</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> $this<span class="token1">-</span><span class="token1">></span>account <span class="token1">=</span> $account<span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span>password <span class="token1">=</span> $password<span class="token3">;</span> <span class="token3">}</span> <span class="token">/** * 发送短信函数 * @access public * @param string $mobile 手机号,多个手机号用英文逗号分隔 * @param string $content 发送内容 * @return array 返回值为数组,其中status为0表明发送成功,其他情况下发送失败,失败原因为msg */</span> public <span class="token5">function</span> <span class="token4">sendSms</span><span class="token3">(</span>$mobile<span class="token3">,</span>$content<span class="token3">)</span><span class="token3">{</span> $param<span class="token3">[</span><span class="token2">'u'</span><span class="token3">]</span> <span class="token1">=</span> $this<span class="token1">-</span><span class="token1">></span>account<span class="token3">;</span> $param<span class="token3">[</span><span class="token2">'p'</span><span class="token3">]</span> <span class="token1">=</span> <span class="token4">md5</span><span class="token3">(</span>$this<span class="token1">-</span><span class="token1">></span>password<span class="token3">)</span><span class="token3">;</span> $param<span class="token3">[</span><span class="token2">'m'</span><span class="token3">]</span> <span class="token1">=</span> $mobile<span class="token3">;</span> $param<span class="token3">[</span><span class="token2">'c'</span><span class="token3">]</span> <span class="token1">=</span> $content<span class="token3">;</span> $ret <span class="token1">=</span> self<span class="token3">:</span><span class="token3">:</span><span class="token4">http</span><span class="token3">(</span>self<span class="token3">:</span><span class="token3">:</span>sendSmsUrl<span class="token3">,</span> $param<span class="token3">)</span><span class="token3">;</span> $data<span class="token3">[</span><span class="token2">'status'</span><span class="token3">]</span> <span class="token1">=</span> $ret<span class="token3">;</span> $data<span class="token3">[</span><span class="token2">'msg'</span><span class="token3">]</span> <span class="token1">=</span> $ret <span class="token1">==</span> <span class="token6">0</span> <span class="token1">?</span><span class="token2">'发送成功'</span> <span class="token3">:</span> self<span class="token3">:</span><span class="token3">:</span><span class="token4">getResult</span><span class="token3">(</span>$ret<span class="token3">)</span><span class="token3">;</span> <span class="token5">return</span> $data<span class="token3">;</span> <span class="token3">}</span> <span class="token">/** * 获取短信剩余条数函数 * @access public */</span> public <span class="token5">function</span> <span class="token4">getBalance</span><span class="token3">(</span><span class="token3">)</span><span class="token3">{</span> $param<span class="token3">[</span><span class="token2">'u'</span><span class="token3">]</span> <span class="token1">=</span> $this<span class="token1">-</span><span class="token1">></span>account<span class="token3">;</span> $param<span class="token3">[</span><span class="token2">'p'</span><span class="token3">]</span> <span class="token1">=</span> <span class="token4">md5</span><span class="token3">(</span>$this<span class="token1">-</span><span class="token1">></span>password<span class="token3">)</span><span class="token3">;</span> $ret <span class="token1">=</span> self<span class="token3">:</span><span class="token3">:</span><span class="token4">http</span><span class="token3">(</span>self<span class="token3">:</span><span class="token3">:</span>queryBalanceUrl<span class="token3">,</span> $param<span class="token3">)</span><span class="token3">;</span> $retArr <span class="token1">=</span> <span class="token4">split</span><span class="token3">(</span><span class="token2">"\n"</span><span class="token3">,</span> $ret<span class="token3">)</span><span class="token3">;</span> $balanceArr <span class="token1">=</span> <span class="token4">split</span><span class="token3">(</span><span class="token2">","</span><span class="token3">,</span> $retArr<span class="token3">[</span><span class="token6">1</span><span class="token3">]</span><span class="token3">)</span><span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span>balance <span class="token1">=</span> $retArr<span class="token3">[</span><span class="token6">0</span><span class="token3">]</span> <span class="token1">==</span> <span class="token6">0</span> <span class="token1">?</span> $balanceArr<span class="token3">[</span><span class="token6">1</span><span class="token3">]</span> <span class="token3">:</span> self<span class="token3">:</span><span class="token3">:</span><span class="token4">getResult</span><span class="token3">(</span>$ret<span class="token3">)</span><span class="token3">;</span> <span class="token5">return</span> $this<span class="token1">-</span><span class="token1">></span>balance<span class="token3">;</span> <span class="token3">}</span> <span class="token">/** * 发送http请求 * @access protected * @param string $url 请求地址 * @param string $param get方式请求内容,数组形式,post方式时无效 * * @param string $data post请求方式时的内容,get方式时无效 * @param string $method 请求方式,默认get */</span> protected static <span class="token5">function</span> <span class="token4">http</span><span class="token3">(</span>$url<span class="token3">,</span> $param<span class="token3">,</span> $data <span class="token1">=</span> <span class="token2">''</span><span class="token3">,</span> $method <span class="token1">=</span> <span class="token2">'GET'</span><span class="token3">)</span><span class="token3">{</span> $opts <span class="token1">=</span> <span class="token4">array</span><span class="token3">(</span> CURLOPT_TIMEOUT <span class="token1">=</span><span class="token1">></span> <span class="token6">30</span><span class="token3">,</span> CURLOPT_RETURNTRANSFER <span class="token1">=</span><span class="token1">></span> <span class="token6">1</span><span class="token3">,</span> CURLOPT_SSL_VERIFYPEER <span class="token1">=</span><span class="token1">></span> <span class="token6">false</span><span class="token3">,</span> CURLOPT_SSL_VERIFYHOST <span class="token1">=</span><span class="token1">></span> <span class="token6">false</span><span class="token3">,</span> <span class="token3">)</span><span class="token3">;</span> <span class="token">/* 根据请求类型设置特定参数 */</span> $opts<span class="token3">[</span>CURLOPT_URL<span class="token3">]</span> <span class="token1">=</span> $url <span class="token3">.</span> <span class="token2">'?'</span> <span class="token3">.</span> <span class="token4">http_build_query</span><span class="token3">(</span>$param<span class="token3">)</span><span class="token3">;</span> <span class="token5">if</span><span class="token3">(</span><span class="token4">strtoupper</span><span class="token3">(</span>$method<span class="token3">)</span> <span class="token1">==</span> <span class="token2">'POST'</span><span class="token3">)</span><span class="token3">{</span> $opts<span class="token3">[</span>CURLOPT_POST<span class="token3">]</span> <span class="token1">=</span> <span class="token6">1</span><span class="token3">;</span> $opts<span class="token3">[</span>CURLOPT_POSTFIELDS<span class="token3">]</span> <span class="token1">=</span> $data<span class="token3">;</span> <span class="token5">if</span><span class="token3">(</span><span class="token4">is_string</span><span class="token3">(</span>$data<span class="token3">)</span><span class="token3">)</span><span class="token3">{</span> <span class="token">//发送JSON数据</span> $opts<span class="token3">[</span>CURLOPT_HTTPHEADER<span class="token3">]</span> <span class="token1">=</span> <span class="token4">array</span><span class="token3">(</span> <span class="token2">'Content-Type: application/json; charset=utf-8'</span><span class="token3">,</span> <span class="token2">'Content-Length: '</span> <span class="token3">.</span> <span class="token4">strlen</span><span class="token3">(</span>$data<span class="token3">)</span><span class="token3">,</span> <span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token">/* 初始化并执行curl请求 */</span> $ch <span class="token1">=</span> <span class="token4">curl_init</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">curl_setopt_array</span><span class="token3">(</span>$ch<span class="token3">,</span> $opts<span class="token3">)</span><span class="token3">;</span> $data <span class="token1">=</span> <span class="token4">curl_exec</span><span class="token3">(</span>$ch<span class="token3">)</span><span class="token3">;</span> $error <span class="token1">=</span> <span class="token4">curl_error</span><span class="token3">(</span>$ch<span class="token3">)</span><span class="token3">;</span> <span class="token4">curl_close</span><span class="token3">(</span>$ch<span class="token3">)</span><span class="token3">;</span> <span class="token">//发生错误,抛出异常</span> <span class="token5">if</span><span class="token3">(</span>$error<span class="token3">)</span> <span class="token5">throw</span> <span class="token5">new</span> <span class="token4"><span class="token3">\</span>Exception</span><span class="token3">(</span><span class="token2">'请求发生错误:'</span> <span class="token3">.</span> $error<span class="token3">)</span><span class="token3">;</span> <span class="token5">return</span> $data<span class="token3">;</span> <span class="token3">}</span> private <span class="token5">function</span> <span class="token4">getResult</span><span class="token3">(</span>$key<span class="token3">)</span><span class="token3">{</span> $rst<span class="token3">[</span><span class="token2">'30'</span><span class="token3">]</span> <span class="token1">=</span> <span class="token2">'密码错误'</span><span class="token3">;</span> $rst<span class="token3">[</span><span class="token2">'40'</span><span class="token3">]</span> <span class="token1">=</span> <span class="token2">'账号不存在'</span><span class="token3">;</span> $rst<span class="token3">[</span><span class="token2">'41'</span><span class="token3">]</span> <span class="token1">=</span> <span class="token2">'余额不足'</span><span class="token3">;</span> $rst<span class="token3">[</span><span class="token2">'42'</span><span class="token3">]</span> <span class="token1">=</span> <span class="token2">'帐号过期'</span><span class="token3">;</span> $rst<span class="token3">[</span><span class="token2">'43'</span><span class="token3">]</span> <span class="token1">=</span> <span class="token2">'IP地址限制'</span><span class="token3">;</span> $rst<span class="token3">[</span><span class="token2">'50'</span><span class="token3">]</span> <span class="token1">=</span> <span class="token2">'内容含有敏感词'</span><span class="token3">;</span> $rst<span class="token3">[</span><span class="token2">'51'</span><span class="token3">]</span> <span class="token1">=</span> <span class="token2">'手机号码不正确'</span><span class="token3">;</span> <span class="token5">return</span> $rst<span class="token3">[</span>$key<span class="token3">]</span><span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> ``` ``` 以thinkphp为例将封装好后的SmsBao.class.php类文件放置在 ThinkPHP\\Library\\Org\\Sms文件夹类 然后在控制器实现: ``` <pre class="calibre10">``` public <span class="token5">function</span> <span class="token4">demo3</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> <span class="token">// ***********************必须先将extension=php_curl扩展打开</span> <span class="token">// 接收电话号并且执行发送短信的功能</span> <span class="token">// 1.接收电话号码</span> $phone <span class="token1">=</span> <span class="token4">I</span><span class="token3">(</span><span class="token2">'post.key'</span><span class="token3">)</span><span class="token3">;</span> <span class="token">// mt_rand()</span> $rand <span class="token1">=</span> <span class="token4">mt_rand</span><span class="token3">(</span><span class="token6">100000</span><span class="token3">,</span><span class="token6">999999</span><span class="token3">)</span><span class="token3">;</span> $content <span class="token1">=</span> <span class="token2">"谢谢你注册我的网站,您的验证码是$rand,验证码在15分钟内有效,本次短信免费,回复无效"</span><span class="token3">;</span> <span class="token">// 2.必须保存生成的验证码</span> $code <span class="token1">=</span> <span class="token3">[</span><span class="token2">'code'</span><span class="token1">=</span><span class="token1">></span>$rand<span class="token3">,</span><span class="token2">'time'</span><span class="token1">=</span><span class="token1">></span><span class="token4">time</span><span class="token3">(</span><span class="token3">)</span><span class="token3">]</span><span class="token3">;</span> <span class="token4">session</span><span class="token3">(</span><span class="token2">'code'</span><span class="token3">,</span>$code<span class="token3">)</span><span class="token3">;</span> <span class="token">// 3.执行发送</span> $sms <span class="token1">=</span> <span class="token5">new</span> <span class="token4"><span class="token3">\</span>Org<span class="token3">\</span>Sms<span class="token3">\</span>SmsBao</span><span class="token3">(</span><span class="token2">'qq285561932'</span><span class="token3">,</span><span class="token2">'brother'</span><span class="token3">)</span><span class="token3">;</span> $data <span class="token1">=</span> $sms<span class="token1">-</span><span class="token1">></span><span class="token4">sendSms</span><span class="token3">(</span>$phone<span class="token3">,</span> $content<span class="token3">)</span><span class="token3">;</span> <span class="token">// 4.返回数据</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">ajaxReturn</span><span class="token3">(</span>$data<span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> public <span class="token5">function</span> <span class="token4">demo4</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> <span class="token">// dump(session());</span> <span class="token">// 将获取到的验证码和session中的验证码进行比对</span> <span class="token">// $_POST['code'] = session('code.code')</span> <span class="token">// 1.判断验证码不能过期</span> <span class="token5">if</span> <span class="token3">(</span><span class="token4">time</span><span class="token3">(</span><span class="token3">)</span> <span class="token1">-</span> <span class="token4">session</span><span class="token3">(</span><span class="token2">'code.time'</span><span class="token3">)</span> <span class="token1">></span> <span class="token6">900</span><span class="token3">)</span> <span class="token3">{</span> <span class="token">// $this->error()</span> echo <span class="token2">'验证码过期'</span><span class="token3">;</span> <span class="token3">}</span> <span class="token5">else</span> <span class="token3">{</span> <span class="token5">if</span> <span class="token3">(</span><span class="token4">I</span><span class="token3">(</span><span class="token2">'post.code'</span><span class="token3">)</span> <span class="token1">==</span> <span class="token4">session</span><span class="token3">(</span><span class="token2">'code.code'</span><span class="token3">)</span><span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">'验证通过'</span><span class="token3">;</span> <span class="token3">}</span> <span class="token5">else</span> <span class="token3">{</span> echo <span class="token2">'验证码输入错误'</span><span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> } ``` ``` ``` <pre class="calibre17">``` $phone<span class="token1">=</span><span class="token2">'15632663878'</span><span class="token3">;</span> $code<span class="token1">=</span><span class="token6">12345</span><span class="token3">;</span> $time<span class="token1">=</span><span class="token4">time</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> $content <span class="token1">=</span> <span class="token2">"你正在注册新用户,您的验证码为{$code},在{$time}分钟内有效。工作人员不会向你索要,非本人操作请忽略"</span><span class="token3">;</span> $sms <span class="token1">=</span> <span class="token5">new</span> <span class="token4"><span class="token3">\</span>Org<span class="token3">\</span>Sms<span class="token3">\</span>SmsBao</span><span class="token3">(</span><span class="token2">'短信宝网站登录帐号'</span><span class="token3">,</span><span class="token2">'短信宝网站登录密码'</span><span class="token3">)</span><span class="token3">;</span> $data <span class="token1">=</span> $sms<span class="token1">-</span><span class="token1">></span><span class="token4">sendSms</span><span class="token3">(</span>$phone<span class="token3">,</span> $content<span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span>$data<span class="token3">)</span><span class="token3">;</span> ``` ```