我最近已经注册并使用php登录我的网站,但它有一个我无法处理的问题。 每当我尝试使用任何模式保护我的通行证时,它只是说登录不正确。
这里是我用于密码的代码部分
注册:
if (empty($_POST['password'])) {
$error[] = 'Please Enter Your Password ';
} else {
$password = $_POST['password'];
}
...
$password2 = SHA1($password);
$query = "INSERT INTO member( username, email, password, hwid) VALUES ( '$username', '$email', '$password2', '$hwid')";
然后,在登录时:
$pass = addslashes(SHA1($_GET['password']));
...
$passwort = $row->password;
$id = $row->hwid;
if ($passwort == $pass && $id == $hwid)
那么,登录失败后我做错了什么? 当我不使用哈希时,它运作良好..
答案 0 :(得分:2)
如果您的登录表单方法是POST而不是GET,那将产生差异并需要包含命名属性。 这只是一个见解。
另外,检查您的列是否为VARCHAR并且足够长以容纳散列。
我还建议您使用CRYPT_BLOWFISH或PHP 5.5的password_hash()
功能。
对于PHP< 5.5使用password_hash() compatibility pack
。
SHA1不是最好的散列方法,并且使用固定散列(使其更容易破解)而不是像password_hash()
这样的随机散列。
答案 1 :(得分:0)
在注册时,请尝试更改
$password2 = SHA1($password);
到此:
$password2 = SHA1(add_slashes($password));