http プロトコルはステートレスであり、リクエストごとにサーバーはユーザーを区別できません。 PHP セッション制御は、ユーザーにキー (暗号化された セッション文字列) を提供します。これは、ユーザーの ID の証明でもあり、このキーで開くことができるボックス (データベース、メモリ データベース、またはファイル) を保存します。ボックスにはユーザーのさまざまな 変数情報が含まれています。
この鍵はどこですか?
1、URL クエリ 文字列
2、ブラウザ クッキー
<?php //page1.php 启动一个会话并注册一个变量session_start(); $_SESSION['user_var'] = "hello,codekissyoung!"; //这里的可以将$_SESSION理解为用户的箱子,实际的实现是php在服务器端生成的小文件 ?>
<?php //page2.php session_start(); echo $_SESSION['user_var']; //通过钥匙访问自己的箱子内的变量 $_SESSION['user_var'] = "bey,codekissyoung!";
<?php//page3.php 销毁钥匙,一般在用户注销时,访问page3.php文件session_start(); session_destroy();?>
を使用した従来のPHPセッション 質問する、キーはどこにありますか?ユーザーにキーを与える操作を見ませんでしたか?
この操作は、PHP によってバックグラウンドで行われます。page1.php にアクセスしてプログラム session_start(); を実行すると、PHP はその時点の条件 (ユーザー IP、ブラウザー番号、時刻、など) 変数 http 応答がクライアントに返された後、PHPSESSID はブラウザーの Cookie にすでに保存されており、このドメイン名に再度アクセスするたびに、PHPSESSID がサーバーに送信されます。この PHPSESSID が、ここで話しているユーザー キーです。
もう一つ質問ですが、この PHPSESSID のセキュリティは、盗まれやすいですか、偽造されやすいですか、改ざんされやすいですか?
HTTPS を使用すると改ざんを防ぐことができます。 PHPSESSID は使用せず、偽造を防ぐためにユーザーの秘密キーを生成します。盗難されやすいかどうかについては、実際には研究されていません。たとえば、コンピュータがインターネットに接続されており、ハッカーがコンピュータに侵入したとします。
设置cookiesetCookie('key','value',time()+3600); 删除cookiesetCookie('key','',time()-1);
シングルサインオン: 複数のサブシステムがユーザー認証システムを共有し、そのうちの1つにログインすると、すべてのサブシステムにアクセスできます。
次のシナリオを想像してください: サーバー A と B の PHP 環境が同じであると仮定します。ユーザーはサーバー A でキーを取得し、そのキーを使用してサーバー B にアクセスしました。ユーザーはサーバー B を知っていますか?
明らかにそうではありません。サーバー A によって生成されたキーはサーバーによって認識されません。
解決策: ユーザーが A または B にアクセスするかどうかに関係なく、生成されたキーを C (同じデータベースまたはキャッシュ システム) に保存します。ユーザーが再度 A または B にアクセスすると、A と B の両方が C: ユーザーのキーを尋ねます。 . 鍵は合っていますか?正しければ、ユーザーはAまたはBに保管されているボックスを使用できるようになります。
以上がPHPセッションコントロールのサンプルコードの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。