这是我的代码,
<?php
function($string){
$salt = "@x5v";
$hash = sha1(md5($salt.$string)).md5($string).sha1(md5($string));
return $hash;
}
?>
<?php
print "<center>";
if(isset($_POST['username'])){
echo 'Variable is set and I can use it!';
}
$Username = $_POST["username"];
$Password = md5($_POST["password.$hash"]);
$Email = $_POST["email"];
?>
我认为是这条线导致了问题:
$Password = md5($_POST["password.$hash"]);
将用户密码传递到数据库中的正确语法是什么,并使用我上面定义的字符串进行加密?
我认为是这条线导致了问题:
$Password = md5($_POST["password.$hash"]);
你在这里做的事情是不正确的。 它应该是:
$Password = md5($_POST["password"] . $hash);
您正在做的实际上是使用一个密钥索引到 $_POST,该密钥最终会变成"password.fdg858fug83u5g5"之类的内容。
我推荐这个库,而不是推出自己的解决方案:
http://www.openwall.com/phpass/
这是一篇解释如何使用它的文章:
http://sunnyis.me/blog/secure-passwords/
你也应该阅读这个StackOverflow答案:
https://stackoverflow.com/a/6337021/943102