- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对安全性不太熟悉,因此我依赖在互联网上找到的内容。我找到了一个网站,其中有人解释了他的工作以及他的方法是如何工作的。人们可能会复制粘贴它来简化操作。虽然我确实理解了很多,但我自己无法想出它(我对 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/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!