我试图阻止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代码?
答案 0 :(得分:2)
您可以将这些变量定义为您喜欢的。如果您使用的表格如下:
<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时,我发现following resource很有帮助。