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

PHP中if语句匹配两个值失败:值显示一致却不匹配

PHP密码匹配失败排查方案
  • 清理隐藏空白字符:从pass.txt读取的字符串大概率带了换行/回车符(肉眼看不到),直接echo只会显示内容但不会展示这些控制字符。先对读取到的密码做去空白处理再对比:

    $pass_detect = trim(file_get_contents('pass.txt'));
    if ($pass_detect === $user["password"]) {
        echo "Login Successfull!";
    } else {
        echo "Invalid Password!";
    }
    

    或者用var_dump()打印两个变量的完整信息,看长度和实际值是否一致:

    var_dump($pass_detect, $user["password"]);
    
  • 检查文件编码问题:如果pass.txt是UTF-8带BOM编码,读取时会在字符串开头加入不可见的BOM头,导致对比失败。把文件转成无BOM的UTF-8格式,或者读取时手动去除BOM:

    $pass_detect = file_get_contents('pass.txt');
    $pass_detect = preg_replace('/^\x{FEFF}/u', '', $pass_detect);
    
  • 排查转义字符干扰:旧PHP环境里如果magic_quotes_gpc是开启状态,用户POST提交的密码会被自动加转义符(比如'变成\'),但文件里的密码没有这层转义。可以用stripslashes()处理用户输入:

    $user_password = stripslashes($user["password"]);
    if ($pass_detect === $user_password) { ... }
    
  • 对比十六进制字节:如果以上都没解决,把两个字符串转成十六进制,看每个字节的差异,找出不可见特殊字符:

    echo bin2hex($pass_detect) . "\n" . bin2hex($user["password"]);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:25:48