【发布时间】:2023-03-21 02:27:02
【问题描述】:
我对 php 很陌生,我正在尝试创建一个登录系统。这是我的代码
<?php
$con=mysqli_connect("XXXXXXX","XXXXXXXX","XXXXXXXXX","XXXXXXXXXX");
if (!$con)
{
echo "failed to connect";
}
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT userID FROM users WHERE username = $username and password = $password;";
if (!$sql) {
echo 'query invalid'.mysql_error();
}
$result = mysql_query($sql);
echo "$result";
$row = mysqli_fetch_array($sql, MYSQLI_ASSOC);
$active = $row['active'];
$count = mysqli_num_rows($result);
mysql_close($con);
?>
我确定连接没有问题。但我的结果没有出现,也没有错误信息。以前我有一个 IF 语句,如果结果返回,它会执行进一步的操作。由于我想弄清楚发生了什么,我只是删除了那部分。有人请帮忙。非常感谢
【问题讨论】:
-
这是我的代码 - 没有代码!
-
他也是 Stack Overflow 的新手,伙计们。我编辑了它。对新手来说更全面。
-
啊,来了!您忘记了用户名和密码周围的 ''!
-
您对 SQL 注入持开放态度,应对密码进行哈希处理。
-
@Jeff... 也许
$username已经包含引号作为值的一部分,从表单中以这种方式传递?我们怎么知道?我们可以看到代码混合使用了客户端接口库(mysqli 和 mysql,这将无法正常工作,当该问题得到纠正时,代码似乎容易受到 SQL 注入的攻击。如果密码被散列,该操作在错误的地方执行,在客户端而不是服务器上。完美的三重奏:1)mysqli和mysql函数的无效混合2)sql注入漏洞,3)明文密码。