PHPでセッションを使う方法【初心者向け】
プログラミング初心者向けに【PHPでセッションを使う方法】を解説した記事です。セッションとは、コンピュータのサーバー側に一時的にデータを保存する仕組みです。PHPでは「session_start関数」を使います。
TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。
プログラミング初心者向けに、PHPの基礎を紹介する記事です。
今回は、PHPでセッションを使う方法を初心者向けに解説します。
なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。
また、開発環境はXAMPPを使っています。
そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。
今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。(動画は3つに分かれています)
セッションとは
セッションとは、コンピュータのサーバー側に一時的にデータを保存する仕組みのことです。
たとえば、Web上でのログイン情報や最終アクセスなど、ユーザーに直接紐づくような大切なデータをセッションに格納して使ったりします。
Cookie(クッキー)の仕組みととても似ていますが、Cookieはブラウザ側、セッションはサーバー側と、それぞれデータの保存場所が異なります。
Cookieはブラウザ側に保存されるという性質上、ユーザーがデータを改ざんすることもできてしまうため、セッションのほうがよりセキュリティ的に安全だと言われています。

セッションというの何でしょうか?クッキーとは違うんですか?

簡単にすると、クッキー+サーバー側にもファイルを作成するっていうのがセッションかな。

クッキーって相手のブラウザのメモ帳にデータを記録しておくことですよね。サーバー側にも書いておくんですか?

セッションの場合は、相手には同じになりにくい一意の数値(ハッシュ値)だけを渡しておくんだ。そして、サーバー側では、その数値名でファイルを作成するんだよ。とりあえず、使い方などを見てみよう!
セッションの使い方
セッションの使い方ですが、シンプルに session_start関数 を使って開始し、この下でセッションを保存していくことができます。
実際に書いてみましょう。
[ ]の中に保存したいセッションの名前(ここではusername)を書き、代入演算子 = で代入したいもの(yamada)を書きます。
<?php
session_start();
$_SESSION[‘username’] = ”yamada”;
?>
これで一度、出力結果を確認します。
ブラウザ側ではなにも表示されませんが、裏側のサーバーではセッションに yamada というデータが保存さています。
次に、このセッションをブラウザ上に取り出してみましょう。
取り出し方は、echo でこの SESSION[‘username’] を取り出してあげれば、中身を取り出すことができます。
session_start();
$_SESSION[‘username’] = ”yamada”;
echo $_SESSION[‘username’] ;
?>
セッションはサーバー側に保存されているため、たとえ違うWebページにまたがっても、同じセッションを取り出すことができます。
[PR] PHPプログラミングで挫折しない学習方法を動画で公開中
セッション削除の方法
次にセッションを削除していましほう。
削除には unset を使います。
<?php
session_start();
$_SESSION[‘username’] = ”yamada”;
unset($_SESSION[‘username’] );
?>
これで再びブラウザ側にアクセスしても、これまでと変わりません。しかし……
裏側でセッションが消されているため、もう一度 echo で username を出そうと思っても、値がないためエラーとなります。
<?php
session_start();
$_SESSION[‘username’] = ”yamada”;
unset($_SESSION[‘username’] );
echo $_SESSION[‘username’] ;
?>
このようにセッションでは、セッションに名前をつけて、変数のように値を入れて使い回すというようなことができます。
おわりに
今回の記事は以上です。
ログインの仕組みなど、Webサービスではいろいろ使っていきますので、覚えておいてくださいね。
PHPをさらに勉強したい場合は、PHPでCookieを使う方法 も合わせてご覧ください。

session_start関数が呼ばれて、その後に$_SESSIONっていうスーパーグローバル変数が使えるようになるんですね。

セッションがスタートされると、相手側に同じになりにくい番号が送られて、サーバー側にもその名前でファイルが作成されるんだ。xamppだとhtdocsフォルダと同じ階層のtmpフォルダに作成されてるよ。

$_SESSIONに何か書き込んだ場合っていうのは、そのファイルに書き込んだってことなんですか?

そうそう。tmpフォルダに、相手に送ったクッキーと同じ数値っぽい名前のファイルが作成されていて、$_SESSIONに書いたものは全部このファイルに書かれるんだよ。相手に送るクッキーは、セッションの場合は、常に数値だけなんだ。番号札って考えるとわかりやすいかも。
PHPを勉強していて、
・もっと効率的に勉強したい
・誰かに聞きながら学びたい
・自分でWebサービスを作りたい
と思ったことはないでしょうか?
そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、オリジナルWebサービスを開発することが可能です。
独学に限界を感じている場合はご検討ください。