我正在努力防止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时,我发现以下资源很有帮助。