So überprüfen Sie eine Telefonnummer per SMS

Was Sie erstellen werden

Einführung

In der vorherigen Episode habe ich über die Vorbereitung Ihrer Anwendung für SMS mit Twilio, einem häufig verwendeten SMS-Dienst, berichtet. Im heutigen Tutorial zeige ich Ihnen, wie Sie die Telefonnummern der Benutzer überprüfen, bevor Sie eine große Anzahl von Texten übertragen und Ihre Kosten in die Höhe treiben.

Bevor wir beginnen, möchte ich Sie dazu ermutigen, Fragen und Feedback in den Kommentaren zu posten. Wenn Sie mit meinen zukünftigen Envato Tuts + -Tutorials und anderen Serien mithalten möchten, besuchen Sie bitte meine Instructor-Seite oder folgen Sie @lookahead_io.

Den Prozess skizzieren

Nachdem der Benutzer seine Telefonnummer angegeben hat, möchten wir einige einfache Schritte ausführen:

  • Generieren Sie einen eindeutigen vierstelligen Code.
  • Speichern Sie ihre Zellennummer und den vierstelligen Code in unserer Datenbank (oder verschlüsseln Sie den Code lokal als verborgene Formularvariable auf der Seite).
  • Senden Sie einen Text mit dem vierstelligen Code an die ungeprüfte Nummer.
  • Zeigen Sie ein Formular an, das den Benutzer auffordert, den erhaltenen Code anzugeben.
  • Stellen Sie sicher, dass die Codes übereinstimmen.
  • Bestimmen Sie die Nummer in der Datenbank als verifiziert.

Die Kontaktseite des Benutzers

In Meeting Planner kann jeder Benutzer mehrere Kontaktmethoden hinzufügen, z. Skype, Telefon usw. Jede Zellennummer muss überprüft werden, damit sie für SMS-Benachrichtigungen verwendet werden kann.

Die dritte Zeile unten zeigt ein Kontrollkästchen, auf das sie klicken können, um die Bestätigung anzufordern:

Wenn Sie auf diese Option klicken, wird der Benutzer auf das Verzeichnis übertragen actionVerify () Controller unten; Beachten Sie, dass es sie zur sonst Zuerst blockieren, weil sie noch keinen Code übermittelt haben:

öffentliche Funktion actionVerify ($ id) $ model = $ this-> findModel ($ id); if ($ model-> load (Yii :: $ app-> request-> post ())) … else $ canRequest = $ model-> canRequest (); if ($ canRequest) // Sende einen Text an diese Nummer $ model-> requestCode (); $ this-> render zurückgeben ('verify', ['model' => $ model,]);  else Yii :: $ app-> getSession () -> setFlash ('error', $ canRequest); $ this-> redirect zurückgeben (['/ user-contact']); 

Die Methode canRequest () prüft, ob sie wiederholt oder zu häufig nach Codes gefragt haben:

public function canRequest () if ($ this-> request_count)request_at> = 60) return true;  else return Yii :: t ('frontend', 'Sorry, Sie müssen zwischen den Anfragen eine Minute warten.');  else return Yii :: t ('Frontend', 'Sie haben die maximale Anzahl von Versuchen überschritten.'); 

Ich lasse sie zwischen den Versuchen, Missbrauch zu reduzieren, eine Minute warten.

Übermittlung des Bestätigungscodes

Wenn erlaubt, ruft es an Anfrage Code():

öffentliche Funktion requestCode () $ this-> verify_code = rand (0,9999); $ this-> request_at = time (); $ this-> request_count + = 1; $ this-> update (); $ sms = neue SMS; $ sms-> send ($ this-> info, Yii :: t ('frontend', 'Bitte kehren Sie zur Site zurück und geben Sie code') ein, ['code' => sprintf ("% 04d", $ this.) -> verify_code)])); 

Dies bewirkt Folgendes:

  • Erzeugt einen vierstelligen Zufallscode.
  • Es zeichnet den letzten Zeitpunkt (Unix-Sekunden) auf, zu dem eine Überprüfungsanfrage gestellt wurde.
  • Es erhöht die Überprüfungsversuche für diese Nummer.
  • Und es speichert alles in der Datenbank.
  • Dann überträgt es einen Text mit dem Code, der wie das Bild unten aussieht.

Nachdem der Code angefordert, hinter den Kulissen in der Datenbank gespeichert und an den Benutzer übertragen wurde, lädt er das folgende Formular, in dem der Code abgefragt wird:

Überprüfung des Kodex

Wenn der Benutzer versucht, einen Code zu senden, wird der obere Teil von ausgeführt actionVerify ():

öffentliche Funktion actionVerify ($ id) $ model = $ this-> findModel ($ id); if ($ model-> load (Yii :: $ app-> request-> post ())) // Bestätigungsformular anzeigen $ model-> verify = Yii :: $ app-> request-> post () [' UserContact '] [' Verify ']; if (strval ($ model-> verify_code) == strval ($ model-> verify)) $ model-> status = UserContact :: STATUS_VERIFIED; $ model-> update (); Yii :: $ app-> getSession () -> setFlash ('success', Yii :: t ('frontend', 'Vielen Dank, Ihre Nummer ist bestätigt.')); $ this-> redirect zurückgeben (['/ user-contact']);  else Yii :: $ app-> getSession () -> setFlash ('error', Yii :: t ('frontend', 'Sorry, das ist falsch. Bitte fordern Sie einen neuen Code an.')); $ this-> redirect zurückgeben (['/ user-contact']);  else …

Es wird geprüft, ob die Codes übereinstimmen. Wenn dies der Fall ist, wird die Datenbank so aktualisiert, dass die Anzahl bestätigt wurde. Und es sagt dem Benutzer:

Wenn nicht, wird eine Fehlermeldung angezeigt:

Versuch es selber

Wenn Sie dies in Aktion sehen möchten, können Sie sich bei Simple Planner oder Meeting Planner (was bei einem sozialen Konto wie Facebook oder Google ganz einfach ist) anmelden und eine Telefonnummer hinzufügen. Klicken Sie dann in der Liste auf das Häkchen. Das ist es.

Einpacken

Wenn Ihre Anwendung viele Textnachrichten sendet, ist dies natürlich ein beachtlicher Kostenfaktor und Sie möchten den Missbrauch begrenzen. Das beginnt mit dem Einrichten einer Firewall gegen ungültige Nummern oder gültige Nummern, die sich nicht im Besitz des Betrügers befinden.

Ich hoffe, Sie fanden das hilfreich. Wenn Sie Fragen oder Anregungen haben, posten Sie diese bitte in den Kommentaren. Wenn Sie mit meinen zukünftigen Envato Tuts + -Tutorials und anderen Serien mithalten möchten, besuchen Sie bitte meine Instructor-Seite oder folgen Sie @lookahead_io. Schauen Sie sich unbedingt meine Startserie und den Meeting Planner an.

ähnliche Links

  • Vorbereitung auf Textnachrichten (Envato Tuts +)
  • Programmierung mit der Yii2-Serie (Envato Tuts +)
  • Yii2 Developer Exchange