カテゴリ: CodeIgniter 更新日: 2026/08/02

CodeIgniterでお問い合わせフォームを作成!初心者向けのWeb開発入門

CodeIgniterでお問い合わせフォーム付きサイトを構築する例
CodeIgniterでお問い合わせフォーム付きサイトを構築する例

先生と生徒の会話形式で理解しよう

生徒

PHPのフレームワークであるCodeIgniterを使って、自分でWebサイトにお問い合わせフォームを作ってみたいです。

先生

素晴らしい目標ですね。CodeIgniterは軽量で動作が速く、初心者の方でも構造を理解しやすいので、最初のステップとして最適です。

生徒

プログラミングはほとんど経験がないのですが、Webサイトの裏側でデータがどう動いているのか不安です。

先生

安心してください。Webサイトのフォームも、お店での注文と同じような手順でデータを受け取っているだけですよ。順を追って仕組みを解説していきますね。

1. CodeIgniterとお問い合わせフォームの基礎知識

1. CodeIgniterとお問い合わせフォームの基礎知識
1. CodeIgniterとお問い合わせフォームの基礎知識

まず、CodeIgniterとは何かを簡単に説明します。CodeIgniterは、PHPというプログラミング言語を使って、Webアプリケーションを効率よく開発するための道具箱のようなものです。これをフレームワークと呼びます。ゼロからプログラムを書くのは大変ですが、フレームワークを使うと、よくある「お問い合わせ機能」などを効率よく作成できます。

今回作るお問い合わせフォームは、ユーザーが画面から入力した内容を、あなたのメールアドレスに送るための機能です。Web開発の世界では、入力する場所をフォーム、受け取った内容を処理する場所をコントローラー、画面のデザイン部分をビューと呼ぶルールがあります。この仕組みをMVC(モデル・ビュー・コントローラー)と呼びますが、今は「役割分担をしているんだな」と覚えておけば大丈夫です。

2. お問い合わせフォームの画面を作る

2. お問い合わせフォームの画面を作る
2. お問い合わせフォームの画面を作る

まずは、ユーザーが見る入力画面(ビュー)を作りましょう。Webサイトの画面は、HTMLという言葉で書かれています。CodeIgniterでは、このHTMLファイルを専用のフォルダに置くことで、Webブラウザに表示させることができます。

フォームを作る時は、入力内容をどこに送るか(アクション)と、どうやって送るか(メソッド)を指定します。今回は「POST」という形式を使います。これは、データをこっそりと箱に入れて送るようなイメージで、セキュリティの観点からフォーム送信では一般的です。


<form action="/contact/send" method="post">
    <label>お名前</label>
    <input type="text" name="name">
    <label>メールアドレス</label>
    <input type="email" name="email">
    <label>内容</label>
    <textarea name="message"></textarea>
    <button type="submit">送信する</button>
</form>

3. ユーザーからのデータを受け取る

3. ユーザーからのデータを受け取る
3. ユーザーからのデータを受け取る

次に、ユーザーが送信ボタンを押した時、そのデータを受け取るコントローラーを作成します。コントローラーは、Webサイトの司令塔のような役割です。フォームから送られてきたデータは、CodeIgniterの機能を使うと驚くほど簡単に取得できます。

ここで重要なのが入力チェック(バリデーション)です。例えば、メールアドレスの欄に日本語が書かれていたり、空っぽのまま送信されたりすると困りますよね。CodeIgniterには、正しい形式かどうかを確認する便利な機能が最初から備わっています。これを使うことで、エラーを防ぎ、安全なサイト運営が可能になります。


public function send() {
    $name = $this->request->getPost('name');
    $email = $this->request->getPost('email');
    $message = $this->request->getPost('message');
    
    if (empty($name)) {
        echo 'お名前を入力してください';
    }
}

4. 送信処理とメール送信の仕組み

4. 送信処理とメール送信の仕組み
4. 送信処理とメール送信の仕組み

