@mmmochiii

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Webアプリ開発で使う $_SESSION などの仕組みを体系的に学べる教材が知りたい

背景

現在、PHPを学習中の初学者です。

Udemyのハンズオン講座を見ながら、実際にアプリを作成して学習しています。

その中で、フォーム送信やログイン機能の実装時に、以下のようなPHPのスーパーグローバル変数が出てきました。

  • $_POST
  • $_SESSION

$_POST$_SESSION がPHPに最初から用意されているものだということや、公式ドキュメントを見れば書き方を確認できることは理解しています。

困っていること

使い方自体は講座で紹介されるので、コードを真似して動かすことはできます。

ただ、以下のような部分で理解が浅いと感じています。

  • なぜ $_SESSION のような仕組みが必要なのか
  • なぜログイン状態を保持する必要があるのか
  • CookieとSessionは何が違うのか
  • フォームで送信された値は、サーバ側でどのように扱われるのか
  • GET / POST / Cookie / Session のような仕組みは、PHP以外の言語やフレームワークでも共通する考え方なのか
  • Webアプリを設計するうえで、こうした仕組みをどのように学べばよいのか

たとえば、講座では $_SESSION の使い方自体は紹介されるのですが、

  • なぜその仕組みが必要なのか
  • Webアプリ全体の中でどういう役割を持っているのか
  • PHP以外でも同じような考え方があるのか

といった部分が、まだうまくつながっていません。

自分なりに考えていること

PHPの文法だけではなく、以下のようなWeb技術の基礎を学ぶ必要があるのではないかと考えています。

  • HTTP
  • リクエスト / レスポンス
  • GET / POST
  • Cookie
  • Session
  • フォーム送信
  • 認証
  • セキュリティ

質問したいこと

PHPなどのWebアプリ開発を学ぶ初学者が、$_POST$_SESSION、Cookie、HTTP、フォーム送信、認証などの「なぜ必要なのか」を体系的に理解するには、どのような教材・学習方法がおすすめでしょうか?

書籍でも構いませんが、できればUdemyなどの動画教材を優先して探しています。

文法の説明だけでなく、Webアプリの仕組みや設計時の考え方につながる教材があれば知りたいです。

0 likes

4Answer

(書籍中心になってしまいますが)Webの足回りについてはWebを支える技術 ―⁠― HTTP,URI,HTML,そしてRESTが個人的によかったです。
セッション、認証、セキュリティについてはWebブラウザセキュリティ ― Webアプリケーションの安全性を支える仕組みを整理するなどでしょうか。

これらを押さえると、PHPのセッション処理のページはよい便覧になっていると思います。

実際にアプリを作成して学習されていることはよいことです。ちょっとリスクもありますが、自宅のルータをいじって簡単なWebサーバーを立てて動かしてみるのもよいかもしれません(Apache HTTPDやNginxなども理解しやすくなっているはずです)。

1Like

Comments

  1. @mmmochiii

    Questioner

    回答ありがとうございます。

    PHPの $_SESSION などを学んでいて、「使い方」よりも「なぜこの仕組みが必要なのか」「Webアプリ全体の中でどういう役割を持っているのか」が気になっていたので、Web技術の基礎として学ぶのがよさそうだと分かり、納得できました。

    動画教材については自分でも探してみたのですが、やはりこのあたりを体系的に扱っているものはあまり多くなさそうですね。

    教えていただいた書籍は読む候補には入っていたのですが、どういう理由でおすすめされるのかまでは分かっていなかったので、とても参考になりました。

    まずは今進めているPHPの学習を一通り終わらせてから、教えていただいた書籍も読んでみようと思います。

    ルーター周りを触って簡単なWebサーバーを立てる学習については、今の自分にはまだ少し早そうなので、もう少し基礎を進めてから挑戦してみようと思います。

