ホームページ > バックエンド開発 > PHPチュートリアル > PHP セッションをもう一度見てみる

PHP セッションをもう一度見てみる

WBOY
リリース: 2016-06-23 13:59:07
オリジナル
989 人が閲覧しました

以前はセッションと Cookie についてまだ漠然としていましたが、今日 Yii フレームワークを使用したときにエラー session_regenerate_id(): Session object destroy failed に遭遇したので、セッションの動作メカニズムをもう一度調べてみました。


W3Cschool から取得したセッションの定義:

アプリケーションを実行するときは、アプリケーションを開いて変更を加えてから閉じます。それはセッションによく似ています。コンピューターはあなたが誰であるかを知っています。ユーザーがアプリケーションをいつ開始し、いつ終了するかを認識します。しかし、インターネットには問題があります。サーバーはユーザーが誰で何をしているのかを知りません。これは、HTTP アドレスが状態を維持しないためです。

PHP セッションは、ユーザー情報 (ユーザー名、購入したアイテムなど) を後で使用できるようにサーバーに保存することで、この問題を解決します。ただし、セッション情報は一時的なものであり、ユーザーがサイトを離れると削除されます。情報を永続的に保存する必要がある場合は、データをデータベースに保存できます。

セッションは、訪問者ごとに一意の ID (UID) を作成し、この UID に基づいて変数を保存することで機能します。 UID は Cookie に保存されるか、URL を通じて渡されます。

まず、セッションのライフサイクルを見てみましょう。これはセッションを理解するために非常に重要です。

1. セッションはいつ作成されますか?

簡単に言うと、セッションはユーザーが初めてサーバーにアクセスするときに作成されます。セッションはphp、jsp、aspなどのWeb言語によって作成されます。静的なHTMLページにアクセスする場合は作成されません。 。 PHP を例として考えてみましょう:

a) ユーザーがこの ID は一意であり、ユーザーごとに異なります。

b) このセッション ID は PHP の $_SESSION 変数に保存され、ユーザーのブラウザに Cookie を設定することもできます。

c) その後、ユーザーが Web サイトの他のページにジャンプするときは、この Cookie に保存されているセッション ID をブラウザーに伝えるだけで済み、サーバーはこのセッション ID に対応する保存された情報を取り出します。ユーザーが誰であるかを知ることができ、ページにはユーザーに関するこの情報を表示することもできます。

d) セッションの作成後、ユーザーのショッピング カート内の商品情報の保存など、他のユーザー関連情報を保存できます。

つまり、ユーザーが Web サイトにアクセスするとき、どのように Web サイトにジャンプしたかに関係なく、通常は (セッションの有効期限があまりにも早く切れない限り) 最初から最後まで同じセッションにいます。 PHP の session_id() 関数は、現在の session_id 情報を確認できます。 Web サイトには同時に多くのユーザーがアクセスできるため、PHP はユーザーごとに一意の session_id を生成します。各ユーザーは独立したプロセスによって処理されるため、これは相互に干渉しません。ユーザー A が配置されているプロセスは、セッションが期限切れになるまで A の session_id を保存します。

つまり、セッションは通常、ユーザーが Web サイトにログインするときにセットアップされ、ユーザーがログアウトするときに閉じるかクリアされます (閉じるかクリアするかはビジネス ニーズによって異なります)。

2. セッションの有効期限はいつですか?

a) セッションの有効期限。サーバーは、長期間非アクティブであったセッションをサーバーのメモリから消去し、セッションは無効になります。 Tomcat のセッションのデフォルトの有効期限は 20 分です。

b) Session の無効化メソッドを呼び出します。


参考: http://www.w3school.com.cn/php/php_sessions.asp

次に、一般的に使用されるいくつかの PHP セッション関連関数:


session_start? 新しいセッションを開始するか、既存のセッションを再開しますか? セッションを開始します

Session_id ? 現在のセッション ID を取得および/または設定します セッション ID を取得します
Session_status ? 現在のセッション ステータスを返します。有効ですが、存在しません。

PHP_SESSION_ACTIVE

セッションが有効で、セッションが存在する場合
  • session_regenerate_id ? 現在のセッションを再割り当てします session_unset ?セッション変数 現在のセッションに保存されているすべての変数を削除します
  • 詳細については、以下を参照してください: http://www.php.net/manual/en/ref.session.php




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