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

XAMPP环境下PHP注册改用sha256哈希后登录验证失败求助

问题根因

你注册时使用hash("sha256", $_POST['password'])生成密码哈希,但登录校验时调用的password_verify()是PHP专门用于校验password_hash()函数生成的哈希的专用方法,两者生成的哈希格式完全不兼容,所以永远返回校验失败。


方案1:适配当前sha256逻辑(仅适合本地测试,不推荐线上使用)

直接修改login.php的密码校验逻辑,将用户输入的密码同样做sha256哈希后和数据库存储的值直接比对即可。
把login.php中的对应代码:

if(password_verify($password, $hashed_password)){

替换为:

if(hash("sha256", $password) === $hashed_password){

注意:该方案没有给密码加随机盐,相同密码生成的哈希完全一致,极易被彩虹表破解,不要在线上环境使用。


方案2:使用PHP原生密码哈希(强烈推荐)

PHP提供的password_hash()默认使用bcrypt算法,自动为每个密码生成唯一随机盐,抗暴力破解能力远强于自行实现的sha256哈希,仅需要修改register.php的哈希生成逻辑即可,不需要改动现有登录代码。
把register.php中的对应代码:

$param_password = hash("sha256" , $_POST['password']); // Creates a password hash

替换为:

$param_password = password_hash($_POST['password'], PASSWORD_DEFAULT);

注意:替换后需要重新注册账号测试,之前用sha256生成的旧账号密码无法被password_verify()识别。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:18:02