##セッションとは
セッションは、Webサイトにアクセスして行う一連の流れのことです。サイトを訪れたユーザデータを個別に管理できます。
簡単に言うと、サーバー側に情報を保存できる仕組みです。
###$_SESSION(セッション変数)とは
$_SESSION
とは、PHPのスーパーグローバル変数の1つであり、現在のセッションに登録されている値の変数です。また、連想配列として使用します。
###セッション管理の開始
まず、session_start
関数を使用してセッションをスタートします。すでにスタートされていれば、既存のセッションを再開します。
<?php
session_start();
?>
###セッション情報の保存・取得
セッション情報は$_SESSION
に連想配列として保存されます。保存の仕方としては、$_SESSION['キー'] = 値
とします。
また、変数 = $_SESSION['キー']
とするとセッション情報を取得できます。
<?php
session_start();
// セッション情報の保存
$_SESSION['name'] = 'sorya';
// セッション情報の取得
$name = $_SESSION['name'];
?>
一度セッションに保存されれば$_SESSION['name']
は他のページでも取得可能です。
<?php
session_start();
// セッション情報の取得
$name = $_SESSION['name'];
echo $name;
// sorya
?>
###セッションの削除
キーで指定して一つずつ削除したい場合は、unset()
関数を使用します。
全てのセッションを削除したい場合は、$_SESSION
を空配列にします。
<?php
session_start();
$_SESSION['id'] = 3;
$_SESSION['name'] = 'Yuki';
$_SESSION['year'] = 2019;
unset($_SESSION['name']);
var_dump($_SESSION);
// array(2) { ["id"]=> int(3) ["year"]=> int(2019) }
$_SESSION = array();
var_dump($_SESSION);
// array(0) { }
?>
###細かなセッション情報の取得
session_id()
は現在のセッションID、session_name()
は現在のセッション名を返します。
<?php
session_start();
echo session_id();
// a816aebf3b02a9a3425418a3c3da410e57
echo session_name();
// PHPSESSID
?>
###セッションの有効期限を設定
セッションには、有効期限が存在し、それを過ぎると保持されていた情報は削除されます。デフォルトではプラウザが閉じるまで有効となっています。
session_start
関数のオプションで有効期限を設定することができます。また、この時の有効期限は秒数で指定します。
<?php
// セッションの有効期限を100秒に設定
session_start([
'cookie_lifetime' => $100,
]);
?>
また、ini_set
関数でsession.gc_maxlifetime
を変更することでもセッションの有効期限を設定することができます。この場合、ini_set
関数の第1引数にsession.gc_maxlifetime
を、第2引数に秒数を指定します。
<?php
session_start();
// セッションの有効期限を60秒に設定
ini_set('session.gc_maxlifetime', 60);
?>
###セッションを終了する
セッションを終了するには、$_SESSION
変数を空配列にするか、session_destroy
関数を用いる方法があります。
<?php
session_start();
$_SESSION['name'] = 'sorya';
// セッションを終了する
session_destory();
?>
[参考]
・PHP sessionざっくり理解したい
https://qiita.com/dokkoisho/items/b790a2f4ba13e1e9b07a
[よければこちらもどうぞ(内容は一緒)]
http://otter3.php.xdomain.jp/sharealgo/post/PHP/content51.php