【问题标题】:PHP get value from file function acts wierdPHP 从文件函数中获取值的行为很奇怪
【发布时间】:2016-02-04 05:37:59
【问题描述】:

该函数从文件 data.db (utf-8) 中读取两个字符串。该文件包含字符串:“123”和“123”。我通过 ECHO 检查了它,它正确显示了内容。因此,我确定问题不在文件中。

当我尝试将值与文件匹配时,变量 $access 永远不会改变。

 //got data from $_POST....

function au_check($login,$psw){
$f = file('data.db');
$l = $f[0];
$p = $f[1];

$access = 'fail';

if ($login==$l && $psw==$p){ 
    $access='CHANGED';
}
return $access;

}

echo (au_check($_POST['login'],$_POST['pass'])); //returns FAIL :((((

但是!如果我在代码中直接更改我的值,它可以工作...
//从$_POST获取数据....

function au_check($login,$psw){
    $f = file('data.db');
    $l = '123';
    $p = '123';

    $access = 'fail';

    if ($login==$l && $psw==$p){ 
        $access='CHANGED';
    }
   return $access;

}

echo (au_check($_POST['login'],$_POST['pass'])); //returns CHANGED.
?>

请帮忙!如何解决,出了什么问题?太奇怪了....

【问题讨论】:

  • print_r($f); 的输出是什么?您可能需要trim() 解决问题
  • $login/$psw$l/$pboth 可能没有相同的数据类型值,因此您可能需要在进行比较之前进行类型转换
  • print_r ($f) 数组 ( [0] => 123 [1] => 123 )
  • 对不起var_dump($f); ?
  • @Haridarshan === = 相同为真,== = 值为真。 Source。 (你不需要投射

标签: php


【解决方案1】:

file 返回行,用换行符完成

使用类似这样的东西将它们修剪掉(trim 函数太重了):

$lines = file('data.db');
$f = array_map(function($line) {return rtrim($line,"\r\n");},$lines);

【讨论】:

  • @Hanky웃Panky 这会受到trim 的严厉对待。 “每行一个值”格式的值应该允许有尾随空格。在这种情况下,我们应该剥离行尾本身。
猜你喜欢
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多