【发布时间】: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