[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работает код
Toland
Подскажите пожалуйста, почему не работает данный код? Он должен сравнивать полученную переменную со строчкой в файле:

<?php
$login=@$_GET['login'];
$pass=@$_GET['pass'];

$file = file($login.".dat");
$log = $file[3]; //Читаем третью строчку в файле
if(strcmp($pass, $log)) //Сравниваем полученный пароль с паролем из файла

{echo "Пароль правильный";}
else
{echo "Пароль не правильный";}
?>

Почему-то в любом случае пишет "Пароль правильный". Проверял все не один раз. Искал везде где только можно и так ничего и не получилось. Помогите пожалуйста найти ошибку или посоветуйте какой-нибудь другой способ.



Спустя 31 минута, 42 секунды (23.03.2011 - 23:17) inpost написал(а):
if($pass == $log) не подойдет?

Спустя 9 минут, 30 секунд (23.03.2011 - 23:27) Toland написал(а):
Пробовал. Все-равно тоже самое mad.gif

Спустя 1 час, 10 минут, 11 секунд (24.03.2011 - 00:37) inpost написал(а):
echo $pass.'<br />'.$log; // смотри и проверяй, скорее всего они не равны просто напросто!

Спустя 4 минуты, 24 секунды (24.03.2011 - 00:41) Toland написал(а):
И так тоже пробовал.
Я уже все облазил и все способы перепробовал.
Мне кажется, что в конце строчки в файле какой-то невидимый символ что-ли. Но скорей всего я щас сказал глупость smile.gif

Спустя 43 минуты, 47 секунд (24.03.2011 - 01:25) inpost написал(а):
Toland
Вывелось 2 одинаковых текста? Ты уверен, что там до и после нет лишних пробелов? Используй mb_strlen, проверь обе переменных по длине. Приведи их к единому типу (string)$pass;

Спустя 5 минут, 3 секунды (24.03.2011 - 01:30) Trianon написал(а):
strcmp() возвращает значение, которое if() принимает за истину, возвращает именно в том случае, когда строки отличаются.
Точно также, как if(n1-n2) окажется истиннным, когда n1 отличается от n2 .

Следует изменить на if(!strcmp(...))


Далее. В элементе массива, полученного от функции file() будет не просто строка, а строка, завершенная символами конца строки "\r\n" (или "\n"). Поэтому совпадение строк не будет зафиксировано никогда.
Тут можно посоветовать воспользоваться функцией rtrim()
$log = rtrim($file[3]); 

либо применить опции при вызове file, отсекающие хвосты строк.


Это если зарыть глаза на то, что хранить пароли не следует, а уж передавать их методом GET - вобще дикость.

Спустя 8 часов, 39 минут, 36 секунд (24.03.2011 - 10:10) Toland написал(а):
Спасибо всем большое smile.gif все советы оказались очень полезными.
Может я и правда делаю много глупостей и ошибок, но я ведь только недавно начал изучать php smile.gif еще раз спасибо:)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.