亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

Laravel實現短信注冊的示例代碼

2024-05-05 00:03:58
字體:
來源:轉載
供稿:網友

正在公司做一個商城項目,由于只有一個后臺,所以注冊用短信注冊也就輪到我來做的。剛剛開始,我內心還是有點虛的,還好有 Laravel-china 社區的 summer 大神,寫的書。在里面參考了它的寫法和思路,并且用了 easy-sms 包,這才用了半個下午的時間,順利的做出來了,晚上趕緊和大家分享一波了。

1、確定短信運營商

我看到大佬都是用的云片,我也就毫不猶豫的大力推薦公司用這個短信平臺了,不過其他的也可以咯。

首先自己注冊一個帳號,然后找到這個

 

 

Laravel,短信注冊

點擊開始接入,完成新手引導過程。

 

 

Laravel,短信注冊

第二部的簽名和模板必須填寫,類似我下面填寫的這樣

 

 

Laravel,短信注冊

 

 

Laravel,短信注冊

值得注意的是這個模板必須和你到時候用 easy-sms 包的時候,設定的短信內容必須和這個一模一樣,不然會報錯的。

還有就是記得一定得拿到APIKEY。到時候,在env里進行配置。

# 云片YUNPIAN_API_KEY=9c60bdd**********

2、安裝 easy-sms

利用這個包,可以快速的實現短信發送功能。

composer require "overtrue/easy-sms"

由于該組件還沒有 Laravel 的 ServiceProvider ,為了方便使用,我們可以自己封裝一下。

首先在 config 目錄中增加 easysms.php 文件

config/easysms.php 填寫如下內容。

