有关SQL注入的问题


Questions about SQL injection

我正在努力防止sql注入。我的代码如下

$stmt = $db_connection->prepare("INSERT INTO users (user_name,user_password_hash,user_email,user_firstname,user_lastname,user_registerip,user_lastip,user_created,user_rank,user_block) VALUES (:user_name, :user_password_hash, :user_email, :user_firstname, :user_lastname, :user_registerip, :user_lastip, :user_created, :user_rank, :user_block)");
$stmt->bindParam(':user_name', $txtName);
$stmt->bindParam(':user_password_hash', $txtPassword);
$stmt->bindParam(':user_email', $txtMail);
$stmt->bindParam(':user_firstname', $txtFirst);
$stmt->bindParam(':user_lastname', $txtLast);
$stmt->bindParam(':user_registerip', $txtRIP);
$stmt->bindParam(':user_lastip', $txtIP);
$stmt->bindParam(':user_created', $txtCreated);
$stmt->bindParam(':user_rank', $txtRank);
$stmt->bindParam(':user_block', $txtBlock);
$stmt->execute();

但我不知道该怎么处理这样一行:

$stmt->bindParam(':user_block', $txtBlock);

我在哪里定义$txtBlock之类的变量?我如何将input名称连接到PHP代码?

您可以根据自己的喜好定义这些变量。如果您使用的表单类似:

<form action="process.php" method="POST">
    <input name="example" type="text">
    <input type="submit">
</form>

然后在页面process.php上,您可以通过$_POST全局访问所有变量。因此,要从字段example中获取数据,并将其分配给$txtBlock,可以执行以下操作:

$txtBlock = $_POST["example"]; 

在SQL注入方面,您已经准备好了查询并将变量绑定到它。没有必要担心进一步消毒输入。在谈论PDO时,我发现以下资源很有帮助。