データを受け取ったら、次は実際にメールを送信する処理を書きます。PHPにはメールを送るための仕組みがありますが、CodeIgniterを使うと設定ファイルを記述するだけで、簡単にメールを送ることができます。これにはSMTP(メール送信のためのルール)などの専門用語が出てきますが、まずは「プログラムがメールサーバーに手紙を届ける手続き」だと思ってください。

ここまでの手順を整理すると、1. ユーザーがフォームに入力する、2. コントローラーがデータを受け取る、3. バリデーションで内容を確認する、4. メールを送る、という流れになります。この流れがWebアプリ開発の最も基本的な動きなのです。


$emailService = \Config\Services::email();
$emailService->setTo('your-email@example.com');
$emailService->setSubject('お問い合わせがありました');
$emailService->setMessage($message);
$emailService->send();

5. セキュリティ対策を忘れずに

5. セキュリティ対策を忘れずに
5. セキュリティ対策を忘れずに

Webサイトを作る上で絶対に欠かせないのがセキュリティ対策です。特にお問い合わせフォームは、悪意のあるユーザーが不正な命令を送り込んでくるターゲットになりやすい場所です。これを防ぐためにCSRF対策というものを行います。これは、フォームが正しいサイトから送られたものかを確認する「身分証明書」のようなものです。

CodeIgniterでは、設定を一行変えるだけでこの対策が有効になります。また、入力された内容をそのまま表示するのではなく、HTMLに変換するエスケープ処理という作業も大切です。これをしておかないと、サイトのデザインが崩れたり、最悪の場合はサイトが乗っ取られたりする危険があります。初心者でも、こうした対策を最初から意識するだけで、プロとしての第一歩を踏み出せます。

6. 開発環境の確認とデバッグ

6. 開発環境の確認とデバッグ
6. 開発環境の確認とデバッグ

最後に、プログラムが正しく動いているか確認する方法をお伝えします。開発中は、画面にエラーメッセージを表示させる設定にしておくと、どこで間違えたのかすぐにわかります。これをデバッグと呼びます。プログラミングにおいて、エラーが出ることは悪いことではありません。エラーメッセージを読み解く力こそが、プログラマーとしての実力を伸ばす鍵です。

もし画面が真っ白になってしまったら、落ち着いてブラウザの更新ボタンを押し、ログファイルという「プログラムの備忘録」を確認してみましょう。そこに必ずヒントが書かれています。CodeIgniterでの開発は、こうして一つずつ問題を解決していくパズルのような楽しさがあります。最初から完璧を目指す必要はありません。まずはフォームが正常に動作し、自分宛にメールが届くという小さな成功体験を積み重ねていくことが大切です。


if ($result) {
    echo '送信完了しました!';
} else {
    echo 'エラーが発生しました';
}
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルートとコントローラを対応付ける方法(名前付きルート)を初心者向けに解説
New2
Symfony
Symfonyで画像やファイルをアップロードする時のバリデーション完全ガイド!初心者でもわかる入力チェックの基本
New3
Laravel
Laravelで言語切替UIを作る!多言語対応(ローカリゼーション)実践ガイド
New4
CodeIgniter
CodeIgniterでローカル開発環境を構築する方法!初心者向け完全ガイド
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのキャッシュ管理を完全ガイド!初心者でもわかるメリットと注意点
No.2
Java&Spring記事人気No2
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
No.3
Java&Spring記事人気No3
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterとは?特徴・できること・他PHPフレームワークとの違いを完全解説
No.5
Java&Spring記事人気No5
Laravel
Laravelローカリゼーション入門!言語の取得と切り替え(App::getLocale / setLocale)を徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.7
Java&Spring記事人気No7
CodeIgniter
CodeIgniterのビュー共通化ガイド!初心者でもわかる部分ビューの読み込みとinclude設計
No.8
Java&Spring記事人気No8
Laravel
Laravelの条件分岐とループ処理をBladeで書く方法