我为我正在开发的应用程序上的用户创建了一个任意登录系统,我正在使用mysqli从MySQL切换。但是,我遇到了问题,因为无论您输入什么数据,它都会成功登录。显然这是错误的,我认为这与我的fetch语句有关。这是代码:
$sid = /* arbitrary value */
$con = new mysqli($mysql_host,$mysql_user,$mysql_password,$mysql_database);
$stmt = $con->prepare("SELECT uid, pwd FROM schools WHERE uid=?");
$stmt->bind_param("i", $sid);
$stmt->execute();
$stmt->bind_result($schoolid, $password);
$stmt->fetch();
$stmt->close();
有人知道这里发生了什么,并且能够用简单的英语向相关编码新手描述它吗?
编辑:其余的代码对于检查系统来说就像这样。输入的用户ID为$sid
,输入和加密的密码为$cleanpwd
。
if ($sid == $schoolid and $cleanpwd == $password) {
header('Location: loginsuccess.php');
}
else {
header('Location: login.php?error=1'); }
答案 0 :(得分:0)
似乎如果这是一个登录表单,您首先获取数据然后处理它是否正确?或者您是否正在尝试处理它是否正确(SQL中的用户标识和密码组合)?因为您只需要输入用户标识并获取用户标识和密码,而无需检查输入的密码是否与该用户标识关联的数据库密码匹配。
如果你想查看SQL中的密码和用户名是否匹配,你应该试试这个:
$stmt = $con->prepare("SELECT uid, pwd FROM schools WHERE uid=? AND pass=?");
$stmt->bind_param("is", $sid,$form_password);
$stmt->execute();
否则你需要检查数据是否在以后匹配。
if($_POST['form_pass'] == $password){
//log the user in
}