CodeIgniterでPOSTデータを取得する方法を初心者向けに徹底解説!
生徒
「Webサイトでお問い合わせフォームに入力した内容を、サーバーに送るにはどうすればいいんですか?」
先生
「それには『POST』という仕組みを使います。CodeIgniterというフレームワークを使うと、とても安全にデータを取得できるんですよ。」
生徒
「初心者でも簡単に書けるものなのでしょうか?」
先生
「もちろんです!まずはデータの受け取り方の基本から、順番に見ていきましょう。」
1. Webサイトの「POST」とは?情報を運ぶトラックの役割
インターネットで買い物をしたり、掲示板に書き込んだりするとき、私たちは画面上の入力欄に文字を打ち込みます。この打ち込んだ情報を、自分のパソコンからWebサーバー(サイトのデータが置いてある大きなコンピューター)へ運ぶための手段の一つが「POST(ポスト)」です。
イメージとしては、郵便ポストに手紙を投函するようなものです。手紙(データ)を封筒に入れて、中身が見えないように安全に届けるのがPOSTの特徴です。これに対して、URLの後ろにデータをくっつけて運ぶ「GET(ゲット)」という方法もありますが、パスワードや個人情報を送るときは、必ずこのPOSTを使います。CodeIgniter(コードイグナイター)という道具を使うと、このPOSTで届いた荷物を、誰でも簡単に取り出すことができるようになります。
2. CodeIgniterでPOSTデータを受け取る魔法の合言葉
CodeIgniterでPOSTされたデータを受け取るには、専用の書き方があります。これを「メソッド」と呼びます。プログラミングにおいてメソッドとは、特定の作業を行ってくれる「魔法の呪文」のようなものです。
CodeIgniter 4(最新版)では、$this->request->getPost()という命令を使います。この一行を書くだけで、送信されてきたデータを変数(データを一時的に入れておく箱)に保存することができます。自分で複雑なプログラムを組まなくても、CodeIgniterが裏側で安全に処理してくれるので、初心者でも安心して使うことができます。まずは、一番シンプルな入力フォームのHTMLを見てみましょう。
<form action="/submit" method="post">
<label for="username">お名前:</label>
<input type="text" name="username" id="username">
<button type="submit">送信する</button>
</form>
3. 特定のデータだけを取り出す方法
フォームには「名前」「メールアドレス」「本文」など、たくさんの入力項目があります。特定の項目だけを取り出したいときは、カッコの中にその名前(name属性)を指定します。例えば、先ほどのHTMLでname="username"となっていた名前の部分だけを取り出すには、次のように書きます。
// 送信された「username」というデータを受け取って、$nameという箱に入れる
$name = $this->request->getPost('username');
// 画面に表示してみる
echo "こんにちは、" . $name . "さん!";
このように、カッコの中に欲しい情報の「名前」を書くだけで、簡単に中身を取り出すことができます。プログラミング未経験の方でも、「どの箱からどの値を取り出すか」というイメージを持てば、難しいことはありません。
4. 複数のデータをまとめて取得する便利な技
入力項目が10個も20個もある場合、一つずつ命令を書いていくのは大変です。そんなときは、POSTされたすべてのデータを一度にまとめて受け取ることも可能です。カッコの中を空っぽにして命令を実行すると、すべてのデータが「配列(はいれつ)」という形式で手に入ります。
配列とは、一つの大きな箱の中に、仕切りがあって複数のデータが整理されている状態のことです。これを使えば、お問い合わせフォームの全内容を一括でデータベース(情報を貯めておく倉庫)に保存する準備が整います。次のコードは、すべてのデータをまとめて取得し、その中身を画面に表示する例です。
// POSTされたすべてのデータをまとめて取得する
$allData = $this->request->getPost();
// データの構造をわかりやすく表示する
print_r($allData);
5. データが空っぽだった時の「もしも」の対策
ユーザーが何も入力せずに送信ボタンを押してしまうこともあります。そんなとき、プログラムが「データがないよ!」と驚いてエラーを出さないように、「初期値(デフォルト値)」を設定することができます。
CodeIgniterでは、データの名前の後にコンマを打って、もし空っぽだったときに代わりに入れる文字を指定できます。これを設定しておくと、プログラムが止まることなくスムーズに動いてくれます。これは、おもてなしの心を持った優しいプログラムを作るための第一歩です。
// 「comment」が空っぽなら「コメントはありません」という文字を代わりに入れる
$comment = $this->request->getPost('comment') ?? 'コメントはありません';
echo "受け取ったメッセージ:" . $comment;
6. セキュリティの基本!XSS攻撃から守る方法
インターネットの世界には、悪意を持って変なプログラムを送り込んでくる人もいます。例えば、入力欄にJavaScriptという命令を書き込んで、サイトを壊そうとする「XSS(クロスサイトスクリプティング)」という攻撃があります。
CodeIgniterには、これを自動で防いでくれる機能が備わっています。自分で「危ない文字はないかな?」とチェックするのは大変ですが、フレームワークが提供する安全な取得方法を使うことで、初心者でもセキュリティの高いサイトを作ることができます。データを取得した後は、必ず「エスケープ処理(安全な文字に変換すること)」を行う癖をつけましょう。PHPの標準機能であるesc()関数を組み合わせるのが一般的です。
7. POSTデータを使って数値を計算してみよう
取得したデータは、文字だけでなく数字として扱うこともできます。例えば、商品の個数を受け取って、合計金額を計算するプログラムを作ってみましょう。入力されたデータは最初は「文字」として扱われますが、計算に使うと自動的に「数字」として処理されます。これがプログラミングの便利なところです。
// フォームから個数(quantity)を受け取る
$quantity = $this->request->getPost('quantity');
$price = 500; // 1個500円
// 合計金額を計算する
$total = $price * $quantity;
echo "合計金額は " . $total . " 円です。";
このように、ユーザーが入力した値を使って計算し、その結果を画面に返すことで、動的な(中身が変わる)Webページが出来上がります。
8. データの種類を確認するバリデーションとの連携
POSTでデータを受け取るときにセットで覚えておきたいのが「バリデーション」です。これは「入力されたデータが正しい形式かどうかをチェックする検閲官」のような役割をします。例えば、「メールアドレスの欄に、ちゃんと@マークが入っているか?」「年齢の欄に文字が混ざっていないか?」といったことを確認します。
POSTデータを取得する前にこのチェックを通すことで、おかしなデータがシステムに入り込むのを防ぎます。CodeIgniterでは、このバリデーション機能も非常に強力で、簡単なルールを書くだけで厳重なチェックが可能です。データを取得することに慣れてきたら、次はぜひこのチェック機能についても学んでみてください。
9. コントローラーでの実際の記述の流れ
最後に、実際の開発でよく使われる「コントローラー」というファイルの中での全体の流れを確認しましょう。CodeIgniterでは、処理の司令塔となる場所にプログラムを書いていきます。ここでは、届いたデータを判別して、画面に表示するまでの標準的な形を紹介します。
public function create()
{
// 1. POST送信されたかどうかをチェックする
if ($this->request->getMethod() === 'post') {
// 2. データを安全に取得する
$title = $this->request->getPost('title');
$body = $this->request->getPost('body');
// 3. 取得した内容を画面に渡す(ここでは簡易的に表示)
return "記事タイトル:「" . esc($title) . "」を保存しました!";
}
// POSTでない場合は、入力フォームの画面を表示する
return view('my_form');
}
このように、「もしPOST送信だったらデータを処理する、そうでなければフォームを見せる」という流れを作るのがWebアプリの基本です。このパターンを覚えるだけで、掲示板やブログの投稿機能など、多くの機能が作れるようになります。
10. なぜCodeIgniterを使うと楽なのか?
プログラミングを始めたばかりの頃は、専門用語が多くて挫折しそうになるかもしれません。しかし、CodeIgniterのようなフレームワークは、世界中の賢いエンジニアたちが「どうすれば楽に、安全に開発できるか」を考えて作られた道具箱です。本来なら何十行も書かなければいけないセキュリティ対策やデータ処理を、たった一行の命令で済ませることができます。
パソコンを触るのが初めての方でも、今回学んだgetPost()の使い方さえマスターすれば、ユーザーと対話するWebサイトを作ることができます。まずは自分の手でコードを書いてみて、画面に入力した文字が表示される感動を味わってみてください。それがプログラミング上達の最短ルートです。