2012-06-16 109 views
1

当我执行此代码时用户是正确的,但通行证不是,为什么?这让我疯狂。比较字符串不起作用php

<?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); 
?> 
+1

越来越空白请问您的文件都在该行的最后一回?如果是这样,那么fgets()也会读取它,它将成为$ parts [1]中的一个字符。测试应该是if(trim($ parts [1])== $ pass){ –

+1

后代示例数据失败并显示代码。 – lanzz

+0

除非你只是为了学习的目的而这样做,否则你应该考虑使用数据库来代替平面文件!除此之外,如果文件不是太大(它会一次加载到内存中),您可以快速遍历这些行:'foreach(file('db.txt')as $ line)' – ThiefMaster

回答

1

试试这个,你可能会在你的输入或值从文件

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

是的,谢谢,它的工作原理,我已经得到了答案:) –