前回の記事では「PHPデータベース学習におけるPDO属性の設定と取得方法」についてお届けしました。 」では、PHP で PDO 属性を設定および取得する方法に関する関連知識が詳しく紹介されています。この記事では、PHP フォームに関連する問題について見ていきます。皆様のお役に立てれば幸いです。
前の記事では、$_GET
変数と $_POST
変数を含む PHP の基本をすでに理解しました。フォーム内の情報を取得するために使用されます。注意が必要な知識ポイントは、PHP フォームのユーザー入力とフォームの検証です。次に、PHP のフォーム入力とフォーム検証に関する関連知識を見てみましょう。
PHP フォームとユーザー入力
PHP フォームとユーザー入力を理解するには、まずそれが何であるかを理解する必要があります。フォーム。正確に言うと、Web フォームはインタラクティブなプラットフォームであり、その主な機能は閲覧者と Web サイトの間にインタラクティブなプラットフォームを提供することです。フォームは主に Web ページでデータをサーバーに送信するために使用されます。
例えば、情報を登録する際に使用するフォームは、情報を入力する際に送信する必要がありますが、このときの送信とは、登録時のフォームの内容をクライアントのブラウザからサーバーに転送し、プログラムの処理後、ユーザーが必要とする情報がクライアントのブラウザに返され、ユーザーの情報を取得することで、PHP と Web フォームが対話できるようになります。このようなインタラクティブなプラットフォームを提供するだけです。
次に、フォームの例を見てみましょう。さらに関連する知識が必要な場合は、「
HTMLTutorial
これが私たちの内容です。フォームを呼び出すと、そこに入ります。 入力された情報、つまりフォーム情報はどこに送信されるのでしょうか。 「送信」をクリックすると、フォーム内のデータが POST 形式で form.php ページに送信されます。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP中文网</title> </head> <body> <form action="form.php" method="post"> 名字: <input type="text" name="fname"><br> 年龄: <input type="text" name="age"><br> <input type="submit" value="提交"> </form> </body> </html>from.php に送信する実行結果は次のとおりです:
ユーザー入力が完了したら、フォームを次のようにする必要があります。現時点では検証済みです。ユーザー入力は、可能な限りクライアント側のスクリプトを介して検証される必要があります。ブラウザーの検証が高速になり、サーバーの負荷が軽減されます。
ユーザー入力をデータベースに挿入する必要がある場合は、サーバー検証の使用を検討する必要があります。サーバー上のフォームを検証する良い方法は、別のページにジャンプするのではなく、フォームをそれ自体に渡すことです。これにより、ユーザーは同じフォーム ページでエラー メッセージを取得できます。ユーザーがエラーを見つけやすくなります。それでは、フォーム検証の関連知識を見てみましょう。 PHP フォームの検証PHP フォームを処理するときは、セキュリティを考慮する必要があります。 PHP フォーム データの安全な処理をデモンストレーションします。ハッカーやスパムを防ぐために、フォームのデータ セキュリティ検証を実行する必要があります。次に、フォーム内の必須およびオプションのテキスト フィールド、ラジオ ボタン、および送信ボタンを例を通して見てみましょう。
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 echo "欢迎你:".$_POST["fname"] ."<br/>"; echo "你的年龄是:".$_POST['age']; ?>
出力結果:
注意すべき点異なるフィールドは異なる検証ルールであるということです。上の例の異なるフィールドの検証ルールは次のとおりです。
名前の検証ルールは必須であり、文字とスペースのみを含めることができます。電子メール検証ルールは必須であり、有効な電子メール アドレス (「@」と「.」を含む) である必要があります。 URL 検証ルールはオプションであり、存在する場合は、有効な URL が含まれている必要があります。メモの検証ルールはオプションの複数行の入力フィールドです。性別検証ルールが必要であり、いずれかを選択する必要があります。
$_SERVER["PHP_SELF"] <span style="font-size: 16px;"><strong> </strong></span>Variable
$_SERVER["PHP_SELF"]
$_SERVER["PHP_SELF"] は、別のページにジャンプするのではなく、フォーム データをページ自体に送信します。このようにして、ユーザーはフォーム ページでエラー メッセージ情報を取得できます。
<strong><span style="font-size: 16px;">## 関数</span></strong>
htmlspecialchars()
函数把特殊字符转换为 HTML 实体。这意味着 之类的 HTML 字符会被替换为 92d33664ec5f827b86e068a341370a86 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
其中我们需要注意的是:
$_SERVER["PHP_SELF"]
变量能够被黑客利用,如何避免 $_SERVER["PHP_SELF"]
被利用?
$_SERVER["PHP_SELF"]
可以通过 htmlspecialchars()
函数来避免被利用。
form 代码如下所示:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
尝试该漏洞失败!
通过PHP验证表单数据
我们要做的第一件事是通过 PHP 的 htmlspecialchars()
函数传递所有变量。在用户提交该表单时,我们还要做两件事:
首先通过 PHP trim()
函数去除用户输入数据中不必要的字符,比如多余的空格、制表符、换行等,然后通过 PHP stripslashes()
函数删除用户输入数据中的反斜杠(\
)。接下来我们创建一个检查函数,我们把函数命名为 test_input()
。最后我们能够通过 test_input()
函数检查每个 $_POST
变量。
我们将验证程序可以放到上述示例中去,示例如下:
PHP中文网(php.cn) PHP 表单验证实例
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字:
E-mail:
网址:
备注:
性别: 女 男
您输入的内容是:"; echo $name; echo "
"; echo $email; echo "
"; echo $website; echo "
"; echo $comment; echo "
"; echo $gender; ?>
输出结果:
其中我们需要注意的是:
我们在执行以上脚本时,会通过$_SERVER["REQUEST_METHOD"]
来检测表单是否被提交 。如果 REQUEST_METHOD
是 POST, 表单将被提交 - 数据将被验证。如果表单未提交将跳过验证并显示空白。在以上实例中使用输入项都是可选的,即使用户不输入任何数据也可以正常显示。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
以上がPHPフォーム学習フォーム入力と検証の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。