目录

一、阿里云SDK依赖(需要安装好composer)

二、使用步骤

1.登录/注册接口对接的阿里云发送短信的控制器

2.登录发送短信/登录短信验证

3:注册发送短信/注册短信验证


登录和注册时都需要查询用户是否已存在:

登录是为了查看用户是否是新用户(新用户去注册)

注册是为了查看用户是否已经被注册(被注册去登录)

验证成功后:

登录验证就签发token——登陆成功(前端跳转首页)

注册验证就将注册信息添加到用户表里——注册成功(前端跳转登录)

一、阿里云SDK依赖(需要安装好composer)

1:win+R打开命令行进行阿里云换源

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

2:cd 到项目根路径下安装依赖

composer require alibabacloud/client

二、使用步骤

1.登录/注册接口对接的阿里云发送短信的控制器

<?phpnamespace app\controller;use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\NlsCloudMeta\NlsCloudMeta;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use app\model\sms;  /*引入你自己的短信模型地址*/class Indexsms
{/*** 发送短信验证码*//*接收的是登录接口发送过来的数据phone:手机号,type:请求类型-login/register*/public function index($phone, $type){$code = rand(100000, 999999); /*验证码随机*/$config = [   /*将下面的参数换成在阿里云上得到的参数*/'accessKeyId' => 'Access Key ID','accessSecret' => 'Access Key Secret','SignName' => '短信签名','TemplateCode' => '模板ID','regionId' => 'cn-hangzhou' /*不用改这里的地址*/];$param = ['code' => $code];AlibabaCloud::accessKeyClient($config['accessKeyId'], $config['accessSecret'])->regionId($config['regionId'])->asDefaultClient();try {$result = AlibabaCloud::rpc()->product('Dysmsapi')->version('2017-05-25')->action('SendSms')->method('POST')->options(['query' => ['PhoneNumbers' => $phone,'SignName' => $config['SignName'],'TemplateCode' => $config['TemplateCode'],'TemplateParam' => json_encode($param)],])->request();/*发送成功存入数据库,将手机号,验证码,请求类型写入短信表*/$smsModel = new sms();$saveSms = $smsModel->saveSms($phone, $code, $type);return $result->toArray();} catch (ClientException $e) {echo $e->getErrorMessage() . PHP_EOL;} catch (ServerException $e) {echo $e->getErrorMessage() . PHP_EOL;}}
}

2.登录发送短信/登录短信验证

    //短信登陆/*** remarks:用户登录-短信发送** phone(手机号)/type(long/register)*/public function index(){/*用户表中查询手机号是否存在*/$adminModel = new admin();$data = request::only(['phone', 'type']);$regular = preg_match('/^1[3456789]\d{9}$/', $data['phone']);/*验证手机格式*/if ($regular == 0) {return json(['code' => 0, 'msg' => '手机号格式不正确']);} else {$checkUser = $adminModel->checkphone($data['phone'], 'login');if ($checkUser == null) {return json(['code' => 0, 'msg' => '抱歉,该手机号是新户暂时不能使用短信登陆!']);} else {$sendsms = new Indexsms();/*实列化发送短信的阿里控制器*/$send = $sendsms->index($data['phone'], $data['type']);/*带数据过去*/if ($send) {return json(['code' => 1, 'msg' => '发送成功,请注意查收短息5分钟内生效!']);} else {return json(['code' => 0, 'msg' => '发送失败,网络繁忙请稍后再试!']);}}}}/*** remarks:用户登录-验证短信** phone/type*/public function checkLogin(){$data = request::only(['phone', 'code', 'type']);/*查询短信验证码*/$smsModel = new sms();$checkCode = $smsModel->checkCode($data);if ($checkCode == null) {return json(['code' => 0, 'msg' => '验证码错误,请重新核对!']);} else {$uid = new admin();$key = 'token';$payload = ["iat" => time(), /*令牌签发时间*/"nbf" => time(), /*如果当前时间在nbf里的时间之前,则Token不被接受*/"exp" => time() + 60 * 60 * 24 * 7, /*过期时间*/"uid" => $uid->uid($data['phone']),/*验证用户id是否相同*/];$smsModel->editCodeState($checkCode['id']);/*验证成功后更改短信的有效性(改无效)*/$token = JWT::encode($payload, $key, "HS256");return json(['code' => 1, 'msg' => '登陆成功', 'token' => $token]);}}

3:注册发送短信/注册短信验证

     * remarks:注册*/public function register(){$data = request::only(['phone', 'type']);$regular = preg_match('/^1[3456789]\d{9}$/', $data['phone']);if ($regular == 0) {return json(['code' => 0, 'msg' => '手机号格式不正确']);} else {/*查询手机号是否为空*/$nullphone = new admin();if ($nullphone->checkphone($data['phone']) == null) {$sendsms = new Indexsms();/*实列化发送短信的阿里控制器*/$send = $sendsms->index($data['phone'], $data['type']);if ($send) {return json(['code' => 1, 'msg' => '发送成功,请注意查收短息5分钟内生效!']);} else {return json(['code' => 0, 'msg' => '发送失败,网络繁忙请稍后再试!']);}} else {return json(['code' => 0, 'msg' => '抱歉,该手机号已被注册!']);}}}/*** remarks:用户注册-验证短信**/public function checkRegister(){$data = request::only(['phone', 'code', 'password', 'type']);$register = new sms();$codeinfo = $register->checkCode($data);if ($codeinfo == null) {return json(['code' => 0, 'msg' => '验证码错误,请重新核对!']);} else if (!empty($data['phone']) && !empty($data['password'])) {/*修改短信有效状态*/$register->editCodeState($codeinfo['id']);$password = md5($data['password']);$adduser = new admin();$adduser = $adduser->save(['phone' => $data['phone'],'password' => $password,]);return json(['code' => 1, 'msg' => '注册成功!']);} else {/*注册失败*/return json(['code' => 1, 'msg' => '表单信息不完整!']);}}

