1、准备工作
1.1、准备依赖包
- 这个网站提供的都是PHP包,挺有用的 https://packagist.org/
- 另外还可以在GitHub上面下载 https://github.com/
1、短信方面 我这里用到 packagist 里面的 overtrue/easy-sms
下载依赖包之前记得要看下依赖的PHP版本、短信平台等。
我们可以看到这个依赖包提供的平台有以下:
2、Redis方面 我用到了Predis的包
另外他包里面提供了使用方法和类型,需要去看下,不过本人进行了代码封装。
安装这些包的话直接打开cmd命令行输入 composer require XXX 即可,
XXX是对应包名,XXX后面如果加 **:1.***就相当于版本号,包里面会介绍相关的操作。
##2、代码封装
#####2.1、封装的文件
- 包括两个 服务类 和 config.php ,用于封装不同业务类型的存储和发送的方法,如下图
2.2、配置文件
- config.php 文件,用于保存短信配置和白名单等,内容如下
//通用发送短信配置(短信消息配置)
'easy_sms' => [
// HTTP 请求的超时时间(秒)
'timeout' => 5.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
'yunpian',
],
],
// 可用的网关配置
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
//云片
'yunpian' => [
'api_key' => '',
],
//阿里云
'aliyun' => [
'access_key_id' => '',
'access_key_secret' => '',
'sign_name' => 'aa',
],
//...
],
],
//发送消息限制配置
'sms_limit' => [
'white_list' => [ //发送短信白名单
'13512341234',
'18664337604',
'13450681681',
],
'save_time' => 3600, //设置保存时间 默认一小时
'send_total' => 5, //限制时间内最多发送5条
'expires' => 900, //设置验证码过期时间 默认15分钟
],
//Redis配置
'redis_host' => Env::get('redis.hostname','192.168.2.168'),
'redis_password' => Env::get('redis.password',''),
'redis_port' => Env::get('redis.hostport','6379'),
'redis_prefix' => Env::get('redis.prefix','su::'),
其中 Env 是对应的配置文件,你也可以直接在第二个参数填写默认的配置即可。
2.3、Redis服务类
<?php
namespace app\common\service;
use Predis\Client;
class RedisService
{
//Redis保存的key
//短信部分
const SU_SMS_LOGIN = 'sms::login::'; //短信验证码|登录和找回密码(后面跟 国际区号-用户手机号)
const SU_SMS_RESET_PWD = 'sms::reset::pwd::'; //短信验证码|重置账号密码(后面跟 国际区号-用户手机号)
const SU_SMS_RESET_MOBILE = 'sms::reset::mobile::'; //短信验证码|重置手机号码(后面跟 国际区号-用户手机号)
const SU_SMS_CREATE_ACCOUNT_MOBILE