2019.09.12この記事は約8分で読めます。スポンサーリンクスポンサーリンクウェブの仕組みを理解するために、クッキーとセッションの理解は必須になります。この記事では、この内、セッション情報の使い方を、PHPのコードで紹介します。基礎編セッションとセッション情報とはページ間、HTTP通信間で情報を共有して、複数の通信にまとまりをもたせた一連のやり取りをセッションといいます。ログインして会員制サイトにアクセスしてログアウトするまでが一つのセッションとなります。セッションを成立させるための情報で、サーバー側に保存される情報をセッション情報といいます。ウェブにおけるクッキーとセションの役割については、下の記事に書いてますので、わからない人は先に読んでおいてください。ウェブサイトへログイン機能実装に必要なセッション・クッキーの仕組みについてこんにちは。この記事では、ブラウザでウェブページを表示するときにつかうクッキーとセッションについて紹介します。クッキーもセッションもHTTP通信しながら、ウェブサーバとクライアントで情報を保存して共有するに必要な技術となります。...kekaku.addisteria.com2019.09.10参考記事に説明していますが、セッション情報をクライアントごとに区別するために、クッキー情報も使っています。下図のように、クライアントがセッションIDをクッキーとして持っておくことで、サーバーが対応するクライアント用のセッション情報を参照する仕組みになっています。これから、PHPを使って、セッション情報を使う方法を紹介していきます。基本的なセッション情報の読み書きセッション情報の書き込みセッション情報へ「session_test」キーにテキストをセットするサンプルを下リストに示します。<p>セッション情報(名前:session_test)をセットします。content="ie=edge"><title>セッション情報の保存</title></head><body><p>セッション情報(名前:session_test)をセットします。</p></body></html>コード解説この中で、実際にセッション情報を記録しているのは、冒頭部分の2行だけです。関数は、セッション情報を作成するときや、参照するときに先頭で呼ぶルールになってます。セッションを使うための裏方処理をしてくれます。ページへのリンクです。Manualwww.php.net次の行が実際にセッション情報をセットしています。$_SESSION配列に対してアクセスすることでセッション情報へ読み書きすることができます。「内容です(現日時)」の文字列をセットしています。set_session_info.phpにアクセスしたときの結果を示します。XAMPPでテストしています。試してみたい人は、下リンクを参照にインストールしてみてしてください。https://kekaku.addisteria.com/wp/20190504030437下図を見ると、アクセスしたブラウザには、PHPSESSIDというクッキーが設定されています。これがセッションIDであり、サーバがアクセスしてきたクライアントを判別するために使います。セッションIDは、session_start関数を呼ぶことによってクッキー設定処理を書いていなくても、自動で設定してくれてます。XAMPPでは、デフォルトでは、C:\xampp\tmpフォルダに、セッション情報が保存されています。フォルダを見るとセッションIDがファイル名に書かれています。セッションファイルをテキストエディタで開くと、下図の様に、キー「session_test」でセッション情報が保存されています。セッション情報の読み出し次に、セッション情報を読み出すサンプルを示します。ファイル名はread_session_info.phpとします。<p>セッション情報がセットされています。<p>セッション情報はセットされていません。?><p>セッション情報がセットされています。?><p>セッション情報はセットされていません。この関数を呼ぶことによって、クッキー情報からわかるクライアントに相当するセッション情報が準備されます。読み出し部分は、$_SESSION配列を使って、セッション情報にsession_testキーが定義されていたら、値を表示するようにしています。アクセスしたブラウザの結果を示します。set_session_info.phpで設定したセッション情報が共有されています。クッキーでの共有と違い、ブラウザ側には、セッション情報を隠しておくことができます。ブラウザで変更することもできません。ログイン認証状況などをセッション情報に保存しておくことによって、会員サイトでユーザごとに個別のサービスを行う処理を実現することができます。セッション情報の破棄では、次にセッション情報を破棄し、削除するサンプルを示します。ログアウトしたときなどセッションが終了したときは、セッションを破棄しておく必要があります。<p>セッション情報(名前:session_test)を破棄します。content="ie=edge"><title>セッション情報の破棄</title></head><body><p>セッション情報(名前:session_test)を破棄します。session_start関数を呼んでます。次に、$_SESSION配列を空配列に初期化します。続いて、クッキーのセッションIDを無効にしています。ini_get関数でPHPの設定を読み出しています。クッキーをセッションIDとして使用するかを設定しています。7行目はクッキーを使う設定になってるときだけ、クッキー無効化の処理をしています。$param変数にはsession_get_cookie_params関数の出力を代入しています。session_get_cookie_params関数は、セッションID用のクッキーのパラメータを取得する関数です。これはマニュアルのリンクを載せておきますね。セッションIDを無効にするときに、パラメータを引数で指定するために使います。session_name関数は、セッションID用のクッキーのキーを調べる関数です。引数を渡すと変更することも出来るようです。ここでは、この後にsetcookie関数で、セッションID用クッキーを上書きするために使ってます。Manualwww.php.netそして、この処理の最後、setcookie関数で、クッキーの期限を現在より過去にすることで、クッキーを無効にしています。time()関数で、現在のタイミングスタンプを取得して、それよりマイナスの時刻、ここでは42000秒前なので、12時間前ぐらいをクッキーの期限に設定することで無効にしています。ゼロを入れると、ブラウザが閉じるまで有効になってしまいます。最後にセッションファイルを削除します。session_destroy関数だけでやっていれば良さそうなものなのですが、PHP公式サイトのマニュアルを見ると、$_SESSIONの初期化、セッションID用クッキーの無効化もやっとくべきだとの記述があったため、上記のように、面倒な処理になってます。session_destroy関数だけやればちゃんと消えたとしても、そうじゃないサーバ環境やPHPバージョンがあるかもしれないため、マニュアルには従っておいたほうが良いです。下にリンク貼っておきます。アクセスしたときのブラウザ表示です。デベロッパーツールのNetworkタブの情報によると、ちゃんと、サーバから送信されたレスポンスのヘッダには、Set-Cookieヘッダがついており、クッキー有効期限も過去になってます。アクセスしてみると、セッション情報がちゃんとクリアされていることがわかります。しているので、新しくセッションIDのクッキーはつくられます。消えてるので、ややこしいですが間違えないようにしてください。まとめこの記事では、PHPを使ってセッション情報を読み書きする方法を紹介しました。実際に動かしてみてくださいね。クッキーについても下の記事で、PHPを使った読み書きの方法を紹介していますので、よかったら一緒に理解しておきましょう。フォーム入力をブラウザに記憶させるクッキーの使い方こんにちは。ウェブの仕組みを理解する上では、クッキーとセッションの仕組みの理解が必須になります。この内クッキーについて理解を深めるために、この記事では、クッキーが実際どのように振る舞うかを、PHPのコードで紹介します。...kekaku.addisteria.com2019.09.10また、記事の更新をメルマガでお知らせいたします。それ以外にも、プログラミングに関する裏話などもしています。よかったら下のフォームからご登録ください。記事「windowsにvagrantとvirtualboxでWeb開発環境をつくろう。(その4)手作業でLAMP環境構築」にて、LAMP環境構築していますが、phpのバージョンは7.1を使っていました。今回は、前回、動かしてみたPHPで作ったウェブツール「2進数、16進数を10進数に変換するツール」のプログラム解説をしていきますね。※この記事には新しいバージョンがあります。9(最終回)~最終回となりました。今回は、前回、動かしてみたPHPで作ったウェブツール「2進数から10進数への変換ツール」のプログラム解説をしていきますね。プログラミングで大事な2進数・16進数こんにちは。ウェブプログラミング入門です。プログラミングの第一歩として簡単なプログラムを作り、Windowsパソコン上にサーバー環境を構築して、ブラウザで表示できるようになる方法を説明していきます。プログラミング未経験の方でも、ウェ...プログラミングWindows10にXAMPPでサーバー開発。複数のウェブサイトのテスト方法WindowsにXAMPPをインストールすると、ウェブサイトの開発を行うことができます。通常、ローカルサーバーはlocalhostと指定するとアクセスできます。今回は、もっとたくさんのドメインでウェブサイトをテストす...laravellaravelでtelescopeの導入手順laravelで開発するなら、telescopeというデバッガが便利です。laravelの公式パッケージとなってて、composerで導入することが出来ます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ホームプログラミングPHPプログラミングが分かるメルマガ講座プログラマに必要なスキルが身につく情報をメルマガで配信しています。登録してみてください。*マークの項目は入力必須です。「あなた専用カリキュラムと3ヶ月のサポート」で、もっと稼げるプログラマになれる講座、開催中。「プログラマとして独立したい」、「転職してプログラマとしてもっと給料をアップさせたい」と考えているのであれば、以下より詳細を御覧ください。『稼げるプログラマ育成講座』プロフィール自営のソフト開発者。小学3年のときにMSXでプログラミングを始めて、いつの間にか数十年たちました。大学ではc++を使いスパコンの研究、就職してからはcで自動車のエンジンやモータなどのパワープラント制御をやってました。今は、企業の業務改善ツールやウェブサイト・ウェブアプリを受託開発しています。・・・このブログでは、パソコン関係の仕事をしていくのに必要な情報をお伝えしています。IT業務で使えるプログラミングテクニック.。