質問者様のご認識の通り、現在の悩みはPHPの文法ではなく「HTTPプロトコル」や「Webの仕組み(ステートレス性)」への理解で解決します。ここが繋がると、PHP以外の言語(Go、Node.js、Pythonなど)やフレームワーク(Laravel、Railsなど)を学ぶ際にも、すべて同じ知識が使い回せるようになります。初学者が「なぜこの仕組みが必要なのか」を体系的に、かつ仕組みの根本から納得できるおすすめの教材と学習方法を提案します。おすすめのUdemy動画教材文法解説にとどまらず、プロトコルの仕組みや「なぜSessionが必要なのか」というWebの全体像を解説している講座です。1. 『【2026年最新版】プログラミングを始める前に知っておきたい Web技術の基礎知識』特徴: コードを書く前段階の「Webの仕組み」に特化した講座です。学べること:HTTPリクエストとレスポンスの構造GETとPOSTの明確な違い「なぜSessionが必要なのか(HTTPが過去の通信を覚えない性質だから)」という根本の理由2. 『ちゃんと学ぶ、PHP + MySQL Webサーバーサイドプログラミング基礎』特徴: 丁寧な図解でサーバー側の動きを可視化してくれる定評のある講座です。学べること:フォームから送信されたデータがサーバー($_POST)に届くまでの流れCookieとSessionの連携イメージ(クッキーは会員証、セッションは本棚のデータのような関係性)映像でイメージを掴むためのYouTube動画(無料)Udemyを買う前に、まず「概念のイメージ」を脳内に作るための無料の補助教材です。『セッションとクッキーの違いとは?【Webエンジニア必須知識】』「しまぶーのIT大学」などの有名教育系YouTuberが解説している10〜15分程度の動画がおすすめです。アニメーションや図解を使って、ブラウザとサーバーの間で何が起きているのかが視覚的に理解できます。体系的に知識を整理できるおすすめ書籍動画はどうしても「点」の知識になりがちですが、書籍は網羅的に「線」で学べるため、1冊手元に置くことを強く推奨します。初心者向けに最も売れている2冊です。1. 『イラスト図解式 この一冊で全部わかるWeb技術の基本』特徴: 見開き1テーマで、左ページが解説、右ページがすべてイラスト図解になっています。おすすめ理由: 「SessionとCookieのやり取り」がイラストで一発で理解できます。辞書代わりに使えます。2. 『プロになるためのWeb技術入門』特徴: 「なぜこの技術が生まれたのか」という歴史の背景に沿って解説されています。おすすめ理由: まさに質問者様が悩んでいる「なぜログイン状態を保持しなければならないのか」という疑問に、Webの発展の歴史から答えてくれる名著です。仕組みを脳に定着させるおすすめの学習方法教材を見るだけでなく、以下の「実験」を自分の手を動かしてやってみてください。一気に理解が深まります。デベロッパーツール(F12)を覗く:ChromeなどのブラウザでF12を押し、「Network」タブや「Application」タブ(Cookieの確認画面)を開いてください。自分の作ったPHPアプリでログインした際、Cookieに「PHPSESSID」という怪しげな文字列が自動で保存される瞬間をその目で確認してみてください。あえてセッションを使わずに作ってみる:「$_SESSIONを使わずにログイン機能を実装しようとすると、どれだけ不便(または危険)か」をコード上で想像、または実験してみてください。技術の「ありがたみ」が魂から理解できます。

0Like

どの教材が良いかは質問者さんの知識レベルや好みによるので自分には紹介できませんが、質問内容からポイントとなりそうなことを書いておきます。

Web アプリの開発に当たって以下のことを常に意識すると理解力が大幅に違ってくると思います。

(1) HTML 通信はステートレス (状態を保持しない)。なので、HTML 通信を使う PHP のような Web アプリも基本ステートレス

(2) クライアント側で起こっていることとサーバー側で起こっていることを区別して考える

たとえば、講座では $_SESSION の使い方自体は紹介されるのですが、
・なぜその仕組みが必要なのか

本来ステートレスである Web アプリにおいて、必要なユーザー情報を保持するためです。

・Webアプリ全体の中でどういう役割を持っているのか

サーバーがクライアントから要求を受けると、サーバー側ではその要求を処理するためにプロセス (またはスレッド) を一つ確保し、そのプロセス内で処理を行います。サーバーでの処理が完了してユーザーに応答を返した後は、受け取ったユーザー情報はすべて破棄します。

それで困るのは、例えばですが、買い物カゴがあります。ユーザーが買い物カゴに商品を入れても、レジに進むと買い物カゴは空になってしまいます。そのユーザーの買い物カゴのデータを保持するのに Session を使い、サーバー側でデータを保持しておきます。

どの買い物カゴがどのユーザーのものかを識別するのに Cookie を使います。Cookie はユーザーが要求をかけるたびに要求ヘッダに含まれて送られてくるので、それでユーザーと Session を関連付けることができます。

ログイン状態もステートレスでは状態が保てず、ユーザーはアクセスするたび毎回ログイン操作を行わなければなりません。

なので、ログイン完了後のアクセスではユーザーがログイン済みという情報をクライアントからサーバーに伝える必要があります。ログイン画面でユーザーがログインに成功したら、サーバーから認証チケットを認証クッキーに入れてクライアントに送るということで解決できます。

・PHP以外でも同じような考え方があるのか

Web アプリは基本ステートレスなので、PHP に限らずすべて状態を保持する仕組みが必要です。その仕組みは Session, Cookie 以外にもいろいろありますが。

0Like

「体系的に学ぶ」というのが微妙に違うのかなと。確かにGETやPOSTなどHTTPメソッドや、認証のところなどは体系的に学べる余地があるかとは思いますが、むしろ投稿者さんは「こういうときはどうなっているんだろう」という知識の応用や適用のところで困ってるように見えました。
適切な問いを立てるところまで考えが進んでいるので、ひとつひとつ(AIに尋ねてみたり)疑問を調べていくのが良いのかなと思いました。体系的に説明されてないような疑問もあるためです。

0Like

Your answer might help someone💌