フォームのバリデーション
セキュリティと正確性のためにユーザー入力を検証します
「フォームのバリデーション」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全3レッスンが含まれています。
フォーム入力の検証とセキュリティ対策
フォーム入力の検証とセキュリティ対策
次のレッスンへようこそ!このレッスンでは、フォームの内容が正確で、悪意のある攻撃から保護されるように、ユーザー入力を検証して安全に扱う方法を学びます。それでは始めましょう!

入力を検証し、安全に扱う理由
入力を検証し、安全に扱う理由
フォーム入力を検証し、安全に扱うことは、次の点で重要です。
- データの正確性と使いやすさを確保する。
- SQLインジェクションやXSS攻撃などのセキュリティ脅威から保護する。
重要なポイント:ユーザー入力は、処理または保存する前に必ず検証してサニタイズしてください。
入力の検証
入力の検証
一般的な入力を検証するには、PHPの組み込み関数を使用します。
filter_var():メールアドレス、URL、整数を検証します。preg_match():正規表現に照らして入力を検証します。
例:メールアドレスを検証する場合:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = $_POST["email"];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Valid email: $email";
} else {
echo "Invalid email address.";
}
}
?>
入力のサニタイズ
入力のサニタイズ
不要な文字や有害なコードを取り除くには、入力をサニタイズします。例:
ヒント:データの種類に応じて適切なフィルターを指定し、filter_var()を使用してください。
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
echo "Sanitized Name: $name";
}
?>
クロスサイトスクリプティング(XSS)の防止
クロスサイトスクリプティング(XSS)の防止
XSS攻撃を防ぐには、特殊文字をエスケープします。次を使用してください。
htmlspecialchars():特殊文字をHTMLエンティティに変換します。
例:
ヒント:ユーザー入力をブラウザーに表示する前に、必ずエスケープしてください。
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$comment = htmlspecialchars($_POST["comment"]);
echo "Comment: $comment";
}
?>
SQLインジェクションの防止
SQLインジェクションの防止
SQLインジェクションは、悪意のあるコードがSQLクエリに挿入されることで発生します。これを防ぐには、プリペアドステートメントを使用してください。例:
重要なポイント:データベースとのやり取りには、必ずプリペアドステートメントを使用してください。
<?php
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "root", "");
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->execute(["username" => $_POST["username"]]);
$user = $stmt->fetch();
?>
一般的な検証パターン
一般的な検証パターン
一般的なパターンをいくつか紹介します。
- 電話番号の検証:
preg_match('/^\d{10}$/', $phone) - パスワードの検証:長さと複雑さを確認します。
例:強力なパスワードを検証する場合:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$password = $_POST["password"];
if (strlen($password) >= 8 && preg_match('/[A-Z]/', $password)) {
echo "Strong password!";
} else {
echo "Password must be at least 8 characters long and include an uppercase letter.";
}
}
?>
ファイルアップロードのセキュリティ対策
ファイルアップロードのセキュリティ対策
ファイルアップロードを扱うフォームでは、次の点を確認します。
- ファイルの種類とサイズを確認する。
- Webルートの外側にある安全なディレクトリにファイルを保存する。
例:
<?php
if ($_FILES["file"]["size"] < 500000 && in_array($_FILES["file"]["type"], ["image/jpeg", "image/png"])) {
move_uploaded_file($_FILES["file"]["tmp_name"], "/secure/location/" . $_FILES["file"]["name"]);
echo "File uploaded successfully!";
} else {
echo "Invalid file.";
}
?>
よくできました!
よくできました!
おめでとうございます!Webアプリケーションの安全性と信頼性を確保するために、フォーム入力を検証して安全に扱う方法を学びました。次のレッスンでは、PHPでファイルアップロードを扱う方法について学びます。引き続きコーディングに取り組みましょう!

よくある質問
「フォームのバリデーション」レッスンは無料ですか?
はい。「フォームのバリデーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全3レッスンが含まれています。
「フォームのバリデーション」で何を学びますか?
セキュリティと正確性のためにユーザー入力を検証します ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
PHP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「フォームのバリデーション」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPHP Academyレッスンでコードを書いて実行できますか?
はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- HTMLフォームを作成する
- PHPでフォームデータを処理する
- フォームのバリデーション