任何帮助将不胜感激。我有一个登录表单,我无法弄清楚当用户输入密码时如何检查密码,它只检查用户名和验证。它只是一个简单的登录,不太注重安全性。 任何帮助将不胜感激。干杯!
public function adminl() {
if (!empty($_POST['username']) && !empty($_POST['passw'])) {
// get user's data
$con = $this->db->prepare("SELECT id,
username, passw,
passw
FROM admin
WHERE username = :username;");
$con->execute(array(':username' => $_POST['passw']));
$count = $con->rowCount();
if ($count == 1) {
if( $con->execute(array(':passw' => $_POST['username'])) == 1) {
// fetch one row
$result = $con->fetch;
return true;
echo "success";
}
}
else {
echo "Failed to login";
}
}
}
答案 0 :(得分:0)
username = :username
,而在执行准备好的查询时,您将array(':username' => $_POST['passw'])
传递给它。我认为这不是预期的行为。array(':passw' => $_POST['username'])
传递给其执行调用来执行相同的语句;然而,您的查询中没有名为passw
的占位符。fetch()
,而是尝试访问对象fetch
中名为$con
的变量。由于已经commented by Daniel,请不要将密码作为纯文本存储在数据库中。使用salt +哈希系统。
也许,这就是你想要实现的目标:
$con = $this->db->prepare("SELECT id,
username,
passw
FROM admin
WHERE username = :username
AND passw = :passw
LIMIT 1");
$con->execute( array(':username' => $_POST['username'], ':passw' => $_POST['passw']) );
$count = $con->rowCount();
if( $count > 0 ) {
$result = $con->fetch();
return TRUE; // or $result, whatever is the intended behaviour
}