0

可以说,我想创建一个登录查询:

$query ="SELECT * FROM userstable WHERE uName='".$userName."' AND pass='".$password."' ";
$result = mysql_query($query);

$num =  mysql_numrows($result);
if ($num == 0) {
echo "wrong detiales";
}
else
{
echo "in";

但是通过这种方式,客户可以访问并将他的数据放入我的查询中......我不喜欢它......为什么要让客户访问从我的数据库中获取数据?

问题:将我的数据放入数组中,然后搜索数组而不是搜索查询是否健康?它可能会慢一点(假设我没有很多记录)。即使它有点慢,它会更安全吗?

和建议?代码示例?

10 倍,(顺便说一句,我非常喜欢这个网站!)

4

1 回答 1

1

将我的数据放入数组中,然后搜索数组而不是搜索查询是否健康?

它会破坏数据库的整个目的。其主要目的是为您提供所需的唯一数据,在内部进行所有数据挖掘。这才是重点。

所以,这只是不可接受的解决方案。虽然安全,但它绝对是低效且不可靠的。

幸运的是,已经有一种正确的方法来运行查询安全准备语句。您可以在著名的问题中阅读它们,并从PDO 标签 wiki获得更多实用细节

也就是说,你必须做到

$query = "SELECT 1 FROM userstable WHERE uName=? AND pass=?";
$stmt  = $pdo->prepare($query);
$stmt->execute(array($userName, $password));
$found = $stmt->fetchColumn();
if (!$found)
{
    echo "wrong detiales";
}
else
{
    echo "in";
}
于 2013-09-06T15:43:55.833 回答