【发布时间】:2014-12-14 03:56:34
【问题描述】:
在我的网页上为管理员登录。我正在关注一个有点旧的教程,我正在尝试为 MYSQLI 更新它。在他的视频中,一切都很完美。但是对我来说......
if(isset($_POST['submit'])) {
$username = $_POST['username'];
$password = md5($_POST['password']);
if(empty($username) or empty($password)) {
echo "<p class='warn'>Oops!</p>";
} else {
$checklogin = mysqli_query(" SELECT id FROM admins WHERE username='$username' AND password='password' ");
if(mysqli_num_rows($checklogin) == 1){
echo "You can log in.";
} else {
echo "Oops";
}
}
}
和
Warning: mysqli_query() expects at least 2 parameters, 1 given in /opt/lampp/htdocs/WEBSITES/Site1/admin/login.php on line 29
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /opt/lampp/htdocs/WEBSITES/Site1/admin/login.php on line 31
【问题讨论】:
-
我会推荐使用PDO。 IMO 它比 MySQLi 更安全、更易于使用。
-
你确定这个错误不是你的mysqli_query中缺少$引起的吗?
[..]AND password='$password'");部分缺少 $ -
不要将 MD5 与密码一起使用。 PHP5 具有处理密码哈希的新功能。
-
@Kommodore 仍然收到错误
-
@user3725053 据我所知,PDO 和 MySQLi 在安全性方面提供完全相同的功能。哪个更容易是个人喜好问题,但 MySQLi 中的过程函数更类似于旧教程中使用的旧 mysql_* 函数。