はじめに
登録時に SMS 認証コードが必要になることがよくありますが、この記事ではそのアイデアと具体的な実装について記録します。
SMS 検証プラットフォームは Yunpian を使用し、SMS 検証コードは thinkphp を使用して生成されます。
感想
1. ユーザーは携帯電話番号を入力し、SMS 認証コードの取得を要求します。
2. thinkphp は SMS 検証コードを生成して保存し、他のパラメーターとともにリクエストを Yunpian に送信します。
3. Yunpian は指定された携帯電話番号にテキスト メッセージ確認コードを送信します。
4. ユーザーは SMS 認証コードを入力します。
5. thinkphp は、検証コードが正しいかどうか、および検証コードの有効期限が切れているかどうかの 2 つの条件に基づいて検証に合格するかどうかを判断します。
コードの実装
検証インターフェース
インターフェースアドレス: https://sms.yunpian.com/v1/sms/send.json。
postman を使用して、apikey、mobile、text の 3 つの必要なパラメータを入力します。
phpがhttp/httpsリクエストを開始します
PHPのcurl関数を使用してhttpsリクエストを開始し、パラメータapikey、mobile、textを取り込みます。
ランダムなSMS認証コードを生成します
デフォルトでは、4 桁のランダムな SMS 確認コードが生成されます。
統合
データベースに新しいテーブル sun_smscode を作成します:
認証SMS認証コード
SMS 認証コードの有効期限が切れているかどうか、および SMS 認証コードが正しいかどうかを確認してください。
改善点
SMS爆撃を防ぐため、SMS認証コードの取得をリクエストする際に画像認証コードを追加する必要があります。
thinkphp には画像検証コードを生成する機能が用意されています。検証コードの生成、更新、検証を実装してみましょう。
画像検証コードを生成して更新します
この関数の対応する URL が http://localhost/owner-bd/index.php/Home/CheckCode/getPicCode であるとします。すると、画像検証コードのアドレスはこの URL になります。ページ画像タグの。
認証画像認証コード
上記の方法では、実装が非常に簡単な thinkphp が提供する check メソッドを使用しました。ただし、検証の詳細を取得したい場合は、方法がありません。たとえば、認証コードが間違っている場合、認証コードがタイムアウトした、認証コードが間違って入力された、認証コードが使用されたなどの可能性があります。必要に応じて、thinkphp の検証コード クラスを書き換えたり、thinkphp の check メソッドを書き換えたりできます。
フロントエンドとバックエンドを完了
バックエンドの変更
画像検証コード関数を確認し、呼び出される関数に変更します:
SMS認証コードを取得する関数の先頭に、認証に合格した後にのみリクエストがYunpianに送信されるように、画像認証コードを呼び出す関数を追加します。
フロントエンドコアコード
最適化
上記のコードのセキュリティはあまり良くありません。ツールを使用してフロントエンド検証をバイパスできます。この問題を回避するには、checkPicCode 関数と checkSMSCode 関数でマークするセッション値を追加します。
最後のステップでは、データベースにユーザーを追加するときに、まず両方のセッション値が true であるかどうかを確認し、両方が true の場合に追加します。
実績
追記
将来役立つかもしれないコード:
上記は、編集者が紹介した SMS 認証登録の Thinkphp 実装です。ご質問があれば、メッセージを残してください。編集者がすぐに返信します。スクリプト ハウス Web サイトをサポートしてくださった皆様にも感謝いたします。