2012-06-16 4 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]. Тест должен быть, если (trim ($ parts [1]) == $ pass) { –

+1

Приведите пример данных, которые не совпадают с вашим кодом. – lanzz

+0

Если вы не делаете это только для учебных целей, вы должны действительно рассмотреть возможность использования базы данных для этого вместо плоского файла! Кроме того, если файл не слишком большой (он будет загружен сразу в память), вы можете быстро перебирать строки: 'foreach (файл ('db.txt') как $ строка)' – ThiefMaster

ответ

1

попробовать это, вы могли бы получать пробелы в ваших входных или значений из файла

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

Да, спасибо, это работает, я уже получил этот ответ :) –

Смежные вопросы