我想说,我想创建一个登录查询:
$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倍, (顺便说一句,我非常喜欢这个网站!)
答案 0 :(得分:1)
将数据放入数组,然后搜索数组而不是搜索查询是否健康?
它会破坏数据库的整个目的。哪个主要目的是为您提供所需的唯一数据,在内部进行所有数据挖掘。这就是重点。
所以,这是不可接受的解决方案。虽然安全,但它绝对低效且不可靠。
幸运的是,已经有一种正确运行查询的方法 - 预备语句。您可以在famous question中阅读这些内容,并从PDO tag 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";
}