0

我为正在开发的应用程序上的用户创建了一个任意登录系统,并且我正在使用 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'); }
4

1 回答 1

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
}
于 2013-01-17T22:38:21.233 回答