Cum să verificați un număr de telefon prin SMS

Ce veți crea

Introducere

În episodul anterior, am scris despre pregătirea aplicației dvs. pentru SMS utilizând Twilio, un serviciu de mesagerie folosit în mod obișnuit. În tutorialul de astăzi, vă voi arăta cum să verificați numerele de telefon ale utilizatorilor înainte de a transmite un volum mare de texte și de a vă alimenta costurile.

Înainte de a începe, vreau să vă încurajez să postați întrebări și comentarii în comentariile. Dacă doriți să respectați viitoarele tutoriale Envato Tuts + și alte serii, vizitați pagina mea de instructor sau urmați @lookahead_io.

Descrierea Procesului

După ce utilizatorul le-a furnizat numărul de telefon, dorim să efectuăm o mână de pași simpli:

  • Generați un cod unic de patru cifre.
  • Păstrați numărul lor de celule și codul din patru cifre din baza noastră de date (sau codificați local codul ca o variabilă de formă ascunsă pe pagină).
  • Trimiteți un text către numărul neconfirmat cu codul din patru cifre.
  • Afișați un formular prin care solicitați utilizatorului să furnizeze codul primit.
  • Verificați potrivirea codurilor.
  • Desemnați numărul verificat în baza de date.

Pagina de contact a utilizatorului

În Planificatorul de întâlniri, fiecare utilizator poate adăuga mai multe metode de contact, de ex. Skype, telefon, etc. Fiecare număr de telefon trebuie verificat pentru a fi utilizat pentru notificări prin SMS.

Al treilea rând de mai jos prezintă o casetă de selectare pe care pot face clic pentru a solicita verificarea:

Dacă faceți clic pe care transferă utilizatorul la actionVerify () controler de mai jos; rețineți că le duce la altfel blocați la început deoarece nu ați trimis încă un cod:

funcția publică funcțiaVerificați ($ id) $ model = $ this-> findModel ($ id); dacă ($ model-> încărcați (Yii :: $ app-> request-> post ())) ... altceva $ canRequest = $ model-> canRequest (); dacă ($ canRequest) / trimite un text la acest număr $ model-> requestCode (); returnați $ this-> render ('verificați', ['model' => $ model,]);  altceva Yii :: $ app-> getSession () -> setFlash ('error', $ canRequest); returnează $ this-> redirect (['/ user-contact']); 

Metoda canRequest () verifică dacă au solicitat coduri în mod repetat sau prea frecvent:

funcția publică canRequest () if ($ this-> request_countrequested_at> = 60) return true;  else return Yii :: t ('frontend', 'Ne pare rău, trebuie să așteptați un minut între cereri.');  altceva return Yii :: t ('frontend', 'Ai depășit numărul maxim de încercări.'); 

Le fac să aștepte un minut între încercările de a reduce abuzul.

Transmiterea Codului de verificare

Dacă este permis, se apelează requestCode ():

funcția publică funcțiaCode () $ this-> verify_code = rand (0,9999); $ this-> requested_at = time (); $ This-> request_count + = 1; $ This-> actualizare (); $ sms = SMS-uri noi; $ sms-> transmite ($ this-> info, Yii :: t ('frontend', 'Reveniți pe site și introduceți codul', ['code' => sprintf -> verify_code)])); 

Acest lucru face următoarele:

  • Generă un cod aleatoriu format din patru cifre.
  • Înregistrează ultimul moment în timp (unix secunde) că a fost făcută o solicitare de verificare.
  • Mărește încercările de verificare pentru acest număr.
  • Și stochează toate acestea în baza de date.
  • Apoi, acesta transmite un text cu codul care arată ca imaginea de mai jos.

După ce a solicitat codul, salvându-l în baza de date în spatele scenei și transmițând codul utilizatorului, acesta încarcă următorul formular care solicită codul:

Verificarea codului

Când utilizatorul încearcă să trimită un cod, rulează partea superioară a lui actionVerify ():

funcția publică funcțiaVerificați ($ id) $ model = $ this-> findModel ($ id); dacă $ model-> încărcați (Yii :: $ app-> request-> post ())) // afișați formular de verificare $ model-> verificare = Yii :: $ app-> request-> post () UserContact '] [' verifica ']; dacă (strval ($ model-> verify_code) == strval ($ model-> verifica)) $ model-> status = UserContact :: STATUS_VERIFIED; $ Model-> actualizare (); Yii :: $ app-> getSession () -> setFlash ('succes', Yii :: t ('frontend', 'Mulțumesc, numărul dvs. este confirmat')); returnează $ this-> redirect (['/ user-contact']);  altceva Yii :: $ app-> getSession () -> setFlash ('error', Yii :: t ('frontend', 'Ne pare rău, este incorect. returnează $ this-> redirect (['/ user-contact']);  altceva ...

Verifică dacă codurile se potrivesc. În caz contrar, actualizează baza de date pentru a reflecta faptul că numărul a fost verificat. Și le spune utilizatorului:

Dacă nu, afișează un mesaj de eroare:

Incearca-l tu insuti

Dacă doriți să vedeți acest lucru în acțiune, vă puteți înscrie la Simple Planner sau Planificatorul întâlnirilor (ceea ce este ușor cu un cont social ca Facebook sau Google) și adăugați un număr de telefon. Apoi faceți clic pe marcajul din lista pe care o veți vedea. Asta e.

Înfășurarea în sus

Evident, dacă aplicația dvs. trimite o mulțime de mesaje text, este un cost notabil al afacerii și doriți să limitați abuzul. Aceasta începe cu configurarea unui paravan de protecție împotriva numerelor nevalide - sau a unor numere valide care nu sunt proprietatea impostorului.

Sper că ați găsit acest lucru util. Dacă aveți întrebări sau sugestii, vă rugăm să le postați în comentarii. Dacă doriți să respectați viitoarele tutoriale și alte serii Envato Tuts +, vizitați pagina mea de instructor sau urmați @lookahead_io. În mod sigur, verificați seria de pornire și Planificatorul de întâlniri.

Link-uri conexe

  • Pregătirea pentru mesajele text (Envato Tuts +)
  • Programare cu seria Yii2 (Envato Tuts +)
  • Yii2 Developer Exchange
Cod