0Pricing
PHP Academy · レッスン

フォームのバリデーション

セキュリティと正確性のためにユーザー入力を検証します

「フォームのバリデーション」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全3レッスンが含まれています。

フォーム入力の検証とセキュリティ対策

フォーム入力の検証とセキュリティ対策

次のレッスンへようこそ!このレッスンでは、フォームの内容が正確で、悪意のある攻撃から保護されるように、ユーザー入力を検証して安全に扱う方法を学びます。それでは始めましょう!

フォームのバリデーション — イラスト1

入力を検証し、安全に扱う理由

入力を検証し、安全に扱う理由

フォーム入力を検証し、安全に扱うことは、次の点で重要です。

  • データの正確性と使いやすさを確保する。
  • 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でファイルアップロードを扱う方法について学びます。引き続きコーディングに取り組みましょう!

フォームのバリデーション — イラスト10

よくある質問

「フォームのバリデーション」レッスンは無料ですか?

はい。「フォームのバリデーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. HTMLフォームを作成する
  2. PHPでフォームデータを処理する
  3. フォームのバリデーション
← PHP Academyに戻る