gpt4 book ai didi

PHP PDO 登录脚本不起作用。包含错误

转载 作者:行者123 更新时间:2023-11-30 01:16:10 24 4
gpt4 key购买 nike

我对安全性不太熟悉,因此我依赖在互联网上找到的内容。我找到了一个网站,其中有人解释了他的工作以及他的方法是如何工作的。人们可能会复制粘贴它来简化操作。虽然我确实理解了很多,但我自己无法想出它(我对 PHP/XHTML 等还很陌生)

网站:How to store safely with PHP and MySQL

他在教程中使用 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。到目前为止,我只是回应是否成功。而且它没有显示任何内容,因此不起作用。

第二次编辑

作为快速更新,我提供的脚本是整个脚本。什么都没有放出来。 (数据库名称等除外)因此我想知道问题是否可能是我没有使用将密码保存到数据库中的哈希脚本。虽然我已经输入了,但是还是没有反应。我是不是还做错了什么?

最佳答案

if($_POST):

$name = $_POST['username'];
$pass = crypt($_POST['password'], '$2a$07$Hd893nD39Jdjd48Jdh3nD$');

$conn = new PDO('mysql:host=*; dbname=*', 'root', '');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$stmt = $conn->prepare('SELECT * FROM user WHERE name = ? AND password = ?');
$stmt->execute(array($name, $pass));

if($stmt->rowCount() === 0){
echo 'Your Username / Password is incorrect. Please try again';
}else{
echo 'login success';
}

endif;

关于PHP PDO 登录脚本不起作用。包含错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19035156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com