PHP が WeChat ミニ プログラムでのセッションの問題を処理する方法

WBOY
リリース: 2023-06-02 15:42:01
オリジナル
2488 人が閲覧しました

近年、WeChat ミニ プログラムは世界中で人気があり、多くの企業や個人開発者にとって選ばれるプラットフォームとなっています。ミニプログラムの開発では、ユーザーのログイン状態をミニプログラムにどのように保存するかというセッションの問題に遭遇することがよくあります。この問題は Web サイト開発者にとって馴染みのあるものではありませんが、小規模なプログラムでは少し異なります。この記事では、PHP を使用して WeChat ミニ プログラムのセッションの問題を解決する方法を紹介します。

1. ミニ プログラムのログイン プロセスの概要

ミニ プログラムのログイン プロセスは Web サイトのログイン プロセスと似ており、次のステップに分かれています:

  1. ユーザーはミニ プログラム プログラムを開き、ログイン ページに入ります。
  2. ユーザーはアカウント番号とパスワードを入力し、[ログイン] ボタンをクリックします。
  3. ミニ プログラムフロントエンドはアカウント番号とパスワードをミニ プログラムのバックエンド サーバーに送信します;
  4. ミニ プログラムのバックエンドはアカウント番号とパスワードを受信し、ユーザー ID が正しいかどうかを検証します;
  5. 本人確認が成功した場合、ユーザーのセッション情報がサーバーに保存され、セッション ID がフロントエンドに送り返されます;
  6. フロントエンドはセッション ID を保存し、各リクエストにセッション ID を含めますID 認証として;
  7. バックエンドはセッション ID が有効かどうかを検証し、有効な場合はリクエスト データを返します。

2. WeChat ミニ プログラムにおけるセッションの問題

ウェブサイト開発では、Cookie またはセッション テクノロジーを使用してユーザーのログイン ステータスを保存できますが、ミニ プログラムでは使用できません。テクノロジー。 WeChat アプレットは、Web サイト開発における Cookie やセッションのようなログイン状態を保存する仕組みを提供せず、トークンに似た仕組みを使用します。ユーザーの ID が正常に検証された後、ミニ プログラムのバックエンドはトークン文字列を生成し、それをフロントエンドに返します。フロントエンドはトークンをローカルに保存し、各リクエストでトークンを ID 認証情報としてバックエンドに送信する必要があります。 。

ミニ プログラムは異なるデバイスで同じアカウントにログインできるため、このトークンはタイムリーである必要があり、有効期限が切れた後に再度ログインする必要があります。同時に、他人がトークンを偽造するのを防ぐために、トークンを暗号化および復号化する必要があります。

3. PHP が WeChat ミニ プログラムでのセッションの問題を処理する方法

  1. トークンの生成と暗号化

トークンを生成するには、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; }
ログイン後にコピー
  1. ミニ プログラムのログイン処理

ミニ プログラムのフロント エンドには、ログインするための情報が検証のためにバックエンド サーバーに送信されます。検証が成功すると、トークンがフロントエンドに返されます。フロントエンドはトークンをローカルに保存する必要があります。

ミニ プログラム ログイン コード:

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); } });
ログイン後にコピー
  1. トークンの検証と復号化

バックエンドは、各リクエストでトークンが有効かどうかを確認し、データをリクエストします。トークンを検証するときは、まずトークンを復号し、トークンに保存されている時間が有効範囲内であるかどうかを確認する必要があります。

トークン検証コード:

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!