zfegg / sms-sender
SMS sender service. And use for send sms captcha handler / 短信发送模块, 并且用于发送短信验证码处理程序
2.1.0
2022-10-22 04:03 UTC
Requires
- php: >=7.3
- psr/event-dispatcher: ^1.0
- psr/log: ^1.0 | ^2.0 | ^3.0
- psr/simple-cache: ^1.0 | ^2.0 | ^3.0
Requires (Dev)
- cache/array-adapter: ^1.0
- laminas/laminas-captcha: ^2.5
- laminas/laminas-diactoros: ^2.1
- laminas/laminas-i18n: ^2.7
- laminas/laminas-inputfilter: ^2.7
- laminas/laminas-serializer: ^2.8
- laminas/laminas-servicemanager: ^3.0
- mezzio/mezzio-problem-details: ^1.0
- phpunit/phpunit: ^9.0
- psr/http-server-handler: ^1.0
- squizlabs/php_codesniffer: ^3.7.1
This package is auto-updated.
Last update: 2024-12-22 08:51:55 UTC
README
抽象常用短信业务:
- 实现短信的限制发送(60s 内限制发送1次,1天上限发送10次)
- 短信验证码生成与验证功能
Installation / 安装
使用 Composer 安装
$ composer require zfegg/sms-sender
Interfaces / 接口说明
Zfegg/SmsSender/Provider/ProviderInterface
短信供应商实现接口
Usage / 使用
基本使用示例代码:
在 Expressive 中使用:
在 config/application.php
中添加模块加载.
return array( 'modules' => array( //... Your modules 'Zfegg/SmsSender' ), );
添加短信发送配置 module.config.php
return [ 'dependencies' => [ 'factories' => [ ProviderInterface::class => YourSmsProviderFactory::class, ], ] 'zfegg' => [ LimitSender::class => [ 'provider' => ProviderInterface::class, // 设置短信商服务名. (可选), 默认 `ProviderInterface::class` 'cache' => CacheInterface::class, // 设置缓存服务名 (可选), 默认 `CacheInterface::class` 'day_send_times' => 10, // 设置每天发送次数上限 (可选), 默认10 'waiting_time' => 60, //设置每次发送等待时长 (可选), 默认60s ], PostSmsCaptchaHandler::class => [ 'types' => [ 'register' => 'Register captcha code: {code}', 'login' => 'Login captcha code: {code}', ] ], ] ];
控制器使用:
//发送验证码 $app->post('/api/send-sms-captcha', PostSmsCaptchaHandler::class); //业务验证码验证 $app->post('/register', [ function ($req, $handler) { //配置验证器 $inputFilter = (new \Laminas\InputFilter\Factory)->create([ [ 'name' => 'captcha', 'validators' => [ [ 'name' => SmsCode::class, 'options' => [ 'inputName' => 'phone', ] ] ] ], [ 'name' => 'phone', 'validators' => [ [ 'name' => 'PhoneNumber', ] ] ], ]) if (! $inputFilter->isValid()) { //验证失败响应 return new JsonResponse(['messages' => $inputFilter->getMessages()], 403); } //验证成功继续注册 return $handler->handle($req); }, YourRegisterHandler::class, ])