本案例采用Laravel5.6对接阿里云SMS发送短信验证码,【全干货】,按步骤操作即可完成。
在部署环境之前,我们需要去阿里云平台注册一个账号,个人账号和公司账号都可以,注册完成后,复制access_key和access_secret配置在项目中就完成了项目的基本设置。
1. 环境配置要求
Laravel 对系统有一些要求,您的服务器满足下面的要求:
PHP >= 7.1.3
OpenSSL PHP
PHP PDO 扩展
PHP Mbstring 扩展
PHP Tokenizer 扩展
PHP XML 扩展
PHP Ctype 扩展
PHP JSON 扩展
备注:您需要达到以上的配置要求,这个就不具体详细说明,具体看PHP语法
2. 安装Laravel5.6框架
Laravel5.6使用 Composer 来管理项目依赖。因此,在使用 Laravel5.6之前,请确保你的机器已经安装了 Composer。
composer -v
// 未安装composer,请参照以下网址安装https://www.phpcomposer.com/
备注:composer具体安装请参照上面链接,按文档安装即可.
下面我们具体安装Larvael5.6框架,在控制窗口输入一下内容(本人windows操作系统),等待安装完成。
composer create-project --prefer-dist laravel/laravel blog
安装完成后执行以下代码,为应用程序设置随机字符串密钥。
php artisan key:generate
在浏览器中输入:http://localhost/blog/public/index.php
,看到如下界面就是访问正常了。
3. composer.json配置阿里云组件包
在require
中添加"mrgoon/aliyun-sms": "dev-master"
“require”: {
“php”: “^7.1.3”,
“fideloper/proxy”: “^4.0”,
“laravel/framework”: “5.8.*”,
“laravel/tinker”: “^1.0”,
"mrgoon/aliyun-sms": "dev-master"
}
然后执行命令:
composer update
composer dumpautoload
里面已经有阿里云的SDK包了,配置文件也生成了。
4、开通短信服务
1、登录阿里云网站,点击短信服务,进入开通。
2、点击国内消息
3、添加签名
5. 配置阿里云access_key和access_secret配置
这里很关键:我的是单独写了一个文件进行配置
第一步:在config/app.php
的providers
下添加:
'providers' => [Mrgoon\AliSms\ServiceProvider::class,],
第二步:在app/aliyunsms.php
中添加配置:
return [
'access_key' => env('ALIYUN_SMS_AK', '填你自己的'),
'access_secret' => env('ALIYUN_SMS_AS', '填你自己的'),
],
第三步:在.env文件中配置常量
ALIYUN_ACCESSKEYID=填你自己的
文件就已经配置完成。
新建控制器:UploadsController
继承 Controller
类,方便操作。
第一步:编写API路由
Route::post('/index/sendsms', '\App\Http\Controllers\Index\SmsController@index');
第二步:编写控制器,发送短信(核心代码)
mobile)) {
return array_format('手机号格式错误', 414);
}
//发送过快验证
$repeat_cache_key = md5($request->mobile . $request->type . 'repeat');
if (cache()->store('file')->has($repeat_cache_key)) {
return array_format('发送过快,请稍后再试', 414);
}
$mobile_code = rand_num(6);
$sms = new \AliSms();
$temp = $sms->sendSms($request->mobile, '填你自己的', ['code'=> $mobile_code]);
if (!$temp) {
return array_format('发送短信失败', 414);
}
//缓存验证码
$cache_key = md5($request->mobile);
cache()->store('file')->put($cache_key, $mobile_code, 5);
cache()->store('file')->put($repeat_cache_key, $mobile_code, 0.1);
return array_format('发送成功', 200);
}
}
了解更多干货知识请关注公众号(Laravel技术社区)