2012-06-16 140 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

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