PHP 实现阿里云短信API对接(登录/注册参考)相关推荐

  1. SpringBoot集成阿里云短信服务实现登录注册(超详细)

    本篇博客采用得技术为:springboot + redis + aliyun短信验证 redis我用来做短信校验,首先我们先刨除redis部分做一个发送功能 登录你得阿里云账号 1 -> 控制台 ...

  2. 调用阿里云短信API发送短信通知

    调用阿里云短信API发送短信通知 昨天领导让我弄一个短信通知功能,原来也没有搞过,刚接过来的时候亚历山大,感觉很难搞.但是看过官方文档之后还是挺简单的.来让我们看一下这个短信接口怎么搞吧. 首先你需要 ...

  3. springboot+springsecurity+阿里云短信服务验证实现注册登录

    使用springboot+security+Aliyun短信服务实现注册登录 为了实现个人博客部分的登录注册,我采用了阿里云短信服务发送验证码,后端比对验证码的方式完成注册,现在功能还不完全,以后这个 ...

  4. 如何使用阿里云短信服务实现登录页面,手机验证码登录?

    1:个人如何使用阿里云短信服务? 2022如何使用个人阿里云短信服务?_linxiMY的博客-CSDN博客添加完成之后,等待审核!一般2个小时就会出来审核结果了,这里我因为注册申请时填写规则有误,足足 ...

  5. java集成阿里云短信,实现登录功能

    1.申请阿里云账号,获取签名模板和key和id 具体代码实现 package com.ezeyc.edpbfqz.api.controller;import com.ezeyc.edpbase.uti ...

  6. jeecg 手机注册 阿里云短信API 【 阿里云短信发送验证码 平台配置和项目中使用】

    文章目录 jeecg 项目效果展示 短息通知页面入口 代码中调用短信api 配置和代码 API中的重要参数配置项: 阿里控制台注册 注册签名 注册短信模板  阿里云短信发送验证码配置和项目使用 je ...

  7. 手把手教你如何使用阿里云短信API

    1.官方提供的短信功能API public class SmsUtils {public static void main(String[] args) throws ClientException ...

  8. Java使用阿里云短信API发送验证码

    第一步:登录阿里云官网  控制台中找到短信服务然后开通. 第二步:获取AccessKey 设置权限 至此,accessKeyId以及accessKeySecret就已经创建好了. 第三步:创建签名和模 ...

  9. 阿里云短信api 回执 回复

    不写发短信的方法了,这个搜一下一大把 调用接收队列方法,也是对照官方的demo @Autowiredprivate MessageUp messageUp;@RequestMapping(" ...

最新文章

  1. HDU1576 A/B (解法二)【试探法】
  2. C#关于参数为null(空值)的方法调用,重载顺序选择彻底研究
  3. Python:list 和 array的对比以及转换时的注意事项
  4. 关系到了冰点_和丈夫的关系到了冰点,该怎么办?
  5. Training a classifier
  6. 目录爆破工具 -- dirsearch
  7. 去除浏览器输入框等的边框(包括手机浏览器)
  8. 图像匹配之不变矩匹配法
  9. 商业数据可视化分析基础知识
  10. Java实现斗地主发牌
  11. 看这里!有个奔向月薪7万的程序员专属规划!
  12. WFD抓包及视频提取
  13. Northleaf扩大业务开发团队,任命Chris O’Connor 为澳大利亚和新西兰地区董事总经理
  14. Alpine执行bash
  15. 地区数据erea.js
  16. Tomcat 端口号的修改
  17. jQuery - 元素遍历
  18. 【Linux】VM与Linux的安装
  19. PPP中的pap和chap认证
  20. 深度神经网络进行动态心电图心律不齐的检测和分类 nature论文学习

热门文章

  1. spingioc浅见
  2. 如何为系统盘集成SATA驱动
  3. 黑莓未死 出路在于保节操做精品/从贩卖祖屋到股价大涨黑莓回光返照?
  4. Servlet数据传输Jason核心知识
  5. CCF201812-2 小明放学(JAVA)
  6. ActiveX数据对象之事务控制在VB和DELPHI中的应用
  7. 「技术分享」TSINGSEE青犀视频云存储架构的设计和特点
  8. HTTP1.0,HTTP1.1,HTTP2.0,SPDY,HTTPS你应该知道的一些事
  9. tomcat下的javaBean的配置
  10. valuable的用法_valuable是什么意思_valuable的翻译_音标_读音_用法_例句_爱词霸在线词典...