<?phpreturn [ // HTTP 請求的超時時間(秒) 'timeout' => 5.0, // 默認發送配置 'default' => [  // 網關調用策略,默認:順序調用  'strategy' => /Overtrue/EasySms/Strategies/OrderStrategy::class,  // 默認可用的發送網關  'gateways' => [   'yunpian',  ], ], // 可用的網關配置 'gateways' => [  'errorlog' => [   'file' => '/tmp/easy-sms.log',  ],  'yunpian' => [   'api_key' => env('YUNPIAN_API_KEY'),  ], ],];

然后創建一個 ServiceProvider

php artisan make:provider EasySmsServiceProvider

修改文件 app/providers/EasySmsServiceProvider.php

<?phpnamespace App/Providers;use Overtrue/EasySms/EasySms;use Illuminate/Support/ServiceProvider;class EasySmsServiceProvider extends ServiceProvider{ /**  * Bootstrap the application services.  *  * @return void  */ public function boot() {  // } /**  * Register the application services.  *  * @return void  */ public function register() {  $this->app->singleton(EasySms::class, function ($app) {   return new EasySms(config('easysms'));  });  $this->app->alias(EasySms::class, 'easysms'); }}

最后在 config/app.phpproviders 里增加剛剛創建的服務寫進去,App/Providers/EasySmsServiceProvider::class,

App/Providers/AppServiceProvider::class,App/Providers/AuthServiceProvider::class,// App/Providers/BroadcastServiceProvider::class,App/Providers/EventServiceProvider::class,App/Providers/RouteServiceProvider::class,App/Providers/EasySmsServiceProvider::class, //easy-sms

3、創建路由和對應的控制器

首先創建路由,我們需要一個ajax請求短信驗證碼的方法,和一個進行確認注冊的邏輯方法,如下:

Route::group(['prefix' => 'verificationCodes', 'as' => 'verificationCodes.'], function() {  Route::post('register', 'VerificationCodesController@register')->name('register');  Route::get('ajaxregister', 'VerificationCodesController@ajaxregister')->name('ajaxregister'); });

路由創建好了,我們用命令生成controller了

php artisan make:controller Home/VerificationCodesController

再直接在里面寫 registerajaxregister 方法了

代碼邏輯

修改文件

app/Home/VerificationCodesController.php

<?php...use Overtrue/EasySms/EasySms;use App/Models/System/User;class VerificationCodesController extends Controller{ // 這里驗證就不寫了。 public function ajaxregister(VerificationCodeRequest $request, EasySms $easySms) {  //獲取前端ajax傳過來的手機號  $phone = $request->phone;    // 生成4位隨機數,左側補0  $code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);    try {   $result = $easySms->send($mobile, [    'content' => "【安拾商城】您的驗證碼是{$code}。如非本人操作,請忽略本短信"   ]);  } catch (Overtrue/EasySms/Exceptions/NoGatewayAvailableException $exception) {   $response = $exception->getExceptions();   return response()->json($response);  }    //生成一個不重復的key 用來搭配緩存cache判斷是否過期  $key = 'verificationCode_' . str_random(15);  $expiredAt = now()->addMinutes(10);    // 緩存驗證碼 10 分鐘過期。  /Cache::put($key, ['mobile' => $mobile, 'code'=> $code], $expiredAt);    return response()->json([   'key' => $key,   'expired_at' => $expiredAt->toDateTimeString(),  ], 201); }

這樣,用戶就能收到短信,并且前端應該保存這個 key ,提交注冊表單的時候傳遞給后臺,判斷是否已經過期。下面就是判斷是否過期,驗證碼是否錯誤。

public function register(VerificationCodeRequest $request){ //獲取剛剛緩存的驗證碼和key $verifyData = /Cache::get($request->verification_key);  //如果數據不存在,說明驗證碼已經失效。 if(!$verifyData) {  return response()->json(['status' =>0, 'message'=> '短信驗證碼已失效'], 422); }  // 檢驗前端傳過來的驗證碼是否和緩存中的一致 if (!hash_equals($verifyData['code'], $request->verification_code) {  return redirect()->back()->with('warning', '短信驗證碼錯誤'); }  $user = User::create([  'mobile' => $verifyData['mobile'],  'password' => bcrypt($request->password), ]); // 清除驗證碼緩存 /Cache::forget($request->verification_key); return redirect()->route('login')->with('success', '注冊成功!'); }

上面的 hash_equals 是可防止時序攻擊的字符串比較的~

以上就是我整個的過程。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色先锋久久影院av| 国产亚洲精品美女久久久久| 欧美高清激情视频| 久久视频在线直播| 国产精品白丝jk喷水视频一区| 亚洲精品av在线播放| 中文字幕日韩在线播放| 欧美大荫蒂xxx| 亚洲丝袜一区在线| 精品国产一区二区三区久久狼黑人| 亚洲欧美国产va在线影院| 久久99精品久久久久久琪琪| 欧美激情三级免费| 久久国产精品久久精品| 中文字幕自拍vr一区二区三区| 91豆花精品一区| 亚洲第一区中文字幕| 日韩黄色在线免费观看| www.亚洲一区| 亚洲精品久久久久久久久久久| 国产精品三级美女白浆呻吟| 日韩av一区在线| 三级精品视频久久久久| 欧美中文在线免费| 国产在线一区二区三区| 欧美一区二区.| 国产亚洲欧美日韩精品| 久久成人这里只有精品| 日韩在线观看精品| 91夜夜未满十八勿入爽爽影院| 国产区精品视频| 亚洲精品国产成人| 国产欧美精品一区二区| 国产精品va在线播放我和闺蜜| 韩剧1988在线观看免费完整版| 亚洲成人精品在线| 成人激情电影一区二区| 亚洲国产精品嫩草影院久久| 欧美疯狂xxxx大交乱88av| 欧美片一区二区三区| 国产精品美女在线| 亚洲第一精品自拍| 少妇高潮久久77777| 4438全国成人免费| 日本午夜精品理论片a级appf发布| 国产精品99免视看9| 日本一区二区三区四区视频| 欧美极品美女电影一区| 欧美日韩国产在线| 久久久久久久一区二区三区| 色噜噜狠狠色综合网图区| 97在线视频国产| 中文字幕av一区中文字幕天堂| 国产精品三级久久久久久电影| 美女少妇精品视频| 欧美国产日本在线| 丝袜亚洲另类欧美重口| 日本国产精品视频| 欧美亚洲成人免费| 国产精品久久电影观看| 久久中文字幕在线| 国产成人精品电影久久久| 日韩有码视频在线| 激情成人中文字幕| 欧美激情网友自拍| 国产成人精品综合久久久| 亚洲精品乱码久久久久久按摩观| 久久综合免费视频| 中文字幕日韩在线播放| 久久久国产视频91| 91黑丝高跟在线| 精品久久久久久久久久久久| 国产又爽又黄的激情精品视频| 97色在线视频| 欧美亚洲视频在线观看| 欧美激情videoshd| 69久久夜色精品国产69乱青草| 精品中文字幕乱| 日韩精品高清在线观看| 色老头一区二区三区在线观看| 亚洲伊人成综合成人网| 精品久久久久久久久久ntr影视| 欧美精品免费看| 欧美精品激情在线观看| 国产视频精品一区二区三区| 欧美高清videos高潮hd| 亚洲性夜色噜噜噜7777| 一区二区三区视频免费在线观看| 成人av在线网址| 亚洲欧美日韩高清| 国产精品96久久久久久| 国产91成人在在线播放| 欧美精品亚州精品| 亚洲精品久久7777777| 国产精品av在线播放| 精品久久久久国产| 日韩一区二区三区在线播放| 亚洲97在线观看| 久久6免费高清热精品| 亚洲精品视频免费在线观看| 日韩国产高清视频在线| 亚洲自拍偷拍区| 成人啪啪免费看| 在线播放国产一区二区三区| 日韩欧美999| 久久综合色影院| 91精品国产自产91精品| 日韩电影视频免费| 日韩欧美999| 国产精品久久久久久久久久99| 亚洲精品美女久久久久| 亚洲天堂色网站| 91精品视频网站| 亚洲跨种族黑人xxx| 亚洲成人久久久久| 亚洲综合色激情五月| 国产精品日日摸夜夜添夜夜av| 91成人在线视频| 欧美在线视频免费| 亚洲欧洲一区二区三区久久| 久久夜精品va视频免费观看| 成人a免费视频| 国产美女高潮久久白浆| 黑人极品videos精品欧美裸| 久久精品2019中文字幕| www亚洲精品| 国内精品久久久久久久久| 亚洲在线观看视频网站| 国产精品高潮呻吟久久av无限| 精品国偷自产在线| 国产精品91久久久久久| 久久99精品国产99久久6尤物| 亚洲一区中文字幕在线观看| 国产午夜精品视频免费不卡69堂| 欧美黑人xxxx| 成人伊人精品色xxxx视频| 国产精品wwwwww| 亚洲欧美精品suv| 久久躁狠狠躁夜夜爽| 亚洲天堂av电影| 久久99国产精品自在自在app| 久久成人精品电影| 亚洲福利小视频| 热99精品只有里视频精品| 97国产精品人人爽人人做| 国产精品久久久久久影视| 国产成人综合精品在线| 日韩欧美在线国产| 日韩精品免费电影| 欧美极品少妇与黑人| 日韩av电影免费观看高清| 国产精品色婷婷视频| 国产伦精品免费视频| 国产精品海角社区在线观看| 欧美日韩成人在线观看| 2019中文字幕在线观看| 成人美女免费网站视频| 奇米4444一区二区三区| 国内精品久久久久久影视8| 欧美精品免费在线观看| 国产一区二区三区欧美| 国产视频在线观看一区二区| 国产97在线|亚洲| 日韩欧美一区视频|