찾다
백엔드 개발PHP 튜토리얼Laravel에서 SMS 인증코드 전송 기능을 개발하기 위한 '사양'(그림)

Laravel은 간단하고 우아한 PHP 웹 개발 프레임워크(PHP 웹 프레임워크)입니다. 다음으로 이번 글을 통해 라라벨의 "표준" 개발 SMS 인증코드 전송 기능에 대해 알려드리겠습니다. 필요하신 분들은 참고하시면 됩니다.

라라벨 소개

라라벨은 간단하고 우아한 PHP 웹 개발 프레임워크(PHP 웹 프레임워크). 누들과 같은 지저분한 코드에서 벗어날 수 있으며 완벽한 네트워크 앱을 구축하는 데 도움이 될 수 있으며 모든 코드 줄은 간결하고 표현력이 뛰어납니다.

Laravel에는 이미 고급 PHP ActiveRecord 구현인 Eloquent ORM이 있습니다. 관계의 양쪽에 "제약"을 쉽게 적용할 수 있으므로 데이터를 완벽하게 제어하고 ActiveRecord의 모든 편리함을 누릴 수 있습니다. Eloquent는 Fluent의 쿼리 빌더(query-builder)의 모든 메소드를 기본적으로 지원합니다.

Laravel의 "표준" 개발 SMS 인증 코드 전송 기능 수요 시나리오

휴대폰이나 이메일로 보낼 수 있는 "인증 코드" 또는 "메시지 알림"을 ​​보냅니다.

Complete

우선 Laravel의 사양은 Laravel의 "메시지 알림"을 ​​사용하도록 되어 있는데, 여기서는 시나리오를 기반으로 한 "인증 코드"입니다. 이 요구 사항은 거의 모든 소프트웨어 시스템에서 사용됩니다.

알림 장면 만들기

첫 번째 단계는 php artisan make:notification을 사용하여 알림 클래스를 만드는 것입니다. 기본적으로 toMail과 toArray를 통한 세 가지 방법이 있습니다. 확인 코드가 전송되면 제가 하겠습니다. 이 컨트롤 클래스의 이름은 VerificationCode입니다.

그런 다음 인증 코드 데이터 모델을 생성하고 데이터 테이블 마이그레이션을 사용하면 php artisan make:model "VerificationCode" -m을 사용하여 데이터 모델을 빠르게 생성하고 직접 마이그레이션할 수 있습니다.

ThinkSNS+ 마이그레이션은 다음과 같습니다.

두 번째 단계는 데이터 model 클래스를 열고 그 안에 IlluminateNotificationsNotified 특성을 추가하는 것입니다.

코드에서 우리가 추가한 것을 볼 수 있습니다. "소프트 삭제"는 휴대폰 번호나 이메일 주소를 기준으로 인증번호가 전송되기 때문에 내장된 다른 트릭이 필요 없고 "메시지 알림 데이터 테이블"에 기록할 필요도 없으므로 RouteNotificationFor 메소드는 전송해야 하는 계정(휴대폰 번호 또는 이메일 주소)을 직접 반환하도록 선택합니다.

Factory Mode에 참여하고 빠르게

보내세요. 데이터베이스/factories/ModelFactory.php를 열고 알림 데이터 모델에 대한 공장 정의를 추가하세요.

이 방법으로 공장(ZhiyiPlusModelsVerificationCode)을 전달할 수 있습니다. ::class) 팩토리 기능을 통해 빠르게 인증 코드를 생성하고 알림을 보낼 수 있습니다.

인증 코드 데이터 모델에 알림 특성이 추가된 이유는 무엇인가요?

먼저 Laravel에서는 User 모델에 IlluminateNotificationsNotifying trait가 기본적으로 추가되어 있으므로 $user->notify()를 통해 사용자에게 빠르게 알림을 보낼 수 있는데 사양 문서에 그런 문장이 있습니다. :

기억하세요. IlluminateNotificationsNotified 특성은 사용자 모델에만 포함할 수 있습니다.

이것은 Laravel 공식 문서의 원본 문장으로, IlluminateNotificationsNotified가 사용되는 것에만 국한되지 않는다는 것을 의미합니다. 사용자 모델에서.

그래서 검증 코드 모델에 IlluminateNotificationsNotifying을 추가한 것은 Laravel 알림의 올바른 사용과 완전히 일치합니다.

알림 클래스 개발

먼저 데이터 테이블 마이그레이션에는 알림 채널 식별자인 필드 채널이 있습니다. 이 값을 사용하여 인증 코드를 보내는 방법과 이 작업을 결정할 수 있습니다.

우리가 선택한 방법은 채널 값을 직접 반환하는 것입니다. 이 값은 이 알림 채널을 구현하는 한 어떤 값이든 보낼 수 있습니다. 내장되어 있으며 일부 전송 채널은 데이터베이스, 메일 및 nexmo

이메일 인증 코드 전송을 완료합니다

사실 이 단계에서 알림 클래스를 생성할 때 해야 할 일은 거의 없습니다. toMail 메소드가 완성되었으므로 메시지 내용을 직접 수정할 수 있습니다.

SMS 인증 코드 전송 완료

SMS 전송에 overtrue/easy-sms 패키지를 사용합니다. 이것은 An Zhengchao가 개발한 SMS 전송 클라이언트이며 구현도 마찬가지입니다. 훌륭한. (Tucao: 계약 호출 방법에 따라 게이트웨이를 전달하지 않는 등 일부 세부 사항은 문제가 있지만)

