【问题标题】:Comparing strings does not work php比较字符串不起作用php
【发布时间】:2012-06-16 10:03:53
【问题描述】:

当我执行此代码时,用户是正确的,但通行证不正确,为什么会这样?快把我逼疯了。

<?php
$user = $_POST['myusername'];
$pass = $_POST['mypassword'];
$file_handle = fopen("db.txt", "rb");
while (!feof($file_handle)){
    $line_of_text = fgets($file_handle);
    $parts = explode('=', $line_of_text);
    if($parts[0] == $user){
        echo $parts[0];
    }
    if($parts[1] == $pass){
        echo $parts[1];
    }
}
fclose($file_handle);
?>

【问题讨论】:

  • 你的文件在行尾有回车吗?如果是这样,那么 fgets() 也在读取它,它将是 $parts[1] 中的一个字符。测试应该是 if(trim($parts[1]) == $pass){
  • 发布您的代码失败的示例数据。
  • 除非您只是为了学习目的而这样做,否则您应该真正考虑使用数据库而不是平面文件!除此之外,如果文件不是太大(它会立即加载到内存中),您可以快速遍历这些行:foreach(file('db.txt') as $line)
  • 试试if(trim($parts[0]) == $user)if(trim($parts[1]) == $pass)
  • 您正在使用 dbms 世界中的数据文件处理

标签: php string comparison explode login-script


【解决方案1】:

试试这个,你可能会在你的输入或文件中的值中得到空白

if(trim($parts[0]) == trim($user)){
    echo $parts[0];
}
if(trim($parts[1]) == trim($pass)){
    echo $parts[1];
}

【讨论】:

    猜你喜欢
    • 2016-12-16
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2014-04-03
    • 2012-01-22
    • 2017-12-07
    • 1970-01-01
    相关资源
    最近更新 更多