HTMLフォームとは何か
HTMLのフォーム(<form>
タグ)は、ユーザーが入力した情報をサーバーへ送信するための仕組みです。
ログインフォーム、検索フォーム、お問い合わせフォームなど、ウェブ上のやり取りには欠かせません。
例:検索フォーム
<form action="/search" method="GET">
<input type="text" name="q" placeholder="検索ワード">
<button type="submit">検索</button>
</form>
基本構造と必須属性
<form>
タグとaction
属性
action
:送信先URL(空だと現在のページに送信)method
:送信方法(GET
かPOST
)
<form action="/submit" method="POST">
<!-- フォーム内容 -->
</form>
GETとPOSTの違い
method | データの送信方法 | 主な用途 | 特徴 |
---|---|---|---|
GET | URLパラメータとして送信 | 検索、ページ切り替え | ブックマーク可、URLに見える |
POST | リクエストボディに送信 | ログイン、登録、送信フォーム | URLに表示されない |
入力フォームの部品(input要素)
<form>
<label>名前:
<input type="text" name="username" required>
</label>
<label>メール:
<input type="email" name="email">
</label>
<label>年齢:
<input type="number" name="age" min="0">
</label>
<label>パスワード:
<input type="password" name="password">
</label>
</form>
ラジオボタンとチェックボックス
<p>性別:</p>
<label><input type="radio" name="gender" value="male"> 男性</label>
<label><input type="radio" name="gender" value="female"> 女性</label>
<p>興味のある分野:</p>
<label><input type="checkbox" name="interest" value="html"> HTML</label>
<label><input type="checkbox" name="interest" value="css"> CSS</label>
ファイルアップロード
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="profile_image">
<button type="submit">アップロード</button>
</form>
※enctype="multipart/form-data"
が必須
セレクトボックスとテキストエリア
<label>国:
<select name="country">
<option value="jp">日本</option>
<option value="us">アメリカ</option>
<option value="uk">イギリス</option>
</select>
</label>
<label>自己紹介:
<textarea name="bio" rows="4" cols="40"></textarea>
</label>
送信とリセット
<button type="submit">送信</button>
<button type="reset">リセット</button>
type="submit"
:フォームを送信type="reset"
:入力内容を初期化
フォームのバリデーション(入力チェック)
<form>
<input type="text" name="username" required placeholder="必須入力">
<input type="email" name="email" pattern=".+@.+\..+" title="メール形式で入力してください">
<button type="submit">送信</button>
</form>
フォーム送信の仕組みとサーバー側の処理
GET送信例
/search?q=HTML
POST送信例(リクエストボディ)
username=John&email=john@example.com
セキュリティの注意点
- CSRF対策:送信元が正しいかをトークンで検証
- XSS対策:入力値をHTMLエスケープ
- SQLインジェクション対策:プレースホルダー付きSQLを使う
まとめと次のステップ
<form>
タグは入力と送信の基本- 部品や属性を組み合わせて自由にカスタマイズ可能
- 次はJavaScriptで動的なバリデーションやAjax送信に挑戦すると実用度がアップ