먼저 SMS를 사용하여 클라이언트 패키지 작성기 요구 사항 overtrue/easy-sms를 보낸 다음 새 구성/config/sms를 만듭니다. .php 내용은 쉽게 따르세요. 먼저 SMS 홈페이지에 설명을 추가하세요. (기사의 단어 수를 줄이기 위해 Alibaba 구성만 유지하세요.)

다양한 시나리오에 대한 채널 구성을 추가했습니다. 예를 들어 인증 코드 장면 코드는 메신저

가 구성을 읽을 수 있도록

.

그런 다음 AppServiceProvider.php를 열고 레지스터에 다음을 추가합니다.

이 시점에서 Laravel에 EasySms 통합이 완료되었지만 실제 기능은 아직 개발되지 않았습니다.

SMS 발송 채널 개발

왜 개발해야 할까요? 우선, easy-sms는 많은 것을 지원합니다. 각 전송 플랫폼에 대해 별도로 알림 전송 채널 클래스를 개발하는 것을 고려하거나, 우리는 easy-sms를 통해 SMS 알림 전송 채널 클래스를 하나만 개발하도록 선택합니다. SMS 전략. 여러 플랫폼에 인증 코드를 보내는 메커니즘. 먼저, 새로운 app/Notifications/Channels/SmsChannel.php 파일을 생성하세요. Laravel은 생성 기능을 제공하지 않기 때문에, send 메소드를 직접 구현하시면 됩니다. SmsChannel의 내용은 다음과 같습니다.

easy-SMS 기반의 SMS 알림 전송 채널이 완성되었습니다.

개발 시나리오

메시지 보내기

이 부분은 전적으로 easy-sms 개발에 속합니다. 다음 내용으로 새로운 VerificationCodeMessage.php를 만듭니다.

그런 다음 VerificationCode 확인 코드 알림으로 돌아갑니다. 클래스, toSms 메서드를 추가하면 내 코드는 다음과 같습니다.

다양한 인증 코드 채널에 대한 템플릿과 같은 시나리오 구성을 통해 메시지 작성자가 전송에 따라 사용 시나리오의 구성을 결정할 수 있습니다. 게이트웨이.

다시 불평하세요. easy-sms의 계약 설계에도 이 아이디어가 있어야 하는데 실제 게이트웨이가 호출될 때 getContent/getTemplate/getData가 게이트웨이를 전혀 통과하지 못합니다. . .

자, 개발이 완료되었습니다.

인증 코드 보내기

인증 코드 데이터 모델을 생성할 때 "팩토리"에 추가되었으므로 팩토리 기능을 직접 사용할 수 있습니다. 데모 보내기:

완료되었습니다. , easy-sms 아주 좋은 가방이에요.

위 내용은 Laravel에서 SMS 인증코드 전송 기능을 개발하기 위한 '사양'(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP 세션의 개념을 간단한 용어로 설명하십시오.PHP 세션의 개념을 간단한 용어로 설명하십시오.Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsususingauniqueIdStoredInAcookie.here'showtomanagetheMeftically : 1) STARTASESSIONSTART_START () andSTAREDATAIN $ _SESSION.2) RegenerATERATESSESSIDIDAFTERLOGINWITHSESSION_RATERATERATES (True) TopreventSES

PHP 세션에 저장된 모든 값을 어떻게 반복합니까?PHP 세션에 저장된 모든 값을 어떻게 반복합니까?Apr 26, 2025 am 12:06 AM

PHP에서 세션 데이터를 통한 반복은 다음 단계를 통해 달성 할 수 있습니다. 1. Session_start ()를 사용하여 세션을 시작하십시오. 2. $ _session 배열의 모든 키 값 쌍을 통해 Foreach 루프를 통과합니다. 3. 복잡한 데이터 구조를 처리 할 때 is_array () 또는 is_object () 함수를 사용하고 print_r ()를 사용하여 자세한 정보를 출력하십시오. 4. Traversal을 최적화 할 때 페이징을 사용하여 한 번에 많은 양의 데이터를 처리하지 않도록 할 수 있습니다. 이를 통해 실제 프로젝트에서 PHP 세션 데이터를보다 효율적으로 관리하고 사용하는 데 도움이됩니다.

사용자 인증에 세션을 사용하는 방법을 설명하십시오.사용자 인증에 세션을 사용하는 방법을 설명하십시오.Apr 26, 2025 am 12:04 AM

이 세션은 서버 측 상태 관리 메커니즘을 통해 사용자 인증을 인식합니다. 1) 세션 생성 및 고유 ID의 세션 생성, 2) ID는 쿠키를 통해 전달됩니다. 3) ID를 통해 서버 저장 및 세션 데이터에 액세스합니다. 4) 사용자 인증 및 상태 관리가 실현되어 응용 프로그램 보안 및 사용자 경험이 향상됩니다.

PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.Apr 26, 2025 am 12:03 AM

tostoreauser'snameinaphpsession, startSessionstart_start (), wathsignthenameto $ _session [ 'username']. 1) useSentess_start () toinitializethesession.2) assimeuser'snameto $ _session [ 'username']

PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?Apr 25, 2025 am 12:16 AM

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP의 세션 관련 문제를 어떻게 디버그합니까?PHP의 세션 관련 문제를 어떻게 디버그합니까?Apr 25, 2025 am 12:12 AM

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

session_start ()가 여러 번 호출되면 어떻게됩니까?session_start ()가 여러 번 호출되면 어떻게됩니까?Apr 25, 2025 am 12:06 AM

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

PHP에서 세션 수명을 어떻게 구성합니까?PHP에서 세션 수명을 어떻게 구성합니까?Apr 25, 2025 am 12:05 AM

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList

SecList

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

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구