이 글은 주로 Yunpian SMS 플랫폼을 사용하여 Laravel에서 SMS 등록을 위한 샘플 코드를 소개합니다. 내용이 꽤 좋아서 지금 공유하겠습니다.
저는 회사에서 쇼핑몰 프로젝트를 진행하고 있습니다. 백엔드가 하나뿐이어서 이제 제가 SMS로 등록할 차례입니다. 처음에는 아직 조금 서툴렀는데, 다행히 Laravel-china
커뮤니티에 여름
의 달인이 쓴 책이 있었습니다. 그 안에 있는 작성 방법과 아이디어를 참고하고 easy-sms
패키지를 사용하여 성공적으로 만드는 데 오후 반이 걸렸습니다. 저녁에 모두와 공유하겠습니다. Laravel-china
社区的 summer
大神,写的书。在里面参考了它的写法和思路,并且用了 easy-sms
包,这才用了半个下午的时间,顺利的做出来了,晚上赶紧和大家分享一波了。
1、确定短信运营商
我看到大佬都是用的云片,我也就毫不犹豫的大力推荐公司用这个短信平台了,不过其他的也可以咯。
首先自己注册一个帐号,然后找到这个
点击开始接入,完成新手引导过程。
第二部的签名和模板必须填写,类似我下面填写的这样
值得注意的是这个模板必须和你到时候用 easy-sms
包的时候,设定的短信内容必须和这个一模一样,不然会报错的。
还有就是记得一定得拿到APIKEY。到时候,在env里进行配置。
# 云片 YUNPIAN_API_KEY=9c60bdd**********
2、安装 easy-sms
包
利用这个包,可以快速的实现短信发送功能。
composer require "overtrue/easy-sms"
由于该组件还没有 Laravel 的 ServiceProvider
,为了方便使用,我们可以自己封装一下。
首先在 config 目录中增加 easysms.php
文件
在 config/easysms.php 填写如下内容。
<?php return [ // 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
<?php namespace 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.php
在 providers
里增加刚刚创建的服务写进去,AppProvidersEasySmsServiceProvider::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
再直接在里面写 register
和 ajaxregister
方法了
代码逻辑
修改文件
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
큰 놈들이 다 윈피안 쓰는 걸 보니까 망설임 없이 적극 추천해요 회사에서는 이거 쓰거든요 문자 메시지 플랫폼이지만 다른 플랫폼도 사용할 수 있습니다.
먼저 계정을 직접 등록한 다음 이것을 찾으세요
액세스를 시작하고 초보자 안내 프로세스를 완료하려면 클릭하세요.
두 번째 서명과 템플릿은 아래에 입력한 것과 유사하게 입력해야 합니다
easy-를 사용할 때 이 템플릿을 사용해야 한다는 점은 주목할 가치가 있습니다. sms 패키지에서 설정된 문자 메시지 내용은 이 내용과 정확히 동일해야 하며, 그렇지 않으면 오류가 보고됩니다.
또한 APIKEY를 얻는 것을 잊지 마세요. 이때 env에서 구성하십시오. rrreee2.
easy-sms
패키지 설치🎜🎜이 패키지를 사용하면 SMS 전송 기능을 빠르게 구현할 수 있습니다. 🎜rrreee🎜이 구성 요소에는 아직 Laravel의 ServiceProvider
가 없으므로 사용 편의성을 위해 직접 캡슐화할 수 있습니다. 🎜🎜먼저 config 디렉터리에 easysms.php
파일을 추가하세요. 🎜🎜config/easysms.php에 다음 내용을 입력하세요. 🎜rrreee그런 다음 ServiceProvider를 만듭니다🎜rrreee🎜app/providers/EasySmsServiceProvider.php🎜rrreee🎜파일을 수정합니다. 마지막으로 config/app에서. php
providers
에서 방금 생성한 서비스를 추가하고 AppProvidersEasySmsServiceProvider::class,
🎜rrreee🎜3. 경로 및 해당 컨트롤러 생성🎜🎜🎜먼저 경로를 생성하려면 다음과 같이 SMS 인증 코드를 요청하는 ajax 메서드와 등록을 확인하는 논리적 메서드가 필요합니다. 🎜라우트가 생성되면 명령을 사용하여 컨트롤러🎜rrreee🎜를 생성한 다음 해당 컨트롤러에 register
및 ajaxregister
메서드를 직접 작성합니다🎜🎜코드 로직🎜🎜파일 수정🎜 🎜app/Home/VerificationCodesController.php🎜rrreee🎜이렇게 하면 사용자가 문자 메시지를 받을 수 있고 프런트 엔드에서는 이 키를 저장해야 합니다.
를 등록 양식을 제출할 때 백엔드로 전달하여 만료되었는지 확인하세요. 유효기간이 지났는지, 인증번호가 틀렸는지 확인하는 방법은 다음과 같습니다. 🎜rrreee🎜위의 hash_equals
는 타이밍 공격을 방지할 수 있는 문자열 비교입니다~🎜🎜위는 저의 전 과정입니다. 🎜🎜위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요! 🎜🎜관련 권장 사항: 🎜🎜🎜Laravel을 사용하여 Gravatar 아바타 주소 생성🎜🎜🎜🎜🎜laravel을 통해 새 클래스 파일을 생성하기 위해 사용자 정의 artisan make 명령을 만드는 방법🎜🎜🎜🎜🎜🎜
위 내용은 Larav에서 SMS 등록을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpidifiesauser의 sssessionusessessioncookiesandssessionids.1) whensession_start () iscalled, phpgeneratesauniquessessionStoredInacookienamedPhpsSessIdonSeuser 'sbrowser.2) thisidallowsphptoretrievessessionDataTromServer.

