ホームページ  >  記事  >  バックエンド開発  >  セッション ID によるセッション共有とログイン検証を実装するための PHP コード_PHP チュートリアル

セッション ID によるセッション共有とログイン検証を実装するための PHP コード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:19:01747ブラウズ

まず、このメカニズムの目的について説明します。これまで、Battlefield はこのメカニズムに 2 つの用途があることを認識していました。

まず、マルチサーバー共有セッションの問題ですが、これはユーザーの数が増えると誰もが理解できるはずです。 Web サイトが大きすぎる場合は、ログイン用の専用サーバーなどのサーバー クラスターが使用されます。ユーザーがログイン サーバーを介してログインした後、ログイン サーバーはユーザーのログイン情報セッションを保存しますが、ムービー サーバーなどの他のアクセスされたサーバーにはこのセッションがありません。その場合は、ユーザーの一意の識別子を介してこのセッションを共有する必要があります。 session - 特定のセッション 共有についてはこの記事の範囲外です。情報はご自身で確認してください。

2 番目の目的は、同じユーザーの異なるセッションを検証することですが、これは理解するのがさらに困難です。言い換えると、ユーザーがブラウザー経由で接続を要求せず、ソケットまたはその他の方法でデータを要求する場合、まずユーザーのログイン検証を実行する必要があります。検証が成功した後、セッション ID を発行します。彼は、リクエストを行うたびにこのセッション ID を保持します。このセッション ID を使用して、セッションがすでに存在するかどうかを判断します。セッションが存在する場合は、ユーザーがログインしていると見なされます...

最初の質問については、これを実現するには、セッション ID をデータベースに保存できます。この方法は比較的安全で広く使用されていますが、これは私たちの議論の範囲ではありません

2 番目の質問は実際には非常に簡単です

まず、セッション ID は検証中に生成されます。

コードをコピーします コードは次のとおりです:

Session_start();
$sessionId = session_id();//セッション ID を取得します
//セッションをクライアントに配信します
....
?> ;

クライアントはデータをリクエストするために sessionid 変数を運びます
コードをコピーします コードは次のとおりです:

Session_id('$sessionid');//このとき、session_id()関数に注意してください
Session_start();//この関数はsession_id()の後にある必要があります

?>
この時点で、セッションはすでにログイン認証中のセッションになっています。
注: sessionServer.php で session_start(); 関数を自動的に開始する thinkphp やその他のフレームワークを使用している場合は、最初に session_destory() 関数を呼び出してセッションをクリアする必要があります。

http://www.bkjia.com/PHPjc/325408.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/325408.html技術記事まずこのメカニズムの目的について話しましょう。これまで、Battlefield はこのメカニズムに 2 つの用途があることを認識していました。まず、マルチサーバー共有セッションの問題です。これは誰もが理解できるはずです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。