了解准备语句的用户数据验证

Léo*_* 준영 3 php database

我读过如果您使用预准备语句,则无需验证或清理用户的输入.

然而,在以下示例中,这对我没有意义.

用户提供了他的电子邮件地址.

我通常会这样做

验证码

 // to validate data
 if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
     header("Location: index.php");
     die("Wrong email-address");
 }
Run Code Online (Sandbox Code Playgroud)

声明说,如果我们使用预准备语句,我们不需要验证数据,如下所示

没有验证码的代码

 // to get email-address nad passhash from the db
 $result = pg_prepare($dbconn, "query2", 'SELECT email, passhash_md5
     FROM users WHERE email = $1
     AND passhash_md5 = $2;');
 $result = pg_execute($dbconn, "query2", array($_POST['email'], $_POST['password']));
 if(!$result) {
     echo "An error occurred";
     exit;
 }
Run Code Online (Sandbox Code Playgroud)

我不确定我们是否需要在最后一段代码中使用验证码,因为我们使用pg_prepare和pg_execute.

如果使用预准备语句,是否需要考虑验证和清理用户的输入?

Til*_*eis 6

您仍然需要验证您的数据,但您不必对其进行清理.

使用预准备语句可防止插入恶意代码,但不会检查其形式是否有意义.