ホームページ >バックエンド開発 >PHPチュートリアル >あなたを愛している自分が嫌いです PHPで無制限の生涯セッションを使用する方法

あなたを愛している自分が嫌いです PHPで無制限の生涯セッションを使用する方法

WBOY
WBOYオリジナル
2016-07-29 08:36:401112ブラウズ

セッションのサポートが PHP4.0 に追加され、ショッピング カートなどの多くのプログラムが容易になります。
多くのフォーラムでは、Session はユーザーのログインを処理し、ユーザー名とパスワードを記録するためにも使用されているため、ユーザーは毎回ユーザー名とパスワードを入力する必要がありません。ただし、一般的なセッションの有効期間は制限されており、ユーザーがブラウザを閉じると、セッション変数は保存できません。では、どうすればセッションの永続的な寿命を達成できるでしょうか?
ご存知のとおり、セッションはクライアントから提供されたセッション ID に基づいてサーバー側に保存され、そのファイルはクライアントの Cookie を使用して変数の値を取得します。または、アクセスされたHttp1.1プロトコルのQuery_String(URLの「?」以降の部分)をサーバーに送信し、サーバーがセッションのディレクトリを読み込む...
永続化を実現するにはセッションの関連設定を理解するには、まず 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を介してSessionデータを読み取りますが、通常、ブラウザが送信したSessionIDはブラウザを閉じると消えます。その場合は手動でSessionIDを設定して保存するだけで、それ以外の場合は問題ありません...
サーバーの操作権限がある場合、これを設定するのは非常に簡単です。次の手順を実行するだけです。
1. 「session.use_cookies」を 1 に設定し、セッション ID を保存するために Cookie をオンにします。デフォルトは 1 で、通常は変更する必要はありません。
2. 「session.cookie_lifetime」を正の無限大に変更します (もちろん、正の無限大のパラメーターはありませんが、999999999 と正の無限大を設定します)。 session.gc_maxlifetime" を "session.cookie_lifetime" と同じ時間に変更します。
設定後、エディタを開いて次のコードを入力します:
---------------------- -------------------------------------------------------- --------------
session_register("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 情報を表示するために使用されます。
------------------------------------------------- ----------------------------------
PHP関連情報表示 ?phpinfo()?>
---------------------------------------- -- --------------------------------------
エディタを開いて、 enter 上記のコードをブラウザで実行すると、PHP 関連の情報が表示されます (図 1 を参照)。 「session.name」パラメータがあります (図ではすでにマークされています)。これは必要なサーバーの「session.name」で、通常は「PHPSESSID」です。
SessionID の名前を書き留めると、永続的なセッション データ ストレージを実現できます。
エディタを開いて次のコードを入力します:
-------------------------------------- ------ -------------------------------------------- -
session_start(); // セッションを開始
session_register("count"); // セッション変数の数を登録
if(isset($PHPSESSID)) {
session_id($PHPSESSID); $PHPSESSID が設定されている場合、セッション ID を $PHPSESSID に割り当てます。それ以外の場合はセッション ID を生成します
$PHPSESSID = session_id(); // 現在のセッション ID を取得します
$count++ // 変数 count に 1 を加算します
setcookie("PHPSESSID", $PHPSESSID, time()+3156000) ; // セッション ID を Cookie に格納
echo $count; // セッション変数 count の値を表示
--- -------------------------------------------------------- -------------- ----------
保存後、サーバー権限を持っていたときと同じ検出方法を使用して、SessionID が正常に保存されたかどうかを確認します。
追記:
実際のところ、Cookieの保存期間は限られており、サーバーの容量も限られているため、真の永久保存は不可能です...ただし、長期間保存する必要がある一部のサイトについては、上記の方法だけで十分です! Session の他のアプリケーションについては、zphp.com の記事を参照してください。
最後に、筆者のデバッグ環境:Windows98DigExt(SE)+Apache+PHP 4.04。

上記は、i Hate Self for Loveing You php での無限寿命セッションの使用方法を紹介しています。これには、PHP チュートリアルに興味のある友人の参考になれば幸いです。

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