ThinkPHP5.1使用阿里云平台发送短信验证码
短信验证码已经成为一个网站不可缺少的功能,通过阿里云的短信服务可以很方便的实现这个功能。
使用阿里云的短信服务需要首先注册一个阿里云的账号(淘宝支付宝账号也可以),注册之后需要完成一系列的资料完善和实名验证功能,这些都比较简单,按照提示做就可以了。如果你之前已经在同一账号使用过阿里大于短信业务,进入阿里云的短信服务之后会提示你是否将阿里大于的短信业务迁移过来,注意迁移过来以后原来的阿里大于的短信业务就被清空了,确认不会影响你的项目以后选择迁移。迁移按照提示操作就可以了,比较简单,有一点就是提示我需要大概4分钟左右,实际用了大概15分钟左右,这块大家耐心等待就可以了。
-
登录以后找到短信服务:
因为签名管理和模板管理需要审核,所以先去做签名和模板管理。
签名管理比较简单,按照要求起好名字,提交审核就可以了,现在审核速度非常快,注意查看审核结果。
然后是模板管理,模板类型选验证码,模板名称自己填写,申请说明也正常填写就行了,这些都比较简单。唯一的难点就是模板内容,这里面涉及到一个变量的问题,变量格式为${code},其中code是你要进行替换的变量,阿里云提供了一些模板库,可以复制使用。加入我们的模板是:您的验证码是${code}。在进行函数调用时,我们会设置code的值,这个值就会替换模板中的${code},生成最终的短信内容。
-
来到接口调用,找到PHP:
-
进入之后是一个帮助文档,找到图中所示PHP:
-
点击下载保存解压缩,将图中四个文件夹放到项目的extend目录下面。
-
将SmsDemo.php文件放到控制器下面,假如放到index控制器当中,定义好相应的命名空间,把文件引入位置进行改变。
同时将下面的调用示例全部删除。
-
同时对sendSms函数进行如下修改:
其中签名名称和模板Code根据自己申请的签名名称和模板CODE填写就可以了。$code是生成一个0-999999的随机数,不足的部分两侧补零,也就是生成一个随机的六位数。使用Cookie助手函数将得到的值存储起来,并设置有效时间为5分钟。下面的”code”中的code是你在短信模板中设置的变量值,这块根据自己设置的变量进行填写就可以了。
为了能够使自己正确的被阿里云识别,还必须填入accessKeyId和accessKeySecret,这两个值尤其是后一个值非常重要,不要泄露出去,不要上传到公开的GitHub上,如果感觉自己的码已经被泄露了,要及时进行更改或删除
-
回到阿里云短信服务,点击获取AK:
进入之后会有一个对话框,提示建议使用RAM子账户,实际使用的时候应当按照阿里云建议,使用RAM子账户,减少密码泄露的损失。这里我们出于教学的目的,选择继续使用AccessKey。然后点击右边的创建AccessKey,按照提示做就可以了,我这里还需要验证手机号。
创建完成后,把鼠标移动到右上角的头像,会自动出现个列表,点击accesskeys。
进入之后,Access Key Secret下面有个显示,点击,验证手机号以后会获取到Access Key Secret,将Access Key ID和对应的Access Key Secret填入到getAcsClient函数中的对应位置就可以了。
-
因为发送的函数是静态函数,所以可以直接调用,
然后在浏览器中访问这个函数就可以了。获取到验证码以后,在注册的时候进行短信验证也就很简单了。
最后一点检查余额,记得充值。