ホームページ  >  記事  >  php教程  >  PHP で無制限の有効期間セッションを使用する方法

PHP で無制限の有効期間セッションを使用する方法

WBOY
WBOYオリジナル
2016-06-13 12:32:26853ブラウズ

セッションのサポートが PHP4.0 に追加され、ショッピング カートなどの多くのプログラムが容易になります。
多くのフォーラムでは、Session はユーザーのログインを処理し、ユーザー名とパスワードを記録するためにも使用されているため、ユーザーは毎回ユーザー名とパスワードを入力する必要がありません。ただし、一般的なセッションの有効期間は制限されており、ユーザーがブラウザを閉じると、セッション変数は保存できません。では、Session の永続的な寿命を達成するにはどうすればよいでしょうか?
ご存知のとおり、セッションはクライアントから提供されたセッション ID に基づいてサーバー側に保存され、そのファイルはクライアントの変数の値を取得するために読み取られます。 Cookie または Http1.1 プロトコルの Query_String (つまり、アクセスされた URL の "?" 以降の部分) がサーバーに送信され、サーバーはセッションのディレクトリを読み取ります...
セッションの永続的な存続期間を理解するには、まず php.ini のセッションの関連設定を理解する必要があります (php.ini ファイルの「[セッション]」セクションを開きます):
1. session.use_cookies:デフォルト値は「1」です。これは、SessionID が Cookie によって渡されることを意味します。それ以外の場合は、Query_String
2 によって渡されます。 session.name: これは、Cookie または Query_String によって渡される可能性がある、SessionID に格納される変数名です。デフォルト値は「PHPSESSID」です。
3. session.cookie_lifetime: これは、SessionID がクライアント Cookie に保存される時間を表します。これは、ブラウザが閉じるとすぐに SessionID が無効になることを意味します。それは... このため、セッションは永続的に使用できなくなります。
4. session.gc_maxlifetime: セッション データがサーバー側に保存される時間です。この時間を超えると、セッション データは自動的に削除されます。
他にも多くの設定がありますが、これらはこの記事に関連するものであり、永続セッションを使用するための原則と手順から始めましょう。
前に述べたように、サーバーは SessionID を通じてセッション データを読み取りますが、通常、ブラウザーから送信された SessionID はブラウザーを閉じると失われるため、SessionID を手動で設定して保存するだけで済みます。いいえ...
サーバーの操作権限がある場合、これを設定するのは非常に簡単です。次の手順を実行するだけです:
1. "session.use_cookies" を 1 に設定し、セッション ID を保存するための Cookie をオンにします。ただし、デフォルトは 1 であり、通常は変更する必要はありません。
2. "session.cookie_lifetime" を正の無限大に変更します (もちろん、正の無限大のパラメーターはありませんが、999999999 と正の無限大には違いはありません)。 🎜>3. 「session.gc_maxlifetime」を設定します。これは「session.cookie_lifetime」と同じです。
設定後、エディタを開いて次のコードを入力します:
---------- ---------------- ---------------------------------- -------------- --------------
<
session_start(); ");
$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関連情報表示< ; /title> <br><?phpinfo()?> -------------------------------------------------- - -- <br>エディターを開き、上記のコードを入力し、ブラウザーでプログラムを実行すると、PHP 関連の情報が表示されます (図 1 を参照)。 「session.name」パラメータがあります (図ではすでにマークされています)。これは必要なサーバーの「session.name」で、通常は「PHPSESSID」です。<br>SessionID の名前を書き留めると、永続的なセッション データ ストレージを実現できます。 <br>エディタを開いて次のコードを入力します: <br>--------------------------------- - -------------------------------------------------- <br><? <br>session_start(); // セッションの開始 <br>session_register("count"); // セッション変数の登録 <br>if(isset($PHPSESSID)) { <br>session_id($) PHPSESSID); <br>} // $PHPSESSID が設定されている場合は、SessionID を $PHPSESSID に割り当て、そうでない場合は SessionID を生成します <br>$PHPSESSID = session_id() // 現在の SessionID を取得します <br>$count; to 変数 count <br>setcookie("PHPSESSID", $PHPSESSID, time() 3156000); // セッション ID を Cookie に格納 <br>echo $count; // セッション変数 count <br>?> の値を表示します。 🎜>------------------------------------------------ - -------------------------------------- <br>保存後は、先ほどと同じ方法で保存してください。たった今、サーバー権限を持っています。 SessionID が正常に保存されたかどうかを検出するために、同じ検出方法が使用されます。 <br>追記: <br>実際のところ、Cookie の保存期間は限られており、サーバーのスペースも限られているため、真の永久保存は不可能です...ただし、長期間保存する必要がある一部のサイトについては、時間がある場合は、上記の方法で十分です! Session の他のアプリケーションについては、zphp.com の記事を参照してください。 <br>最後に、筆者のデバッグ環境: Windows98DigExt(SE) Apache PHP 4.04。 <br> <br></p></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="dedecms テンプレート タグ コード 公式リファレンス" href="http://m.php.cn/ja/faq/209615.html">dedecms テンプレート タグ コード 公式リファレンス</a></span><span>次の記事:<a class="dBlack" title="dedecms テンプレート タグ コード 公式リファレンス" href="http://m.php.cn/ja/faq/209623.html">dedecms テンプレート タグ コード 公式リファレンス</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="http://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/ja/faq/92233.html" title="Windows7系统下Netbeans+PHPUnit搭建PHP单元测试开发环境及PHPUn" class="aBlack">Windows7系统下Netbeans+PHPUnit搭建PHP单元测试开发环境及PHPUn</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/97151.html" title="程序猿ProMonkey V2.03" class="aBlack">程序猿ProMonkey V2.03</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/94770.html" title="PHP Navigator" class="aBlack">PHP Navigator</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/90182.html" title="php返回数组中指定的一列(php5.5.0默认函数array_column()在php" class="aBlack">php返回数组中指定的一列(php5.5.0默认函数array_column()在php</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/208396.html" title="htmlentitiesとhtmlspecialcharsの違いの詳しい説明" class="aBlack">htmlentitiesとhtmlspecialcharsの違いの詳しい説明</a><div class="clear"></div></li></ul></div></div><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="http://m.php.cn/ja/about/us.html">私たちについて</a><a href="http://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="http://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>