PHP Manual
/
HTTP

セッション - PHPのサーバークッキー

06. 11. 2019

Obsah článku

しばしば、より多くの情報をクッキーに保存する必要がありますが、クッキーの上限は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での使用方法。

// サーバは最大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:

Související články

1.
5.
Status:
All systems normal.
2024