【PHP】$_SESSION(セッション)の使い方が知りたいんじゃ!

 

PHPに限らず、Webプログラミングにおいてセッションの概念は避けては通れません。ユーザーがログイン・ログアウトするようなシステムが出来るのは実はセッションのおかげなのです。

この記事では、まずセッションとは何かやセッションの使い方、セッションと言うものがどういうことかと言うことと、PHPでの具体的な利用方法について説明します。

 

そもそもPHPって何?という方はこちらの記事をご覧ください!

$_SESSION(セッション)の使い方

PHPでは$_SESSIONというスーパーグローバール変数に現在登録されてるセッションの値が格納されています。中身は連想配列として値が保存されています。

$_SESSION(セッション)の開始宣言

セッションを扱うためにはsession_start関数を使用してセッションをスタートします。

<?php
session_start();
?>

$_SESSION(セッション)の保存方法

セッション情報は$_SESSIONに連想配列(キーと値のペア)で保存されます。セッションに値を登録するには以下のように記述します。

$_SESSION['キー'] = 値;

セッションでサイトにアクセスした数をカウントする処理をカウントします。

<?php
session_start();
$count = $_SESSION['count'] ?? 0;
$_SESSION['count'] = $count + 1;

echo $count;

これでサイトにアクセスするとカウントアップされる処理ができました。 session_startでセッション処理を開始すれば$_SESSIONを連想配列のように使い回すことができるようになります。

$_SESSION(セッション)の削除方法

キーを指定してセッションを削除する場合はunsetを使用します。

unset($_SESSION['count']);

全てのセッションを削除したい場合は、$_SESSIONに空配列を設定することで削除されます。

$_SESSION = [];

session_destroy関数を使ってもセッションを全て削除することができますが、セッション変数の利用を再開するには session_start() をもう一度呼び出す必要があります。

$_SESSION(セッション)の有効期限

セッションには有効期限がありデフォルトではブラウザを閉じるとデータも破棄されます。 ブラウザを閉じてもセッションを保持し続けるためにはcookie_lifetimeを設定します。

<?php
// セッションの有効期限を30日にする例
session_start([
    'cookie_lifetime' => 60 * 60 * 24 * 30,
]);
?>

Sessionのセキュリティについて

セッション情報にはログインなどの機密情報が設定されていることが多く、セッションIDを盗まれるとログイン状態をそのまま他人に乗っ取られてしまします(セッションハイジャック)。

Sessionを乗っ取ってみよう

実際にセッションを乗っ取るサンプルを紹介します。 ChromeのDeveloperToolを開きApplicationを選択します。

 

この中にあるPHPSESSIDの値をコピーしておきます。

シークレットモードで先ほどのカウント処理を開くと値が初期化されてますが、同じくDeveloperTookを開きPHPSESSIDの値を先ほどコピーした値に書き換えるとカウントアップの値が変わります。

たったこれだけで、別ユーザーが使っているセッション情報を盗むことができるのです。 対応としては通信の暗号化やアクセス毎にsession_idを変更したりするなど対応はありますが長くなるのでここでは紹介しません、環境に合わせたセキュリティ対応を行うようにしましょう。

 

まとめ

今回はセッションの使い方について解説しました。WEBシステムにおいて、ユーザごとの情報を保持し続けることのできるセッションは非常に重要です。セッションの使い方を忘れてしまったら、この記事を思い出して下さい。

なお、他の言語やフレームワークでも同じようなセッション管理を行っています。興味のある方は以下の記事も参考にしてみてください。

 

 

プログラミングを学んでみたいという方にオススメ

プログラミングに関して右も左もわからないという方必見!!

今後転職を目指してスキルを身に着けたいという方は、プログラミングスクールの無料カウンセリングから受けてみてはいかがでしょうか??

エンジニアとしての一歩を踏み出しましょう!

 

 

 

 

Twitterでフォローしよう

おすすめの記事