我对安全性不是很熟悉,因此我依赖于我在互联网上找到的内容。我找到了一个网站,有人解释了他的工作以及他的方法是如何工作的。人们可能会复制粘贴它以缓解问题。尽管我确实了解很多,但我自己无法想出(我对 PHP/XHTML 等很陌生)
他在他的教程中使用了 PDO。而且我能够将信息存储在数据库中。但是当我尝试使用他提供实际登录代码的脚本时,尽管它似乎包含错误。
我已经解决了所有问题,一切正常,但是哈希密码与插入密码(与哈希等)的比较无法正常工作。
这里发生了什么?
提前致谢!
编辑
人们一直在要求代码,所以这里是:
session_start();
require('config.php');
// Setting up a connection
$MyConnection = new PDO('mysql:host=*;dbname=*', $dbuser, $pass);
// Retrieving information from form.
$username = $_POST['username'];
$password = $_POST['password'];
$sth = $MyConnection->prepare("SELECT * FROM AMP_Users WHERE Username = :username LIMIT 1");
$sth->bindParam(':username', $username);
$sth->execute();
$user = $sth->fetch(PDO::FETCH_OBJ);
// Hashing the password with its hash as the salt returns the same hash
if (crypt($password, $user->hash) == $user->hash) {
echo 'You are now logged in. If we actually used sessions this time.';
}
一旦代码开始工作,我将添加一个 $_SESSION['name'] = $username。到现在为止,我只是简单地回应它是否成功。而且它没有显示任何东西,所以它不起作用。
第二次编辑
作为一个快速更新,我提供的脚本是整个脚本。什么都放不出来。(数据库名称等除外)因此我想知道问题是否可能是我没有使用将密码保存到数据库中的哈希脚本。虽然我把它放进去,它仍然没有反应。我还在做错什么吗?