ホームページ >バックエンド開発 >PHPチュートリアル >PHP が WeChat ミニ プログラムでのセッションの問題を処理する方法
近年、WeChat ミニ プログラムは世界中で人気があり、多くの企業や個人開発者にとって選ばれるプラットフォームとなっています。ミニプログラムの開発では、ユーザーのログイン状態をミニプログラムにどのように保存するかというセッションの問題に遭遇することがよくあります。この問題は Web サイト開発者にとって馴染みのあるものではありませんが、小規模なプログラムでは少し異なります。この記事では、PHP を使用して WeChat ミニ プログラムのセッションの問題を解決する方法を紹介します。
1. ミニ プログラムのログイン プロセスの概要
ミニ プログラムのログイン プロセスは Web サイトのログイン プロセスと似ており、次のステップに分かれています:
2. WeChat ミニ プログラムにおけるセッションの問題
ウェブサイト開発では、Cookie またはセッション テクノロジーを使用してユーザーのログイン ステータスを保存できますが、ミニ プログラムでは使用できません。テクノロジー。 WeChat アプレットは、Web サイト開発における Cookie やセッションのようなログイン状態を保存する仕組みを提供せず、トークンに似た仕組みを使用します。ユーザーの ID が正常に検証された後、ミニ プログラムのバックエンドはトークン文字列を生成し、それをフロントエンドに返します。フロントエンドはトークンをローカルに保存し、各リクエストでトークンを ID 認証情報としてバックエンドに送信する必要があります。 。
ミニ プログラムは異なるデバイスで同じアカウントにログインできるため、このトークンはタイムリーである必要があり、有効期限が切れた後に再度ログインする必要があります。同時に、他人がトークンを偽造するのを防ぐために、トークンを暗号化および復号化する必要があります。
3. PHP が WeChat ミニ プログラムでのセッションの問題を処理する方法
トークンを生成するには、A などのさまざまな方法があります。タイムスタンプとユーザー ID を使用して文字列を連結し、暗号化できます。 PHP では、openssl_encrypt 関数と openssl_decrypt 関数を使用して AES 暗号化と復号化を実行できます。
トークン生成コード:
function generateToken($userId) { $time = time(); $str = $userId . '|' . $time; $key = 'your_secret_key'; $iv = 'your_iv'; $encrypted = openssl_encrypt($str, 'AES-256-CBC', $key, 0, $iv); return $encrypted; }
トークン復号化コード:
function decryptToken($token) { $key = 'your_secret_key'; $iv = 'your_iv'; $decrypted = openssl_decrypt($token, 'AES-256-CBC', $key, 0, $iv); return $decrypted; }
ミニ プログラムのフロント エンドには、ログインするための情報が検証のためにバックエンド サーバーに送信されます。検証が成功すると、トークンがフロントエンドに返されます。フロントエンドはトークンをローカルに保存する必要があります。
ミニ プログラム ログイン コード:
wx.request({ url: 'your_login_url', method: 'POST', data: { username: 'your_username', password: 'your_password' }, success: function(res) { var token = res.data.token; wx.setStorageSync('token', token); } });
バックエンドは、各リクエストでトークンが有効かどうかを確認し、データをリクエストします。トークンを検証するときは、まずトークンを復号し、トークンに保存されている時間が有効範囲内であるかどうかを確認する必要があります。
トークン検証コード:
function verifyToken() { $token = $_SERVER['HTTP_TOKEN']; $key = 'your_secret_key'; $iv = 'your_iv'; $decrypted = openssl_decrypt($token, 'AES-256-CBC', $key, 0, $iv); list($userId, $time) = explode('|', $decrypted); if (time() - $time > 3600) { // Token已过期 return false; } // 验证Token是否有效 $query = mysql_query("SELECT * FROM `user` WHERE `id` = '$userId'"); if ($row = mysql_fetch_array($query)) { return true; } else { return false; } }
各リクエストでは、トークン情報を HTTP リクエスト ヘッダーに追加する必要があります:
wx.request({ url: 'your_api_url', method: 'POST', header: { 'content-type': 'application/json', 'token': wx.getStorageSync('token') }, success: function(res) { console.log(res.data); } });
4. 概要
これこの記事では、PHP の WeChat ミニ プログラムでのセッションの問題に対処する方法を紹介します。ミニプログラムにはWebサイト開発におけるCookieやSessionのようなログイン状態を保存する仕組みはありませんが、トークンのような形で実装することができます。ミニプログラムのログイン処理では、ユーザー認証、セッション管理、リクエスト認証などの機能を実現するために、フロントエンドとバックエンドの連携が必要です。この記事の導入により、読者は PHP での小さなプログラム セッションの問題を処理する方法を習得したと思います。この記事が皆さんのお役に立てば幸いです。
以上がPHP が WeChat ミニ プログラムでのセッションの問題を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。