0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHP $_SESSION 一連の流れ

Last updated at Posted at 2022-04-27

用途

サーバー側に、サイトを訪れたユーザの情報を個別に保存しておいて、情報をもとにさまざまなページで処理をしたい時に使う。

使用方法

一連の流れ

1.セッションに保存する

ファイル①(セッションに保存するファイル)
<?php
    session_start(); // セッションをスタート
    $_SESSION['name'] = 'hoge'; // セッションのnameに情報を保存
    $name = $_SESSION['name']; // セッションの情報を$nameに代入
    var_dump($name); // "hoge"が表示される
?>

※セッションは連想配列で保存される。

2.セッションに保存したものを別ファイルで使用する

ファイル②(上記のファイルで保存したものを他のファイルでも使えることを解説するファイル)
<?php
    session_start(); // セッションをスタート
    $name = $_SESSION['name']; // ファイル①でセッションで保存してあるnameを取得して、$nameに代入
    var_dump($name); // "hoge" が表示される
?>

3.セッションに保存したものを削除する

ファイル③(セッションで保存してある情報を削除する方法を解説するファイル)
// 削除するセッションを指定する場合
<?php
    session_start(); // セッションをスタート
    $_SESSION['name'] = 'tanaka'; // セッションのnameに情報を保存
    $_SESSION['number'] = 5; // セッションのnumberに情報を保存
    unset($_SESSION['name']); // セッションのnameの値を削除する
    var_dump($_SESSION); // array(1) { ["number"]=> int(5) } が表示される
?>

// 全てのセッションを削除する場合
<?php
    // 削除するセッションを指定する場合
    session_start(); // セッションをスタート
    $_SESSION['name'] = 'tanaka'; // セッションのnameに情報を保存
    $_SESSION['number'] = 5; // セッションのnumberに情報を保存
    $_SESSION = array(); // セッションを空配列にする
    var_dump($_SESSION); // array(0) { } が表示される
?>

4. セッションを終了・破棄する

ファイル④(セッションを終了・破棄する方法を解説するファイル)
// セッションを破棄
<?php
    session_start();
    $_SESSION['name'] = 'hoge'; // セッションのnameに情報を保存
    session_destory(); // セッションを破棄する
?>

// セッションを保存しないで終了
<?php
    session_start();
    $_SESSION['name'] = 'hoge'; // セッションのnameに情報を保存
    session_abort(); // セッションを保存しないで終了する
?>

// セッションを保存して終了
<?php
    session_start();
    $_SESSION['name'] = 'hoge'; // セッションのnameに情報を保存
    session_write_close(); // セッションを保存して終了する
?>

※コメントでご指摘をいただき修正しました。

その他

セッションが保存される有効期限を設定する

ファイル⑤(セッション有効期限を設定する方法を解説するファイル)
<?php
    session_start();
    ini_set('session.gc_maxlifetime', 100); // セッションの有効期限を100秒に設定する
?>

ini_set で有効期限を設定する。
第1引数には、有効期限の設定の session.gc_maxlifetime を入力する。
第2引数には、設定したい有効期限を「秒数」で指定する。
※デフォルトではプラウザが閉じるまで有効になっている。

注意
正確にいうと、 session.gc_maxlifetime はセッションの有効期間そのものを設定する項目ではない。

session.gc_maxlifetime はセッションを削除する「セッション破棄処理(ガベージコレクション(gc))」が起動してからの秒数を設定している。
「セッション破棄処理(ガベージコレクション(gc))」が起動する確率は下記で設定されている。
session.gc_probability / session.gc_divisor
※ デフォルトは1/100(1%)
なのでアクセス頻度が低いと「セッション破棄処理(ガベージコレクション(gc))」を起動する判定回数が少なくなる。
→ 起動確率が低くなり、長い間セッションが残る場合もある。
※コメントでご指摘をいただき修正しました。

session.gc_probabilityの確認方法
$ grep "session.gc_probability" /etc/php.ini
session.gc_divisorの確認方法
$ grep "session.gc_divisor" /etc/php.ini
0
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?