标题。它通过用户名检查,我测试过。我使用了一些修剪/剥离标签作为避免SQL注入的一部分。但就目前而言,唯一感兴趣的部分是password_hash和password_verify每次检查失败。
数据库密码字段是BLOB,但我也尝试了VARCHAR 255和CHAR 255。
相关登录验证:
const app = require('./app');
const http = require('http').Server(app);
const io = require('socket.io')(http);
...
http.listen(port, function(){
console.log('listening on *: ',port);
});
相关注册码:
if(isset($_POST["login"])){
$username = trim($_POST['username']);
$username = strip_tags($username);
$username = htmlspecialchars($username);
$loginpassword = trim($_POST['password']);
$loginpassword = strip_tags($loginpassword);
$loginpassword = htmlspecialchars($loginpassword);
$loginQuery= "SELECT * FROM members where username='$username'";
$result = mysqli_query($conn, $loginQuery);
$row = mysqli_fetch_assoc($result);
$hash = $row['password'];
if(password_verify($loginpassword, $hash)){
$_SESSION['username'] = $username;
header("Location: index.php");
}
else{
$loginErrorExists= TRUE;
}
}
答案 0 :(得分:2)
$ password = htmlspecialchars($ username);
是的,你有$ username作为密码!
答案 1 :(得分:1)
我按照Funk Forty Niner的建议完全移除trim(),strip_tags()和htmlspecialchars()来解决它。