You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中password_verify验证失效求助,附登录与注册代码

密码验证失败问题排查与修复

核心问题分析与修复步骤

1. 数据库密码字段长度不足(最可能的原因)

password_hash()生成的哈希值长度约为255字符,如果你的membre表中mot_de_passe字段是VARCHAR(64)或更短的类型,哈希会被数据库截断,导致password_verify()无法匹配。

  • 修复操作:将数据库中mot_de_passe字段修改为VARCHAR(255)或TEXT类型。

2. 注册代码的邮箱重复检查逻辑错误

get_mail()函数返回的是关联数组(比如['mail' => 'xxx@xxx.com']),直接和字符串$mail比较永远不相等,导致邮箱已被占用时仍然会执行插入操作,同时没有终止流程:

// 原错误代码
if($mail==get_mail($conn,$mail)){
  $errors["mail_taken"] = "Cette adresse e-mail est déjà pris!";
}
  • 修复后的代码:
$existingMail = get_mail($conn, $mail);
if($existingMail){
    echo "Cette adresse e-mail est déjà prise!";
    exit(); // 阻止后续的插入操作
}

3. 登录代码的Session重复启动问题

登录代码开头用@session_start();(错误抑制),后续又重复调用session_start();,可能导致Session状态异常:

  • 修复操作:移除重复的session_start();,只在文件开头调用一次,且不要使用错误抑制:
// 替换原代码开头的@session_start();
session_start();

4. 临时调试方法(验证数据正确性)

在登录代码中添加临时调试代码,确认读取到的哈希值和输入的密码是否正确:

if ($membre) {
    // 临时调试,输出后请删除
    var_dump($mot_de_passe, $membre['mot_de_passe']);
    exit();
    // 原验证逻辑...
}

内容的提问来源于stack exchange,提问作者Farid Alma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:01:26