【发布时间】:2014-03-04 01:45:30
【问题描述】:
我正在尝试创建带有 $salt 变量的 sha256 散列密码。但由于某种原因,它只是行不通。现在已经为此工作了 3 个小时,我正要扯掉我的头。这是我的代码:
我会再试一次,对不起;o)
好的,我的脚本运行良好,直到我尝试将 sha256 添加到密码中。我有一个用于创建用户的文件:
$salt = "lollol";
$password = hash('sha256', $salt.$_POST['password']);
$sql = ("INSERT INTO members (username, password, name, last_name,company)VALUES('$username', '$password', '$name', '$last_name', '$company')")or die(mysql_error());
if(mysql_query($sql))
echo "Your accuont has been created.";
它似乎已正确添加到数据库中。我可以看到它被一些字母和数字散列。
但是当我尝试登录时,它就不会了。
我的 login.php 代码是:
$sql= "SELECT * FROM members WHERE username='$username' and password='$password'";
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
$salt = "lollol";
$auth_user = hash('sha256', $salt.$password);
if($password == $salt.$auth_user){
echo "Logged in";
} else {
echo "Not logged in";
}
我明白了,我想登录时必须加密密码,但我不确定。我希望你们中的一些人可以帮助我。
【问题讨论】:
-
是的,代码太多了。请尝试将您的代码 sn-p 减少到显示问题所需的最低。目前,您混合了验证、正则表达式、SQL、会话变量和 HTML 生成。
-
你最好只做一个最小的例子(非常你至少可以做的是删除 cmets,但最后:首先解释应该发生什么,然后显示给我们一小段代码,然后解释发生了什么以及为什么这会让您感到惊讶。这样帮助会更容易!
-
@Oli Charlesworth 我现在已经解决了我的问题。
-
@KingCrunch 我现在已经编辑了我的问题。