1

session変数のスコープは何$_SESSION['']ですか?たくさんのウェブページ調査を次々とつなぎ合わせた場合session variable、一定の時間が経過すると期限切れになりますか、それともブラウザを閉じない限り存在しますか?コンピューターを休止状態にするとどうなりますか?

休止状態の後にセッション変数を失ったようですが、それが問題なのか、それとも他の問題があるのか​​わかりません。

4

3 に答える 3

2

セッション全体(単一の変数だけでなく)は、さまざまな理由で継続または失われる可能性があります。

デフォルトの構成では、ブラウザがセッションを識別するCookieを削除するため、ブラウザを閉じるとセッションが「失われる」ことを意味します。セッションガベージコレクションが削除するまで、サーバー上のどこかにあります。そのため、PHPは最近使用されていないブラウザを削除するため、長時間アイドル状態のブラウザでもセッションが失われる可能性があります。

構成を確認してください。特に、セッションをより長く維持する必要がある場合は、「session.gc_maxlifetime」と「session.cookie_lifetime」をニーズに合わせて調整することをお勧めします。

于 2013-03-14T19:22:36.600 に答える
1

セッション変数は期限切れになりません。セッションはsession_gc.maxlifetime、およびその他の構成オプションに従って期限切れになります。

セッションはブラウザーに関連付けられていません。ただし、ブラウザーは、サーバーが以前のセッションを再開するために必要な情報をサーバーに送信しないことを選択する場合があります。これは通常、ブラウザーがすべての Cookie をセッション Cookie として扱う場合に発生します。

このコンテキストでのセッション Cookieという用語は、セッション ID またはセッション変数を保持する Cookie を意味するものではありません。むしろ、ブラウザーが閉じられると (つまり、ブラウザーの前のユーザー セッションが終了すると) すぐに消える Cookie です。

于 2013-03-14T19:23:29.703 に答える
1

以下に依存します。

  • Cookie の有効期間は、「ブラウザが閉じるまで」を意味する0 はずですが、firefox / mozilla は (「セッションの復元」機能により) 「永久」と見なす傾向があります(これはセキュリティ上の懸念であるため、ID を再生成する必要があります)。空のセッション配列を受信した場合)。つまり、ユーザーエージェントに依存します。
  • 古いセッションの構成されたガベージ コレクション。Web サーバーにこれを処理させることができることに注意してください (古いデータのクリーンアップの X パーセントの変更)。ただし、一部のパッケージ (たとえば、Debian 上の PHP) は単に cronjob を使用して古いセッションを削除するためsession.gc_maxlifetime、別のサーバー全体の設定が原因でカスタム設定が無視されると、大混乱を招く可能性があります。

つまり、UA が Cookie を保持することを決定し、データを削除することを決定したプロセスがない場合、セッションは存続します。これには、UA とサーバーの両方の設定を知る必要があります。

于 2013-03-14T19:24:10.670 に答える