しばしば、より多くの情報をクッキーに保存する必要がありますが、クッキーの上限は4kBと、それほど多くはありません。セッションズは、データをウェブサーバーに保存し、どのデータがどのクライアントのものかを知るための短い識別子だけをクライアントのブラウザに保存することで、この問題を解決しています。
セッションで何か作業をする前に、まずセッションを開始する必要があります。これは、スクリプトの冒頭で session_start()
関数を呼び出すことによって行われます。
session_start();
強い警告:
session_start()
関数を呼び出す前に、HTML コードへの出力を実行してはいけません!
セッションの内容はサーバーに保存され、クライアントブラウザには識別子のみが送信されるため、ユーザーはセッションに何が保存されているかを知る術がないのです。スクリプトがユーザーに影響を与える唯一の方法は、識別子を削除することです(その場合、スクリプトは新しい識別子を生成します)。
すべてのセッションはスーパーグローバル変数 $_SESSION
に格納され、配列としてトラバースすることができる。
例えば、現在ログインしているユーザーの名前は、こう書くことで取得することができる。
echo $_SESSION['ユーザー'];
注:セッションは常に存在するとは限りません(例えば、新規ユーザーの場合)。そのため、掲載前に必ず存在を確認し、必要であれば別のエラーメッセージを提供する必要があります。
if (isset($_SESSION['ユーザー']) && $_SESSION['ユーザー']) {echo 'ログインしているユーザーです。' . $_SESSION['ユーザー'];} else {echo '誰もサインインしていない';}
保存は、単純にデータを変数に保存することで行われます。
$_SESSION['ユーザー'] = 'ホンツィク';
ウェブサーバーは、サーバーへの正しい保存とユーザーへの識別子の送信という技術的な提供を担当します。
キーにしたがって、個々の値を個別に削除することができます。
unset($_SESSION['ユーザー']);
または、利用可能なすべてのセッション。
unset($_SESSION);
注意:特定のセッションを削除しても、キー値は空にならず、キーが完全に削除されます。したがって、存在しないキーを読み込もうとすると、エラーの警告が表示されます。鍵の存在は
isset()
関数で常に簡単に確認することができます。
保存されたセッションには、それぞれサーバーに保存される期間の制限があります。PHPには、古いセッションを定期的に削除するcronスクリプトが直接含まれています。
デフォルトは通常 1440 seconds
で、これは 24 minutes
に相当する。
値を増やすには、2か所で行う必要があります。
php.ini
では、サーバーが保持する有効期間の最大長を設定します。この値は session.gc_maxlifetime
ディレクティブによって設定されます。PHPでの使用方法。
// サーバは最大3600秒=1時間、セッションを保持するようになりました。ini_set('セッション.gc_maxlifetime', '3600');// すべてのクライアント(ブラウザ)が// 3600秒ちょうどの有効期限で送信されるセッションsession_set_cookie_params(3600);session_start(); // セッションを開始することができます
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | ja