PHPでセッションを使う方法【初心者向け】

プログラミング初心者向けに【PHPでセッションを使う方法】を解説した記事です。セッションとは、コンピュータのサーバー側に一時的にデータを保存する仕組みです。PHPでは「session_start関数」を使います。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

プログラミング初心者向けに、PHPの基礎を紹介する記事です。

今回は、PHPでセッションを使う方法を初心者向けに解説します。

 

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。

また、開発環境はXAMPPを使っています。

そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。

 

今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。(動画は3つに分かれています)

 

セッションとは

セッションとは、コンピュータのサーバー側に一時的にデータを保存する仕組みのことです。

 

たとえば、Web上でのログイン情報や最終アクセスなど、ユーザーに直接紐づくような大切なデータをセッションに格納して使ったりします。

 

Cookie(クッキー)の仕組みととても似ていますが、Cookieはブラウザ側セッションはサーバー側と、それぞれデータの保存場所が異なります。

 

Cookieはブラウザ側に保存されるという性質上、ユーザーがデータを改ざんすることもできてしまうため、セッションのほうがよりセキュリティ的に安全だと言われています。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

田島悠介

セッションの場合は、相手には同じになりにくい一意の数値(ハッシュ値)だけを渡しておくんだ。そして、サーバー側では、その数値名でファイルを作成するんだよ。とりあえず、使い方などを見てみよう!

 

セッションの使い方

セッションの使い方ですが、シンプルに session_start関数 を使って開始し、この下でセッションを保存していくことができます。

 

実際に書いてみましょう。

[  ]の中に保存したいセッションの名前(ここではusername)を書き、代入演算子 = で代入したいもの(yamada)を書きます。

 

<?php
session_start();
$_SESSION[‘username’] = ”yamada”;
?>

 

これで一度、出力結果を確認します。

何も表示されない

ブラウザ側ではなにも表示されませんが、裏側のサーバーではセッションに yamada というデータが保存さています。

 

次に、このセッションをブラウザ上に取り出してみましょう。

取り出し方は、echo でこの SESSIN[‘username’] を取り出してあげれば、中身を取り出すことができます。

 

session_start();
$_SESSION[‘username’] = ”yamada”;
echo $_SESSION[‘username’] ;
?>

yamada

セッションはサーバー側に保存されているため、たとえ違う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人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。