PHPでセッションを使う方法【初心者向け】
プログラミング初心者向けに【PHPでセッションを使う方法】を解説した記事です。セッションとは、コンピュータのサーバー側に一時的にデータを保存する仕組みです。PHPでは「session_start関数」を使います。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
プログラミング初心者向けに、PHPの基礎を紹介する記事です。
今回は、PHPでセッションを使う方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
PHPでセッションを使うことで、一度利用したことがあるデータを再利用できます。
実務でも、PHPでセッションを利用してログインフォームを使いやすくするため、ぜひ学習してみてください。
また、開発環境はXAMPPを使っています。
目次
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合は、次の3種類の動画を覧ください。
セッションとは
セッションとは、コンピュータのサーバ側に一時的にデータを保存する仕組みのことです。
サーバに保存されたセッションIDと、ブラウザに保存されたPHPSESSIDが一致するかどうかで、セッションデータを利用します。
たとえば、Web上でのログイン情報など、ユーザーに直接ひもづくようなデータをセッションに保存し、再利用が可能です。
セッションに保存したデータを利用して次回ログインページを開いたときも、再度ログインすることなくログイン状態にしておくことが可能です。
セッションは、Cookie(クッキー)の仕組みととても似ていますが、Cookieはブラウザ側、セッションはサーバ側と、保存場所が異なります。
Cookieはブラウザ側に保存され、セッションはサーバ側に保存されます。
サーバ側に保存されるため、セッションのほうがよりセキュリティ的に安全だと言われています。
セッションというの何でしょうか?Cookieとは違うんですか?
簡単にすると、Cookie+サーバ側にもファイルを作成するっていうのがセッションかな。
Cookieって相手のブラウザのメモ帳にデータを記録しておくことですよね。サーバ側にも書いておくんですか?
セッションの場合は、相手には同じになりにくい一意の数値(ハッシュ値)だけを渡しておくんだ。そして、サーバ側では、その数値名でファイルを作成するんだよ。とりあえず、使い方などを見てみよう!
セッション関数と変数
ここではセッション関数とセッション変数を一覧で紹介します。
関数 | 用途 |
session_start() | セッション処理開始 |
session_id() | セッションID確認 |
session_name() | セッション名確認 |
session_regenerate_id() | セッションID再発行 |
session_unset() | セッション変数削除 |
session_destroy() | セッションデータ削除 |
$_SESSION[変数名] | グローバルセッション変数 |
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
セッションの使い方
ここではセッションの使い方を紹介します。
session_start()
セッションは、 session_start関数 を使って開始し保存が可能です。
session_start()処理は、PHPファイルの先頭に記載する必要があります。
<php session_start()
session_id()
次のコードでセッションIDを確認できます。
echo session_id();
session_name()
次のコードでセッション名を確認できます。
echo session_name();
session_regenerate_id()
次のコードでセッションIDを再発行できます。
session_regenerate_id();
session_unset()
次のコードでセッション変数を削除できます。
session_unset();
session_destroy()
次のコードでセッションデータを削除できます。
session_destroy();
$_SESSION[変数名]
次のコードで、スーパーグローバル変数であるセッション変数を利用できます。
スーパーグローバル変数とは、PHPプログラム内であればどこからでも呼び出せる変数です。
$_SESSION[変数名]='代入する値'
セッションデータを保存してみよう
ここでは、セッションデータを保存してみましょう。
サンプルコード
<?php
session_start();
$_SESSION["username"] = "yamada";
実行結果
解説
<?phpでは、PHPを開始しています。
session_start();では、セッション処理を開始しています。
$_SESSION[“username”] = “yamada”;では、グローバル変数であるセッション変数に、usernameを指定して、yamadaというデータを代入しています。
ブラウザ側ではなにも表示されませんが、サーバ側ではセッションに yamada というデータが保存さています。
セッションデータを取得してみよう
ここでは、セッションデータを取得してみましょう。
サンプルコード
<php
session_start();
$_SESSION["username"] = "yamada";
echo $_SESSION["username"];
実行結果
解説
<?phpでは、PHPを開始しています。
session_start();では、セッション処理を開始しています。
$_SESSION[“username”] = “yamada”;では、グローバル変数であるセッション変数に、usernameを指定して、yamadaというデータを代入しています。
echo $_SESSION[“username”];では、セッションデータを表示しています。
セッションはサーバ側に保存されているため、たとえ違うWebページにまたがっても、同じセッションを取り出すことができます。
セッションを削除してみよう
ここでは、セッションを削除してみましょう。
サンプルコード
<?php
session_start();
$_SESSION[‘username’] = ”yamada”;
unset($_SESSION[‘username’] );
echo $_SESSION[‘username’] ;
実行結果
解説
<?phpでは、PHPを開始しています。
session_start();では、セッション処理を開始しています。
$_SESSION[“username”] = “yamada”;では、グローバル変数であるセッション変数に、usernameを指定して、yamadaというデータを代入しています。
unset($_SESSION[‘username’] );では、セッション変数を削除しています。
echo $_SESSION[‘username’] ;では、セッション変数を表示しようとしています。
しかし、直前でセッション変数を削除したため、セッション変数であるusernameはないと表示されます。
このようにセッションでは、セッションに名前をつけて、変数のように値を入れて使い回すというようなことができます。
おわりに
セッションを利用することで、データをサーバ側に保存することができました。
サーバ側で保存したセッションIDと、ブラウザ側のPHPSESSIDが一致することでセッションデータを利用できました。
PHPをさらに勉強したい場合は、PHPでCookieを使う方法 もあわせてご覧ください。
session_start関数が呼ばれて、その後に$_SESSIONっていうスーパーグローバル変数が使えるようになるんですね。
セッションがスタートされると、相手側に同じになりにくい番号が送られて、サーバ側にもその名前でファイルが作成されるんだ。XAMPPだとhtdocsフォルダと同じ階層のtmpフォルダに作成されてるよ。
$_SESSIONに何か書き込んだ場合っていうのは、そのファイルに書き込んだってことなんですか?
そうそう。tmpフォルダに、相手に送ったCookieと同じ数値っぽい名前のファイルが作成されていて、$_SESSIONに書いたものは全部このファイルに書かれるんだよ。相手に送るCookieは、セッションの場合は、常に数値だけなんだ。番号札って考えるとわかりやすいかも。
PHPを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!