WEBページを見ているとログイン・ログアウト機能や、カートに商品を保存する機能がありますよね。それらは全て、セッションの機能によって実装されているのです。
そこで今回は、セッションについて
- ・セッションとクッキーの違いは何か
- ・PHPのセッションを使う方法
- ・PHPのセッションの有効期限を設定する方法
をご紹介します。セッションが何かわからない方は、ぜひ参考にしてみてくださいね。
目次
PHPのセッションとは何か?
PHPのセッションとは、コンピュータのサーバー側にデータを一時的に保存する仕組みのこと。自動で生成される重複しないIDを相手とひもづけることで、ユーザーを判別しています。
なぜセッションを利用するかというと、WEBで用いられるHTTPプロトコルには状態を管理する方法がないため。
要するに、
- ・あるWEBページに誰が何回アクセスしたか
- ・どういう経緯でアクセスしたか
などの情報を保存できないのです。
それを補うためにセッションを利用します。
普段使っているWEBサイトから例を出すと、「ショッピングサイトにログインし購入したい商品をカートに入れる」などの機能にもセッションが利用されています。
このように、ログイン情報や最終アクセスなど、ユーザーと直接紐付く重要なデータを保存しているのがセッションなのです。
セッションとクッキーの違いとは?
簡単に言うと、
データの保存場所 | セキュリティ | |
---|---|---|
セッション | サーバー側 | 高い |
クッキー | ブラウザ側 | 低い |
というわけです。
クッキーはブラウザ側に保存されるため、ユーザーがデータを改ざんすることができてしまいます。そのため、セッションの方がセキュリティ的に安全だとされています。
なので、ログイン情報のような個人情報を取り扱う場合は、よりセキュリティの優れたセッションを使います。
PHPでセッションを使う方法
セッションを使う方法はとても簡単です。
セッションの開始 session_start()
session_start()の記述をすれば、セッションの管理が開始されます。
1 2 3 |
<?php session_start(); ?> |
セッションにデータを書き込む
session_startでセッションを開始した後、$_SESSIONにデータを保存することができます。例えば「name」という変数の中に「tanaka」を入れたい場合、以下のように記述しましょう。
1 2 3 |
<?php $_SESSION['name'] = ”tanaka”; ?> |
これで、違うWEBページへ移動してもデータを取り出すことができるようになります。
セッションに保存したデータを削除する unset()
unset()の中に削除したいセッションを書くことで、セッションを削除できます。
1 2 3 |
<?php unset($_SESSION['name']); ?> |
PHPでセッションに有効期限を設定してみる
セッションには有効期限があり、期限を過ぎると保存されていた情報は削除されます。
例えば、
- ・ログインしたままのWEBサイトから、しばらくして再度ログインを要求された
- ・ショッピングサイトで買い物かごに入れていた中身がしばらくすると消えていた
などは、セッションの有効期限がすぎたからなのです。
続いて、有効期限を設定する方法をご紹介します。
session_startのオプションを使う
session_start関数のオプションとして、有効期限を上書きすることができます。
1 2 3 4 5 |
<?php session_start([ 'cookie_lifetime' => 86400, ]); ?> |
単位は秒です。上の例の場合、セッションの有効期限は1日となります。
session.gc_maxlifetimeで設定する
php.iniファイルのsession.gc_maxlifetimeデフォルト値が設定されています。
1 |
session.gc_maxlifetime = 86400 |
単位は秒で、セッションが削除される期限を設定できます。
まとめ
以上、PHPのセッションについて
- ・セッションとクッキーの違いは何か
- ・PHPのセッションを開始・保存・削除する方法
- ・PHPのセッションの有効期限を設定する方法2つ
をご紹介しました。
セッションを使う時にお役に立てると幸いです。