PHP 세션의 보안은 다음 측정을 통해 달성 할 수 있습니다. 1. Session_REGENEREAT_ID ()를 사용하여 사용자가 로그인하거나 중요한 작업 일 때 세션 ID를 재생합니다. 2. HTTPS 프로토콜을 통해 전송 세션 ID를 암호화합니다. 3. 세션 _save_path ()를 사용하여 세션 데이터를 저장하고 권한을 올바르게 설정할 보안 디렉토리를 지정하십시오.

phpsessionfilesarestoredInTheRectorySpecifiedBysession.save_path, 일반적으로/tmponunix-likesystemsorc : \ windows \ temponwindows.tocustomizethis : 1) austession_save_path () toSetacustomDirectory, verlyTeCustory-swritation;

toretrievedatafromAphPsession, startSessionstart_start () andaccessvariblesinthe $ _sessionArray.forexample : 1) startthessession : session_start (). 2) retrievedata : $ _ session [ 'username']; echo "Welcome,". $ username;

세션을 사용하여 효율적인 쇼핑 카트 시스템을 구축하는 단계에는 다음이 포함됩니다. 1) 세션의 정의와 기능을 이해합니다. 세션은 요청에 따라 사용자 상태를 유지하는 데 사용되는 서버 측 스토리지 메커니즘입니다. 2) 쇼핑 카트에 제품 추가와 같은 기본 세션 관리를 구현합니다. 3) 제품 수량 관리 및 삭제 지원 고급 사용으로 확장; 4) 세션 데이터를 지속하고 보안 세션 식별자를 사용하여 성능 및 보안을 최적화합니다.

이 기사는 PHP의 인터페이스를 생성, 구현 및 사용하는 방법을 설명하여 코드 구성 및 유지 관리에 대한 이점에 중점을 둡니다.

이 기사에서는 PHP의 암호 해싱에 대한 Crypt ()와 Password_hash ()의 차이점에 대해 논의하여 최신 웹 애플리케이션에 대한 구현, 보안 및 적합성에 중점을 둡니다.

기사는 입력 유효성 검사, 출력 인코딩 및 OWASP ESAPI 및 HTML 청정기와 같은 도구를 통해 PHP의 크로스 사이트 스크립팅 (XSS) 방지에 대해 논의합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
