其实phpcms本身也有自己的一套短信接口,开发流程可以参考他的流程!
第一步:创建数据库v9_dysms,(自带是:v9_sms_report表)
创建数据库v9_dysms,用于存放生产的验证码和发送状态
第二步:下载阿里大于短信接口sdk,
下载地址:https://help.aliyun.com/document_detail/55359.html?spm=5176.doc55451.6.569.3psCY5
第三步:创建对应的model类,用于操作数据库
在phpcms下的model下创建文件:dysms_model.class.php,内容:
第四步:在phpcms/modules下创建文件夹dysms
- defined('IN_PHPCMS') or exit('No permission resources.');
- pc_base::load_sys_class('model', '', 0);
- class dysms_model extends model {
- public function __construct() {
- $this->db_config = pc_base::load_config('database');
- $this->db_setting = 'default';
- $this->table_name = 'dysms';
- parent::__construct();
- }
- }
- ?>
(1)首页创建一个控制器index.php,代码为:
(2)然后创建操作类文件夹classes,并创建文件smsapi.class.php,我们在这个文件里边布置生产验证码、发送短信、检测验证码等函数!
- defined('IN_PHPCMS') or exit('No permission resources.');
- pc_base::load_app_func('global');
- pc_base::load_sys_class('form','',0);
- pc_base::load_sys_class('format','',0);
- class index {
- function __construct() {
- $this->db = pc_base::load_model('dysms_model');
- //初始化smsapi
- pc_base::load_app_class('smsapi', '', 0);
- $this->smsapi = new smsapi();
- }
- public function send_message(){
- $phone = $_GET['phone'];
- $this->smsapi->send_phone($phone);
- }
- /**
- * 验证短信验证码是否有效,前端用jquery validate的remote
- * @return [type] [description]
- */
- public function checkSMSCode(){
- $phone = $_GET["phone"];
- $code = $_GET["verify"];
- $nowTimeStr = time();
- $where['phone'] = $phone;
- $where['code'] = $code;
- $smscodeObj = $this->db->get_one(array('phone'=>$phone,'code' => $code));
- $data = "noa";
- if(count($smscodeObj)){
- $smsCodeTimeStr = $smscodeObj['posttime'];
- $recordCode = $smscodeObj['code'];
- $flag = $this->smsapi->checkTime($nowTimeStr, $smsCodeTimeStr);
- if($flag!=true || $code !== $recordCode){
- if($flag){
- $data = "no";
- }else{
- $data = "nos";
- }
- }else{
- $data = "ok";
- }
- }
- echo($data);
- //return $data;
- }
- }
- ?>
可以参考阿里大于给的发送验证码demo:
写代码不容易,请加我微信15137100750,赏赐一包烟钱!谢谢了
- //此处需要替换成自己的AK信息
- $accessKeyId = "yourAccessKeyId";//参考本文档步骤2
- $accessKeySecret = "yourAccessKeySecret";//参考本文档步骤2
- //短信API产品名(短信产品名固定,无需修改)
- $product = "Dysmsapi";
- //短信API产品域名(接口地址固定,无需修改)
- $domain = "dysmsapi.aliyuncs.com";
- //暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
- $region = "cn-hangzhou";
- //初始化访问的acsCleint
- $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
- DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
- $acsClient= new DefaultAcsClient($profile);
- $request = new DysmsapiRequestV20170525SendSmsRequest;
- //必填-短信接收号码。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
- $request->setPhoneNumbers("15067126468");
- //必填-短信签名
- $request->setSignName("云通信");
- //必填-短信模板Code
- $request->setTemplateCode("SMS_0001");
- //选填-假如模板中存在变量需要替换则为必填(JSON格式),友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含rn的情况在JSON中需要表示成\r\n,否则会导致JSON在服务端解析失败
- $request->setTemplateParam("{"code":"12345","product":"云通信服务"}");
- //选填-发送短信流水号
- $request->setOutId("1234");
- //发起访问请求
- $acsResponse = $acsClient->getAcsResponse($request);
第五步:创建前端代码
前端代码都足够简单了,不在说明!
看效果: