我有来自login.php的这个PHP代码
if (isset($_POST['logIn'])) {
$errmsg = "";
$logname = mysqli_real_escape_string($dbc, trim($_POST['usernameIn']));
$logpassword = mysqli_real_escape_string($dbc, trim($_POST['passwordIn']));
$query = "SELECT user_id, username FROM members WHERE username = '$logname' AND password = SHA('$logpassword')";
$data = mysqli_query($dbc, $query);
if (mysqli_num_rows($data) == 1) {
$row = mysqli_fetch_array($data);
setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30)); //expires after 30 days
setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30));
$home = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/index.php';
header('Location: ' . $home);
}
else {
$errmsg = '<p class="errormsg">Username or password is incorrect.</p>';
}
}
由于某种原因,它总是最终在else语句中设置$ errmsg。我确信我输入的信息(用户名,密码)正确且存在于数据库中。
我使用此查询插入我的值(来自注册脚本):
$query = "INSERT INTO members (username, password, email) VALUES ('$username', SHA('$password'), '$email')";
有人看到这个脚本的问题吗?谢谢!
答案 0 :(得分:1)
我没有发现代码中有任何重大错误,但我有很多建议可以帮助调试它:
if (mysqli_num_rows($data) == 1) {
更改为if (mysqli_num_rows($data) > 0) {
答案 1 :(得分:0)
您也可以使用PHP执行此操作:
VALUES ('$username', '".sha1($password)."', '$email')";
在这种情况下,你不需要使用逃避它。