在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):toplan/laravel-sms开源软件地址(OpenSource Url):https://github.com/toplan/laravel-sms开源编程语言(OpenSource Language):PHP 93.3%开源软件介绍(OpenSource Introduction):Laravel Sms一个基于 1. 关于2.0
2. why me为了更进一步提高开发效率,
3. 如何快速开始?上面提了这么多特性,那么如何快速上手并体验一下验证码发送与验证呢?只需要依次完成以下三个步骤即可。 公告
安装在项目根目录下运行如下composer命令: //推荐
composer require toplan/laravel-sms:~2.6
//安装开发中版本
composer require toplan/laravel-sms:dev-master 准备工作1.注册服务提供器在config/app.php文件中providers数组里加入: Toplan\PhpSms\PhpSmsServiceProvider::class,
Toplan\Sms\SmsManagerServiceProvider::class, 在config/app.php文件中的aliases数组里加入 'PhpSms' => Toplan\PhpSms\Facades\Sms::class,
'SmsManager' => Toplan\Sms\Facades\SmsManager::class, 2.参数配置
php artisan vendor:publish --provider="Toplan\PhpSms\PhpSmsServiceProvider"
php artisan vendor:publish --provider="Toplan\Sms\SmsManagerServiceProvider"
在config/phpsms.php的
在config/phpsms.php中设置代理器的均衡调度方案。 'scheme' => [
//被使用概率为2/3
'Luosimao' => '20',
//被使用概率为1/3,且为备用代理器
'YunPian' => '10 backup',
//仅为备用代理器
'YunTongXun' => '0 backup',
];
发送前数据验证1. 声明当客户端向服务器端请求发送验证码短信/语音时,服务器端需要对接收到的数据(本库将其称为
配置项对于每项数据,都有以下几项可设置:
示例'validation' => [
//内置的mobile参数的验证配置
'mobile' => [
'isMobile' => true,
'enable' => true,
'default' => 'mobile_required',
'staticRules' => [
'mobile_required' => 'required|zh_mobile',
...
],
],
//自定义你可能需要验证的字段
'image_captcha' => [
'enable' => true,
],
], 2. 使用静态验证规则和动态验证规则的使用方法一致。 客户端通过 服务器端验证码模块可以直接访问
1. [服务器端]配置短信内容/模板短信内容如果你使用了内容短信,则需要设置
'content' => function ($code, $minutes, $input) {
return '【signature】您的验证码是' . $code . ',有效期为' . $minutes . '分钟,请尽快验证。';
} 模版id如果你使用了模板短信,需要配置到使用到的代理器的模板标示符。
'templates' => [
'YunTongXun' => '短信模版id',
'Alidayu' => ['短信模版id', '语音模版id'],
] 模版数据如果你使用了模板短信,需要配置准备使用的模版数据。
'data' => [
'code' => function ($code) {
return $code;
},
...
], 2. [浏览器端]请求发送验证码短信该包已经封装好浏览器端的基于jQuery(zepto)的发送插件,只需要为发送按钮添加扩展方法即可实现发送短信。
<script src="/path/to/laravel-sms.js"></script>
<script>
$('#sendVerifySmsButton').sms({
//laravel csrf token
token : "{{csrf_token()}}",
//请求间隔时间
interval : 60,
//请求参数
requestData : {
//手机号
mobile : function () {
return $('input[name=mobile]').val();
},
//手机号的检测规则
mobile_rule : 'mobile_required'
}
});
</script>
3. [服务器端]合法性验证用户填写验证码并提交表单到服务器时,在你的控制器中需要验证手机号和验证码是否正确,你只需要加上如下代码即可: use SmsManager;
...
//验证数据
$validator = Validator::make($request->all(), [
'mobile' => 'required|confirm_mobile_not_change|confirm_rule:mobile_required',
'verifyCode' => 'required|verify_code',
//more...
]);
if ($validator->fails()) {
//验证失败后建议清空存储的发送状态,防止用户重复试错
SmsManager::forgetState();
return redirect()->back()->withErrors($validator);
}
Validator扩展zh_mobile检测标准的中国大陆手机号码。 confirm_mobile_not_change检测用户提交的手机号是否变更。 verify_code检测验证码是否合法且有效,如果验证码错误,过期或超出尝试次数都无法验证通过。 confirm_rule:$ruleName检测验证规则是否合法,后面跟的第一个参数为待检测的验证规则的名称。
如果不填写参数 数据库日志
1. 生成数据表运行如下命令在数据库中生成 php artisan migrate 2. 开启权限在配置文件 'dbLogs' => true, 短信队列1. 启用/关闭队列
$enable = PhpSms::queue(); //true of false 开启/关闭队列的示例如下: //开启队列:
PhpSms::queue(true);
//关闭队列:
PhpSms::queue(false); 如果你开启了队列,需要运行如下命名监听队列 php artisan queue:listen 2. 队列自定义如果你运行过
该方式只需要你自己实现一个Job class,然后在
在发送短信前,你可以完全重新定义你的队列流程! //example:
PhpSms::queue(function($sms, $data){
//假设如此推入队列:
$this->dispatch(new YourQueueJobClass($sms));
}); 无会话支持1. 服务器端准备在 //example:
'middleware' => ['api'], 2. Access TokenAccess Token值建议设置在请求头中的
3. 请求地址
4. 默认参数
5. 响应数据
API
use SmsManager; 1. 发送前校验validateSendable()校验是否可进行发送。如果校验未通过,返回数据中会包含错误信息。 $result = SmsManager::validateSendable(); validateFields([$input][, $validation])校验数据合法性。如果校验未通过,返回数据中会包含错误信息。 //使用内置的验证逻辑
$result = SmsManager::validateFields();
//自定义验证逻辑
$result = SmsManager::validateFields(function ($fields, $rules) {
//在这里做你的验证处理,并返回结果...
//如:
return Validator::make($fields, $rules);
}); 2. 发送requestVerifySms()请求发送验证码短信。 $result = SmsManager::requestVerifySms(); requestVoiceVerify()请求发送语音验证码。 $result = SmsManager::requestVoiceVerify(); 3. 发送状态state([$key][, $default])获取当前的发送状态(非持久化的)。 //example:
$state = SmsManager::state(); retrieveState([$key])获取持久化存储的发送状态,即存储到 $state = SmsManager::retrieveState(); updateState($name, $value)更新持久化存储的发送状态。 SmsManager::updateState('key', 'value');
SmsManager::updateState([
'key' => 'value'
]); forgetState()删除持久化存储的发送状态。 SmsManager::forgetState(); |