2013-04-11 61 views
1

我有一個PHP文件:將用戶和密碼與txt中的md5進行比較?

<?php 
if (isset($_POST['submit'])) { 
    $file_name = 'hash.txt'; 
    $user = md5($_POST['user']); 
    $password = md5($_POST['password']); 
    $handle = fopen('hash.txt',"r"); 
    $read_file = file($file_name); 


    if ($user == $read_file[0] and $password == $read_file[1]) { 
     echo 'correct !'; 
    } else { 
     echo 'incorrect !'; 
    } 
} else { 
    echo 'please input something'; 
} 
?> 
<body> 
<form action="file_handle3.php" method="post"> 
User<input type="text" name="user"/><br/> 
Password <input type="password" name="password"/> 
<input type="submit" name="submit" value="submit"/> 
    </body> 

和文件TXT:hash.txt一號線是個招呼第二個是世界

5d41402abc4b2a76b9719d911017c592

7d793037a0760186574b0282f2f435e7

我想比較做值用戶輸入並將它們轉換爲md5,然後與txt文件中的值進行比較。我不明白爲什麼我的代碼不會輸出正確的答案,即使我輸入了正確的值(user:hello密碼:世界)。對我的英文不好的朋友

+1

如果你的.txt中有散列,那麼你應該把你的md5散列密碼與文件的散列值比較,即md5($ password)== $ read_file [1]。也許如果你以純文本的形式接收它,然後比較哈希將起作用。您也可以嘗試檢查md5($ _ POST ['password'])輸出是否與您的.txt文件中的輸出相同 – 2013-04-11 14:30:46

回答

1

當你使用file()時,文件中的每一行成爲數組中的一個項目。

然而,該陣列在每一個串包括的換行符(\ n)。所以你需要確保你做類似...

trim($read_file[0],"\r\n"); 

...首先。

+2

而不是修剪結果,調用file()函數時使用FILE_IGNORE_NEW_LINES標誌 – 2013-04-11 14:32:55

+0

$ read_file = file $ file_name,FILE_IGNORE_NEW_LINES);也可用。 – 2013-04-11 14:33:58

+0

嗯,我希望我在5年前意識到這一點。總是被修剪';) – Evert 2013-04-11 14:35:22

相關問題