使用PHP验证表单的最佳方法

使用PHP验证表单的最佳方法,php,forms,validation,Php,Forms,Validation,用PHP验证表单最方便、最好的方法是什么?我不想让Javascript这样的语言来验证我的表单,我想知道只使用PHP进行表单验证的最佳方法,更干净的方法 我是PHP新手,我正在做一个注册页面,我完成了它,我想知道我所做的方法是否可以接受,是否有一种最好的、方便的、干净的方式来验证表单 这是我使用的方法: if (post form submitted (action same page)) { $errors = array(); // Initialize the variable err

用PHP验证表单最方便、最好的方法是什么?我不想让Javascript这样的语言来验证我的表单,我想知道只使用PHP进行表单验证的最佳方法,更干净的方法

我是PHP新手,我正在做一个注册页面,我完成了它,我想知道我所做的方法是否可以接受,是否有一种最好的、方便的、干净的方式来验证表单

这是我使用的方法:

if (post form submitted (action same page)) {
  $errors = array(); // Initialize the variable error as an array

  if (various controls for the username which must not occur) {
    $errors[] = 'Inputnot valid.';
  }

  // for example:
  if (empty($_POST['username']) || !ctype_alnum($_POST['username'])) {
    $errors[] = 'Username not valid.';
  }

  if (empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    $errors[] = 'Email not valid.';
  }

  if (empty($errors)) { // Check if the array is empty so that there are no errors
    echo 'everything is ok';
  } else { // There is errors
    foreach ($errors as $error) {
      echo $error;
    }
  }
}
// Begin HTML
<!DOCTYPE html>

如果您在服务器端验证数据,并且您的验证不需要应用程序业务逻辑,即您没有检查用户帐户中是否有足够的信用,那么您应该在控制器中进行验证

如果验证需要业务逻辑,则在模型内部实现它,并通过控制器调用它


如果您在服务器端验证数据,并且您的验证不需要应用程序业务逻辑,即您没有检查用户帐户中是否有足够的信用,那么您应该在控制器中验证,您应该查看此stackoverflow链接

如果验证需要业务逻辑,则在模型内部实现它,并通过控制器调用它

您应该查看此stackoverflow链接

尝试以下示例代码:

<?php
// define variables and set to empty values
$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"]);
  if(empty($name) || empty($email) || empty($website) || empty($comment)){
    $errors = 'Input not valid.';
  }
  else {
    //Do success stuff here...
  }
}


function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>
使用用户定义的函数验证请求的值

尝试以下示例代码:

<?php
// define variables and set to empty values
$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"]);
  if(empty($name) || empty($email) || empty($website) || empty($comment)){
    $errors = 'Input not valid.';
  }
  else {
    //Do success stuff here...
  }
}


function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

使用用户定义的函数验证请求的值

验证取决于您的程序逻辑。对用户输入的每个字段应用适当的逻辑。无效数据可能会破坏功能

两种清理:在db查询中使用的参数化或转义变量;在打印到html之前,也要使用htmlspecialchars或htmlentities进行清理。有时有更简单的方法:

消毒编号: $var=int$var; 它现在对db和html输出都是安全的

验证为所有安全字符的字符串数据,如字母数字用户名preg_替换或str_替换,并删除任何不需要的字符。Web搜索所需的正则表达式,并与preg_replace一起使用

密码:当您输入密码时,立即使用单向散列作为md5或更好。比较哈希值是否相等。你永远不必知道或存储实际的PW。通过将PW存储为散列,侵入您的用户表的人将看到一堆在输入PW字段时无法工作的散列。对散列加盐会使加密更难反转。ie在散列之前将9827345978457精确添加到每个密码。总是一样的不可用的盐

电子邮件:验证就是检查@和点,但它只是帮助用户避免拼写错误。清理电子邮件:为db参数化或转义,输出时使用htmlspecialchars


注意,当用户可以输入任何文本并使其成为有效的ie PWs或消息时,preg_replace不适用。这些是最难处理的输入。

验证取决于您的程序逻辑。对用户输入的每个字段应用适当的逻辑。无效数据可能会破坏功能

两种清理:在db查询中使用的参数化或转义变量;在打印到html之前,也要使用htmlspecialchars或htmlentities进行清理。有时有更简单的方法:

消毒编号: $var=int$var; 它现在对db和html输出都是安全的

验证为所有安全字符的字符串数据,如字母数字用户名preg_替换或str_替换,并删除任何不需要的字符。Web搜索所需的正则表达式,并与preg_replace一起使用

密码:当您输入密码时,立即使用单向散列作为md5或更好。比较哈希值是否相等。你永远不必知道或存储实际的PW。通过将PW存储为散列,侵入您的用户表的人将看到一堆在输入PW字段时无法工作的散列。对散列加盐会使加密更难反转。ie在散列之前将9827345978457精确添加到每个密码。总是一样的不可用的盐

电子邮件:验证就是检查@和点,但它只是帮助用户避免拼写错误。清理电子邮件:为db参数化或转义,输出时使用htmlspecialchars


注意,当用户可以输入任何文本并使其成为有效的ie PWs或消息时,preg_replace不适用。这些是最难处理的输入。

我建议从中选择一个包

PHP有几十种与表单相关的扩展,但以下是一些流行的扩展:

组件框架 全栈web框架 这些链接指向相应框架的文档页面。给他们一个阅读和选择一个最适合你


您应该使用进行安装。

我建议您从中选择一个软件包

PHP有几十种与表单相关的扩展,但以下是一些流行的扩展:

镇静 nt框架 全栈web框架 这些链接指向相应框架的文档页面。给他们一个阅读和选择一个最适合你


安装时应使用。

出于安全原因,服务器端验证非常重要。您可以使用PHP框架。框架将以非常简单的方式进行表单验证。出于安全原因,服务器端验证非常重要。您可以使用PHP框架。框架将以非常简单的方式进行表单验证。但是,如果我要将此值与PDO绑定,然后准备并执行查询,那么是否有必要使用preg_replace,例如密码/电子邮件?因为在注册过程中,在编译密码输入时可以使用更多的特殊字符,所以他的帐户更安全。嗯@KeaireBut如果要将此值与PDO绑定,然后准备并执行查询,是否有必要使用preg_replace(例如密码/电子邮件)?因为在注册过程中,在编译密码输入时可以使用更多的特殊字符,所以他的帐户更安全。嗯@基尔