当您对注册用户进行身份验证时,您会提出请求,例如我发现的一个示例:
$user = $_POST['user'];
$pw = $_POST['password'];
$sql = "SELECT user,password FROM users
WHERE user='$user'
AND password='$pw'
LIMIT 1";
$result = mysql_query($sql);
if (mysql_num_rows($result)){
//we have a match!
}else{
//no match
}
现在最终有什么好处或任何意义LIMIT 1
?以及为什么只需要选择 user_id 就需要选择用户名和密码?
不会
SELECT user_id FROM users
WHERE user = '{$user}'
AND password = '{$pw}'
相同的物流但更短的代码?
编辑:考虑到这个小细节,我又找到了一项防止黑客的检查。不应有多个用户具有相同的电子邮件和密码,因此如果他们以某种方式提供而不是密码,123
例如字符串' OR password = '*'
(或类似的逻辑),这将损害我的查询,没有限制会有所帮助,因为下一步我可以数数
if (count($result) > 1) {
echo "we got hacked";
else
<proceed...>