php——10-表单验证

版权声明:未经同意,不得随意转载转载 https://blog.csdn.net/lucky541788/article/details/82930873

表单验证实例

PHP表单中需引起注重的地方?

$_SERVER["PHP_SELF"] 变量有可能会被黑客使用!

当黑客使用跨网站脚本的HTTP链接来攻击时,$_SERVER["PHP_SELF"]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此$_SERVER["PHP_SELF"]的字符串就会包含HTTP链接后面的JavaScript程序代码。

如何避免 $_SERVER["PHP_SELF"] 被利用?

$_SERVER["PHP_SELF"] 可以通过 htmlspecialchars() 函数来避免被利用。
htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。
form 代码如下所示:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

当用户提交表单时,我们将做以下两件事情:

  • 使用 PHP trim() 函数去除用户输入数据中不必要的字符 (如:空格,tab,换行)。
  • 使用PHP stripslashes()函数去除用户输入数据中的反斜杠 ()

将这些过滤的函数写在一个我们自己定义的函数中,这样可以大大提高代码的复用性。

<?php
// 定义变量并默认设置为空值
$name = $email = $gender = $comment = $website = "";
 
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}
 
function test_input($data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

注意我们在执行以上脚本时,会通过$_SERVER["REQUEST_METHOD"]来检测表单是否被提交 。如果 REQUEST_METHOD 是 POST, 表单将被提交 - 数据将被验证。如果表单未提交将跳过验证并显示空白。

猜你喜欢

转载自blog.csdn.net/lucky541788/article/details/82930873