PHP - 密码验证问题

2023-11-22

我已经为此摸不着头脑两个多小时了。我研究过 stackoverflow 上的文章,包括:

  • Bcrypt 未正确验证的问题

  • php的password_hash和password_verify问题不匹配

  • `password_verify` 调用返回 false 以获得正确的密码

而且我无法纠正我的问题。我希望能得到一些关于我有多白痴的指导:

向MySQL数据库插入数据的函数:

function insertUser($userObj) {
    $query = $this->databaseConnection->getStntPrepare()->prepare(
            "INSERT INTO user(username, userpassword) VALUES (?,?);");
    $username = $userObj->getUsername();
    $password = password_hash('testing1234', PASSWORD_BCRYPT);

    $query->bind_param('ss', $username, $password);
}

通过从 MySQL 检索数据来验证用户登录:

function findUser($userObj) {
    $query = $this->databaseConnection->getStntPrepare()->prepare(
            "SELECT userid, userpassword 
                FROM user 
                WHERE username=?");

    $pass = 'testing1234'
    $query->bind_param('s', $userObj->getUsername());
    $query->execute();
    $query->bind_result($userid, $hash);

    while ($query->fetch()) {

        if (password_verify($pass, $hash)) {
            echo 'Password is valid!';
        } else {
            echo 'Invalid password.';
        }
    }
}

运行时我收到“无效密码”。

当我执行以下操作而不插入数据库然后检索时:

$hash = password_hash('testing1234', PASSWORD_BCRYPT);
if (password_verify('testing1234', $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}

我收到“密码有效!”

我相信我的问题与单引号和双引号以及密码字段中美元符号($)的解释有关,在从 MySQL 数据库存储/检索时,将其作为变量而不是文字(如其中一篇文章所建议的) - 但是我没有运气解决。以下是“testing1234”的哈希值:

$2y$10$1/oQEuYX67n.U3usxH.7tenNq7hT2dKyBSIZsy5xR3W


问题出在数据库中-与password_verify或password_hash无关。数据类型有最大字符数(MySQL 在创建表时只定义为 40 个)。升到60了,没啥问题了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP - 密码验证问题 的相关文章

  • 用 PHP 截断文件末尾

    我有一个日志文件 我想在 PHP 读取该文件后将其截断 我的代码目前如下所示 fp fopen file r ftruncate fp 125000 fclose fp 但是 这会通过保留first1MB 不过 我想保留last1Mb 的文
  • 将 PHP 中的 openssl AES 转换为 Python AES

    我有一个 php 文件 如下所示 encryption encoded key c7e1wJFz PBwQix80D1MbIwwOmOceZOzFGoidzDkF5g function my encrypt data key encrypt
  • 禁用外部点击时关闭模式

    我正在制作一些使用模式的博客物质化 但我的模态 onclick 外部和错误数据有问题 这是我的代码 main js function changepassword var user userlog val var content conte
  • zend 表单验证

    我想知道 Zend Form 如何验证输入 我的意思是它如何知道要验证哪些输入字段 我查看了 php 全局变量 POST GET 但没有看到任何设置为标识符 例如 的内容 以便了解如何验证 有人能给我推荐一些关于这些东西的指南吗 好吧 找出
  • 使用 PHP 更新 XML 节点

    我有一个 XML 文件 test xml
  • Laravel 读写连接不同步

    我在 Laravel 5 2 应用程序中使用读写 MySQL 连接设置 mysql gt write gt host gt env DB HOST WRITE localhost read gt host gt env DB HOST RE
  • 使用第三方库记录来自 PHP 应用程序的所有 cURL 请求

    好吧 我的 PHP Yii2 应用程序遇到了困难 我需要记录来自应用程序的每个传入和传出请求 传入的请求可以轻松地记录在 PHP 本身中 在引导阶段添加一些处理程序 这很容易 但真正的问题是我正在使用许多第三方库 即 Amazon MWS
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • 错误 #520009 - 帐户受到限制

    我收到 520009 错误 帐户 电子邮件受保护 cdn cgi l email protection被限制 当尝试进行并行付款时 我的代码使用沙箱运行良好 但我切换到实时端点 它开始失败 有问题的帐户是有效的 PayPal 帐户 我使用的
  • 通过 post 使用 php 发送 XML

    我知道有很多类似的问题 但我尝试过摆弄所有的解决方案 但似乎无法使其发挥作用 我正在尝试将 xml 直接发布到 Web 服务并获得响应 从技术上讲 我正在尝试连接到freightquote com 您可以在右上角找到该文档this http
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • Yii 未检测到骆驼案例操作

    伊伊正在给我404 Error如果我声明这样的操作 站点控制器 php public function actionRegisterUser 这就是我在main php label gt Register User url gt site
  • ASP.NET MVC 3 中嵌入的 PHP 站点的 IgnoreRoute

    我有一个带有嵌入式 WordPress 博客的 MVC 3 网站 以下所有 url 均通过 MVC 定向 www mysite com www mysite com aboutus www mysite com contactus 我还有一
  • Laravel,控制器中的 Auth::user()

    Laravel 框架 为什么我无法在 laravel 项目的控制器中使用 Auth user 查看用户是否已登录 Session 是否未连接到控制器 HomeController php public function isauthoriz
  • 控制数据是否存在于数组中

    我在mysql中有两个不同的表 我正在使用curl从json文件中获取数据 我的第一个表名称是 tblclients 该表存储客户端数据 我的第二个表名称是 tblcustomfieldsvalues 该表使用 tblclients 表的
  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • javascript:完全删除top.location.hash?

    如果我的地址栏中已经有一个哈希值 例如domain com whatever 我打电话 top location hash wathever 被转换为domain com 没有任何内容 是否可以完全删除哈希值 所以没有 left 因为如果我
  • 如何关闭整个数据库的区分大小写

    我创建了一个包含许多脚本和许多存储过程的数据库 在这个数据库中 我们没有注意担心区分大小写 因为它对于我的本地开发计算机来说是关闭的 综上所述 我试图弄清楚如何使以下两条语句返回相同的结果 SELECT FROM companies SEL
  • mysql 查询选择当月的所有行?

    我有一个名为 startdate 的日期时间类型的列 我必须获取当前月份的开始日期和结束日期之间的所有行 即从 1 11 2014 到 30 11 2014 select from your table where year curdate

随机推荐

  • Apache 身份验证:失败时重定向,可靠吗?

    我已将 ErrorDocument 401 设置为指向我网站的帐户创建页面 但并非所有浏览器似乎都支持此重定向 Safari 此外 其他浏览器 Firefox Chrome 永远不会停止询问密码并显示 ErrorDocument 这导致大量
  • .lite 和 .tflite 格式之间有什么区别

    两者有什么区别 lite和 tflite格式 TensorFlow 格式 如果没有区别 为什么会有两个 除了问题之外 我似乎无法使用以下命令上传我的模型 liteFirebase ML 套件的扩展文件 原因可能是什么 ML 开发人员首先训练
  • 自动完成用户输入 PowerShell 2.0

    我有一个很大的数据列表 超过 1000 个不同的值 我希望用户能够从 PowerShell 控制台的列表中选择某些值 在控制台中允许用户快速选择值的最简单方法是什么 我想做一些诸如制表符补全或使用箭头键滚动值的功能 但我不确定如何执行这些操
  • Qt嵌入编译错误。修复“错误:没有这样的指令”错误

    我正在尝试使用安装在 home user Software 的 beagle 板的 angstrom 工具链来编译 qt 4 7 4 我收到的错误是 corelib arch qatomic arm h 131 错误 没有这样的指令 swp
  • jQuery 加载函数

    我使用以下脚本来调用 onload 函数 但它在 IE 中不起作用 body attr onload calFact 如果您使用 jQuery 您可以使用ready 函数如下 function callFact 或者更简单 只需将方法传递给
  • 检查 JSON 中是否存在子对象

    我正在使用以下命令检查 JSON 字符串中的对象是否存在 JSONObject json null try json new JSONObject myJsonString catch JSONException e e printStac
  • 与 Java 11 兼容的最低 Spring 版本

    我需要很快将应用程序升级到 Java 11 我想知道与 Java 11 兼容的最低 Spring 版本是多少 我目前正在使用 Java 8 和 Spring 4 2 7 从他们的任务跟踪器 SPR 16391 与 JDK 11 的兼容性 J
  • 如何 grep 查找文件中的 URL?

    例如 我有一个巨大的 HTML 文件 其中包含 img URL http ex example com hIh39j ud9wr4 Uusfh jpeg 我想获取这个 URL 假设它是only整个文件中的 url cat file html
  • 从 Windows 命令提示符交互式运行 R [关闭]

    Closed 这个问题是无关 目前不接受答案 我需要从 win 中的命令提示符交互式启动 R 以便能够显示绘图 知道我该怎么做吗 谢谢 输入适合您系统的正确版本 C path to R bin R 该完整路径可以从 R 的安装位置获取 或者
  • Vim - 激活 PHP 文件上的 HTML 片段

    我正在使用vim和snipMate 很多时候我需要将HTML文件命名为PHP 只是因为一两行代码 我每次创建 PHP 文件时 vim 都会将其视为 PHP 文件 因此 HTML 片段不可用 因此必须使用命令手动激活 HTML 片段 set
  • 在网站上创建网站图标的最佳实践是什么? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 Question 创建一个的最佳实践是什么favicon在网站上 并且是一个 ico同时包含 16x16 和 32x32 图像的文件比 png文件只有 16x16 今天首选的正确方法是否无
  • 实现Spring Data存储库的自定义方法并通过REST公开它们

    我正在尝试将自定义方法添加到我的 Spring 数据存储库PersonRepository如中所述1 3 Spring Data 存储库的自定义实现并通过 REST 公开这些方法 初始代码来自使用 REST 访问 JPA 数据示例 这里是添
  • com.sun.istack.SAXException2 :实例...正在替换“java.lang.Object”,但是...绑定到匿名类型

    我正在将项目从版本 1 x 升级到 jaxb 2 2 7 我的应用程序有时可以运行 但在一些回复中我看到了这一点 java lang RuntimeException javax xml bind MarshalException with
  • CompletableFuture——快速失败的聚合未来

    我一直在使用CompletableFuture allOf 帮助器创建聚合期货 只有当它们的组合期货被标记为完成时才会 完成 即 CompletableFuture future2 new CompletableFuture lt gt C
  • asp.net mvc app_data 文件夹

    我想在服务器图库上存储大量图像 我可以为此创建自己的文件夹 但在默认模板中有一个名为 App Data 的文件夹 显然 我认为模板的创建者是为了让我们在那里存储数据 但我找不到打开该文件夹中任何内容的方法 是故意的吗 或者我该怎么做 或者我
  • 使用 AudioQueue 读取音频缓冲区数据

    我正在尝试通过 AudioQueue 读取音频数据 当我这样做时 我可以验证文件的位深度是否为 16 位 但当我获取实际的样本数据时 我只看到从 128 到 128 的值 但我也看到可疑的交错数据 这让我非常确定我只是没有正确读取数据 首先
  • 从命令行将 MySQL 变量传递给脚本

    我有一个 MySQL 更新脚本 我想从命令行运行 但我希望能够将阶段域变量传递给脚本 我知道这行不通 但这是我描述我正在尝试做的事情的最佳方式 uroot hlocalhost mydatabase execute SET domain m
  • SimpleMembership、MVC4、AuthorizeAttribute 和角色

    我正在尝试向我的一些 MVC4 控制器添加授权属性 只要它是一个计划 它们就可以正常工作 Authorize or Authorize Users myuser 但是当我添加任何类型的角色过滤时 它就会崩溃 例如 Authorize Rol
  • htmlentities() 与 htmlspecialchars()

    两者有什么区别htmlspecialchars and htmlentities 我什么时候应该使用其中之一 htmlspecialchars可能用过了 当不需要对具有 HTML 等效项的所有字符进行编码时 如果您知道页面编码与文本特殊符号
  • PHP - 密码验证问题

    我已经为此摸不着头脑两个多小时了 我研究过 stackoverflow 上的文章 包括 Bcrypt 未正确验证的问题 php的password hash和password verify问题不匹配 password verify 调用返回