ホームページ  >  記事  >  バックエンド開発  >  PHPセッションについて

PHPセッションについて

WBOY
WBOYオリジナル
2016-06-23 14:34:211079ブラウズ

まず php.ini ファイルを開き、セッション部分を見つけます: (セミコロンの後のコメント)

[Session]
; データの保存/取得に使用されるハンドラーです。
session.save_handler = files ;デフォルトのファイルで十分です。これは、ファイルがストレージに使用されることを意味します

ファイルの場合、これはデータ ファイルが保存されるパスです。
session.save_path = /tmp;たとえば、C ドライブがある場合、デフォルトは c:/tmp であるため、「警告: open(/tmpsess_cc8b04f146a1e0494bc464305da92ea1, O_RDWR) に失敗しました」のようなエラーが発生した場合は、このパスを変更するか、ルートディレクトリの tmp ファイル Clamp

; cookies.
session.use_cookies = 1 ; sessionid は cookie によって渡され、デフォルトは cookie を使用することをお勧めします (cookie 名として使用されます)。 ).

session.name = PHPSESSID ; sessionid Cookie に保存される名前は、同じ名前を避ける必要があります


; セッションを自動的に開始するかどうか、デフォルトは no です。変更する必要はありません

; Cookie の有効期間 (秒単位)、または 0 の場合はブラウザが再起動されるまで。 valid.
session.cookie_path = / ; sessionid の Cookie パス、変更する必要はありません

; Cookie が有効なドメインです。

; データをシリアル化するために使用されるハンドラー。serialize_handler = php ; データを保存するためのデフォルトのファイル名サフィックス。
セッションの初期化ごとに「ガベージ コレクション」プロセスが開始される確率。 1

; この秒数が経過すると、保存されたデータはガベージ コレクション プロセスによってクリーンアップされます。
セッション ファイルの保存時間

; ids.
session.referer_check = ; HTTP キャッシュの側面を決定するためにファイルから読み取るバイト数。

session.cache_limiter = nocache ; minutes.

session.cache_expire = 180 ; --enable-trans-sid でコンパイルして有効にした場合、一時的な SID サポートを使用します。 url_rewriter.tags = "a=href,area=href,frame=src,input =src,form=fakeentry"
==================== ====================== =========================== ==

セッションのライフサイクルとは何ですか?


1 ブラウザが終了すると、その寿命は終了します。サイクルも終了しますが、ファイルは /tmp/(sess_???) にまだ存在します

2 次回ブラウザを再度開いたときにセッション ID が再割り当てされます。 session_id() を使用して前の ID に戻すと、

が読み取られます。残りの sess_??? を /tmp に保存し、以前に設定したすべてのパラメータを取得します
php.ini にあります。この秒数が経過した後、セッション ファイルの残り時間 session.gc_maxlifetime = 1440 を変更します。デフォルトは 1440 秒、24 分です

=== ============= ============================== ===================

無制限の有効期間セッションを使用する方法
セッションのサポートが PHP4.0 に追加され、ショッピング カートなどの多くのプログラムが容易になります。
多くのフォーラムでは、Session はユーザーのログインを処理し、ユーザー名とパスワードを記録するためにも使用されているため、ユーザーは毎回ユーザー名とパスワードを入力する必要がありません。ただし、一般的なセッションの有効期間は制限されており、ユーザーがブラウザを閉じると、セッション変数は保存できません。では、どうすればセッションの永続的な寿命を達成できるでしょうか?
ご存知のとおり、セッションはサーバー側に保存され、クライアントから提供されたセッション ID に基づいてユーザーのファイルが取得され、そのファイルが読み取られて変数の値が取得されます。セッション ID はクライアントの Cookie を使用できます。または、アクセスされたHttp1.1プロトコルのQuery_String(URLの「?」以降の部分)をサーバーに送信し、サーバーがSessionのディレクトリを読み込む...

永続化を実現するにはセッションの存続期間については、まず php.ini のセッションの関連設定を理解する必要があります (「[セッション]」セクションの php.ini ファイルを開きます):
1. session.use_cookies: デフォルト値は「1」です。 "、これは、SessionID が Cookie によって渡されることを意味し、そうでない場合は、Query_String によって渡されます。
2. session.name: これは、SessionID です。保存される変数名は、Cookie または Query_String です。デフォルト値は、「PHPSESSID」です。
3 session.cookie_lifetime: これは、セッション ID がクライアント Cookie に保存される時間を表します。デフォルトは 0 です。これは、セッション ID が無効であることを意味します。
4. session.gc_maxlifetime: セッション データがサーバー側に保存される時間です。この時間を超えると、セッション データは自動的に削除されます。
多くの設定がありますが、これらはこの記事に関連するものです。まず、永続セッションを使用するための原則と手順を説明します。

前に述べたように、サーバーは SessionID を介してセッション データを読み取りますが、通常、ブラウザによって送信された SessionID はブラウザを閉じると失われるため、SessionID を手動で設定して保存するだけで済みます。それ以外の場合は...
サーバーを操作する権限があれば、これを設定するのは非常に簡単です。次の手順を実行するだけです:
1. 「session.use_cookies」を 1 に設定し、SessionID を保存するための Cookie をオンにします。通常は変更する必要はありません。
2. 「session.cookie_lifetime」を正の無限大に変更します (もちろん、正の無限大のパラメーターはありませんが、999999999 と正の無限大には違いはありません)。
3. 「session.cookie_lifetime」を設定します。 gc_maxlifetime" を "session.cookie_lifetime" 時間と同じにします。
設定後、エディタを開いて次のコードを入力します:
---------------------- ----------- -------------------------------------- ----------- -

session_register('count');
$count++;
echo $count;
?>
----- ------------------------ ----------------------- --------------------------- ------------------
次に、名前を付けて保存します「session_check.php」 ブラウザで「session_check.php」を開き、「1」が表示されるか確認してからブラウザを閉じ、ブラウザを開いて「session_check.php」にアクセスすると「2」が表示されます。 、失敗した場合は、以前の設定を確認してください。

ただし、サーバーを操作する権限がない場合、永続的なセッションデータの保存を実現するには、PHP プログラムを通じて SessionID を書き換える必要があります。 php.net の関数マニュアルを確認すると、「session_id」関数が表示されます。パラメータが設定されていない場合は、現在のセッション ID が返されます。パラメータが設定されている場合は、現在のセッション ID が指定された値に設定されます。
永続的な Cookie を使用し、「session_id」関数を追加する限り、永続的なセッション データを保存できます。
ただし、便宜上、サーバーによって設定された「session.name」を知る必要があります。ただし、ほとんどのユーザーはサーバーの php.ini 設定を表示する権限を持っていません。ただし、PHP には非常に優れた関数「phpinfo」が用意されています。 、ほぼすべての PHP 情報を表示するために使用できます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。