关于SQL注入的问题

时间:2016-04-14 15:25:30

标签: php sql 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代码?

1 个答案:

答案 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很有帮助。