ホームページ  >  記事  >  バックエンド開発  >  PHP_PHPチュートリアルで無期限セッションのソリューションアイデアと実装方法を共有

PHP_PHPチュートリアルで無期限セッションのソリューションアイデアと実装方法を共有

WBOY
WBOYオリジナル
2016-07-21 15:30:55734ブラウズ

社内の限られたカスタマーサービス担当者のみが利用できるシステムを初期段階で開発しました。数日前、突然この質問を提起したのは、限られたカスタマー サービス スタッフでした。私たちが顧客の問題を解決したいと思っていると、短時間 (ページを操作しない 30 分) ごとに、システムはログを記録する必要があることを要求しました。で、お客様の時間…とても不愉快です

お客様は神様、唯一の神様です。そこで上司は、カスタマー サービス スタッフが人為的に期限切れにしない限り、PHP のセッションは期限切れにならないことを理解するように私たちに求めました。セキュリティ上の理由からこの期限切れのない動作は理解できません。遅延を理由に以前のプログラムを変更したくありません。でも仕方ない、まだ変わらないといけない。

プログラムを変更しないのが最善の方法です。プログラムが変更されると、テスト部門は私と同じように非常に憂鬱になるでしょう。その場合、システム環境の構成を変更する唯一の方法は、実際には非常に簡単です。ファイルを開き、次のように 3 行を変更します:

1. session.use_cookies
この値を 1 に設定し、cookie を使用して sessionid を渡します
2. session.cookie_lifetime
これは、SessionID がクライアント Cookie に保存される時間を表します。デフォルトは 0 です。これは、ブラウザが閉じるとすぐに SessionID が期限切れになることを意味します。このため、PHP セッションは永続的に使用できません。そのため、非常に大きいと思われる数値に設定しましょう。 、999999999はどうですか、それは大丈夫です!
3. session.gc_maxlifetime
これは、セッションデータがサーバー側に保存される時間です。この時間を超えると、セッションデータは自動的に削除されます。そして、これも99999999に設定します。
それだけです。すべて問題ありません。もちろん、信じられない場合は、テストして確認してください。コンピューターが停電したりクラッシュしたりしなければ、セッションをセットアップして 10 日半後に戻ってきます。 、このセッションIDはまだ表示されています。
もちろん、あなたにサーバーを制御する権限がなく、php.ini の設定を変更できるほど幸運ではない可能性もあります。もちろん、私たち自身に頼る方法もあります。クライアントを使用して Cookie を保存し、取得したセッション ID をクライアントの Cookie に設定し、この値を session_id() 関数に渡します。 具体的な方法は次のとおりです。コード

コードは次のとおりです: session_start(); // セッションを開始
$_SESSION['count']; // セッション変数 Count を登録
isset($PHPSESSID)?session_id( $PHPSESSID):$PHPSESSID = session_id();
// $PHPSESSID が設定されている場合は、SessionID が $PHPSESSID に割り当てられ、そうでない場合は SessionID が生成されます
$_SESSION['count']++ // 変数 count に 1 を加算します。
setcookie('PHPSESSID', $PHPSESSID, time()+3156000); // セッション ID を Cookie に保存
echo $count; // セッション変数 count の値を表示します
?>しばらくしてからこのページを更新すると (どのくらい時間がかかるかは自分で確認できます)、出力値が終了時よりも 1 大きくなっている場合は、誰かがあなたのコンピュータとこのテストに触ったと推定されます。はは、ちょっと外に出てください。
注: setcookie 行の 'PHPSESSID' は、修正マニアに出会った場合、修正された可能性があります。最善の方法は、phpinfo() 関数を使用して session.name の値をチェックして確認することです。これはより科学的です。



http://www.bkjia.com/PHPjc/323118.html

www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/323118.html技術記事社内の限られたカスタマーサービス担当者のみが利用できるシステムを初期段階で開発しました。数日前に突然このような質問をしたのは、限られたカスタマーサービススタッフでした...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。