2012-03-21 8 views

答えて

51

php.inisession.cookie_lifetimeを参照してください。

デフォルト値の0は、ブラウザが終了したときにセッションを終了することを意味します。

この値を直接php.iniに変更するか、またはini_setを使用してセッションを開始する前にアプリケーションで設定することができます。 0より大きい値に設定すると、セッションはその期間存続します。

など。

ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7); // 7 day cookie lifetime 
session_start(); 

上記の例では、セッションが開始されてから7日後にセッションCookieが設定されます。

注:あなたがコードの同じ部分からウェブページのすべてのためのあなたのセッションを開始する場合は、このたびsession_start()が呼び出されるセッションの有効期限を延長していきません。 Cookieの有効期間は、セッションが最初に開始されたときから設定され、後続の要求では設定されません。現在の時刻から7日後にセッションの有効期間を延長する場合は、session_regenerate_id()も参照してください。

また注意:あなたsession.gc_maxlifetime値はセッションクッキーの長さよりも小さいものに設定されている場合は、ユーザーが5日間のサイトを訪問していないと、彼らが戻ったときの状況、セッションクッキーを持つことができますサーバー上のデータが削除されたため、有効ではなくなりました。この問題を解決するには、このセッションデータの有効期限をCookieの有効期間以上に設定する必要があります。手動で説明したように、デフォルトより長く持続させるセッションデータには、カスタムsession.save_pathを使用する必要があります。そのため、スクリプトは次のようになります。あなたが永続的なセッションをしたい場合

ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7); 
ini_set('session.gc_maxlifetime', 60 * 60 * 24 * 7); 
ini_set('session.save_path', '/home/yoursite/sessions'); 
session_start(); 
5

クッキーを使用してください。たとえば、this tutorialです。

2

セッションは「セッション」に基づいて設計されています。言い換えれば、ブラウザを閉じると(本質的にあなたのセッションです)、それは遠ざかると思われます。

セッションデータをファイルではなくデータベースに格納することができます。セッションIDとセッションデータをテーブルに格納します。その後、セッションIDをcookie PHPSESSID(デフォルト)から呼び出して、データベースからセッションデータを検索します。

+1

データベースにセッションを保存しても、ブラウザが終了したときにクッキーが消えるように設定されていればセッションは永続的になりません...プログラム方法によってはセッションデータを保存している可能性がありますが、ガベージコレクションと破壊メソッドを使用していますが、ブラウザが閉じられてから再び開いた後にmaxlifeが0に設定されていると、新しいセッションIDを持つセッションIDがあります。 – Snowburnt

2

私はクッキーやデータベースを使用することをお勧めします。お客様のID(ランダム32ビットの英数字値)をクッキーに保存し、その情報を参照して顧客情報をロードします。

2

あなたはsession_start()を入力せずにセッションを開始することができますし、あなたがsession_start()を入力したときので、これを行うことができる。この

setcookie('PHPSESSID','any id' , any time); 

のようにクッキーを使用して起動してから、この

print_r($_COOKIE); 
のようにクッキーを見て試すことができます

その後、outpoutは次のようになります。

Array ([PHPSESSID] => c0voj7h0b4aesddkc17a6jk7c3) 

自分で試してみてください

関連する問題