ホームページ バックエンド開発 PHPチュートリアル PHP を使用してフォーム入力をフィルタリングして検証するにはどうすればよいですか?

PHP を使用してフォーム入力をフィルタリングして検証するにはどうすればよいですか?

Aug 18, 2023 pm 03:39 PM
php フィルター 確認する

PHP を使用してフォーム入力をフィルタリングして検証するにはどうすればよいですか?

PHP を使用してフォーム入力をフィルタリングおよび検証するにはどうすればよいですか?

Web アプリケーションを開発する場合、ユーザー入力は非常に重要な部分です。アプリケーションのセキュリティと安定性を確保するには、ユーザーが送信したデータをフィルタリングして検証する必要があります。この記事では、PHP を使用してフォーム入力をフィルタリングおよび検証する方法について説明します。

  1. 入力データのフィルタリング

PHP には、filter_input()## など、入力データのフィルタリングに使用できる組み込み関数がいくつかあります。 # および filter_var()。これらの関数は、さまざまな検証ルールに基づいてさまざまなデータ型をフィルタリングできます。

ユーザーが送信した電子メール アドレスをフィルターする方法を示す例は次のとおりです。

$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);

if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "邮箱地址验证通过!";
} else {
    echo "请输入有效的邮箱地址!";
}
ログイン後にコピー

上の例では、

filter_input() 関数を使用して次のリクエストを実行します。 a POST ユーザーが送信した電子メール フィールドの値を取得し、FILTER_SANITIZE_EMAIL フィルターを使用して不正な文字を削除します。次に、filter_var() 関数と FILTER_VALIDATE_EMAIL フィルターを使用して、フィルターされた電子メール アドレスが正当であることを確認します。

    入力データの検証
PHP には、入力データが特定のルールに準拠しているかどうかを検証するための関数もいくつか用意されています。たとえば、

preg_match() 関数は正規表現を使用してデータを検証できます。

次の例は、ユーザーが送信したパスワードが要件を満たしているかどうかを確認する方法を示しています。

$password = $_POST['password'];

if (preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*d).{8,}$/", $password)) {
    echo "密码符合要求!";
} else {
    echo "密码不符合要求!";
}
ログイン後にコピー

上の例では、正規表現を使用して、パスワードに at が含まれているかどうかを確認しています。少なくとも 1 つの小文字、1 つの大文字、および 1 つの数字で、少なくとも 8 文字の長さである必要があります。

    SQL インジェクション攻撃の防止
ユーザー入力のフィルタリングと検証に加えて、SQL インジェクション攻撃の防止にも注意を払う必要があります。 SQL インジェクションは、ユーザーが送信したデータに悪意のある SQL コードを挿入する攻撃方法です。

SQL インジェクション攻撃を防ぐには、パラメーター化されたクエリまたは準備されたステートメント (準備されたステートメント) を使用する必要があります。これにより、ユーザーが入力したデータをクエリ ステートメントに直接結合するのではなく、ユーザーが入力したデータをパラメータとしてデータベース クエリに渡すことができます。

次に、プリペアド ステートメントを使用してデータベースにクエリを実行する例を示します。

$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
ログイン後にコピー

上の例では、コロン (:) を使用してパラメータを定義し、次に

bindParam を使用します。 ()関数は変数をパラメータにバインドします。そうすることで、ユーザーが入力したデータがクエリ ステートメントに直接挿入されなくなり、SQL インジェクションのリスクが軽減されます。

概要:

Web アプリケーションを開発する場合、ユーザー入力のフィルタリングと検証は非常に重要な部分です。 PHP は、ユーザー入力をフィルタリングして検証し、SQL インジェクション攻撃を防ぐための豊富な関数を提供します。これらの機能を正しく使用することで、アプリケーションのセキュリティと安定性が向上し、ユーザーにより良いユーザー エクスペリエンスを提供できます。この記事が、フォーム入力を適切にフィルタリングして検証する方法を理解するのに役立つことを願っています。

以上がPHP を使用してフォーム入力をフィルタリングして検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

See all articles