77
63

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 5 years have passed since last update.

3分で覚え直す$_SESSIONの使い方まとめ [PHP]

Last updated at Posted at 2019-02-22

##セッションとは
セッションは、Webサイトにアクセスして行う一連の流れのことです。サイトを訪れたユーザデータを個別に管理できます。
簡単に言うと、サーバー側に情報を保存できる仕組みです。
###$_SESSION(セッション変数)とは
$_SESSIONとは、PHPのスーパーグローバル変数の1つであり、現在のセッションに登録されている値の変数です。また、連想配列として使用します。
###セッション管理の開始
まず、session_start関数を使用してセッションをスタートします。すでにスタートされていれば、既存のセッションを再開します。

session_start.php
<?php
    session_start();
?>

###セッション情報の保存・取得
セッション情報は$_SESSIONに連想配列として保存されます。保存の仕方としては、$_SESSION['キー'] = 値とします。
また、変数 = $_SESSION['キー']とするとセッション情報を取得できます。

session_start.php
<?php
    session_start();
    // セッション情報の保存
    $_SESSION['name'] = 'sorya';
    // セッション情報の取得
    $name = $_SESSION['name'];
?>

一度セッションに保存されれば$_SESSION['name']は他のページでも取得可能です。

session_get.php
<?php
    session_start();
    // セッション情報の取得
    $name = $_SESSION['name'];
    echo $name;
    // sorya
?>

###セッションの削除
キーで指定して一つずつ削除したい場合は、unset()関数を使用します。
全てのセッションを削除したい場合は、$_SESSIONを空配列にします。

session_delete.php
<?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()は現在のセッション名を返します。

session_information.php
<?php
    session_start();
    echo session_id();
    //  a816aebf3b02a9a3425418a3c3da410e57
    echo session_name();
    // PHPSESSID
?>

###セッションの有効期限を設定
セッションには、有効期限が存在し、それを過ぎると保持されていた情報は削除されます。デフォルトではプラウザが閉じるまで有効となっています。
session_start関数のオプションで有効期限を設定することができます。また、この時の有効期限は秒数で指定します。

session_config.php
<?php
    // セッションの有効期限を100秒に設定
    session_start([
        'cookie_lifetime' => $100,
    ]);
?>

また、ini_set関数でsession.gc_maxlifetimeを変更することでもセッションの有効期限を設定することができます。この場合、ini_set関数の第1引数にsession.gc_maxlifetimeを、第2引数に秒数を指定します。

session_con.php
<?php
    session_start();
    // セッションの有効期限を60秒に設定
    ini_set('session.gc_maxlifetime', 60);
?>

###セッションを終了する
セッションを終了するには、$_SESSION変数を空配列にするか、session_destroy関数を用いる方法があります。

session_end.php
<?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

77
63
0

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
77
63

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?