Я пытаюсь помочь другу с назначением программирования php. Ему необходимо прочитать пароли и имена пользователей из файла и сравнить их с именем пользователя ($ user) и паролем (пароль $), введенным из формы для аутентификации пользователя. (простой, никакой безопасности вообще, просто академический)Сложность сравнения строк PHP
Проблема в сравнении строк. Я пошел туда и обратно между использованием ==, === и strcmp, но ничего не работает правильно. Есть идеи?
Это текстовый файл, который читается:
UserData.txt
test:pass
testa:pass2
testb:pass4
testc:pass6
<?php
$fh = fopen("UserData.txt", "r") or die("Can't open file");
$line = "";
$line_length = 0;
$div = 0;
$accounts = array();
while($line = fgets($fh)) {
$div = strpos($line, ":"); //positing of ":" dividing username and password
$line_length = strlen($line); //Total length of username + : + password line entry
$accounts[substr($line, 0, $div)] = substr($line, $div + 1, $line_length);
}
foreach ($accounts as $key => $value) {
if(($user === $key) && ($password === $value)) {
echo "MATCH - user/pass correct<br/>";
//Just needs to echo the above line if user/pass correct
}
}
?>
HTML файла:
<form name="myform" method="GET" action="login.php">
Please Login to order
User Name:
<input type="text" name="user" value="" size="10"/>
Password:
<input type="password" name="password" value="" size="10"/>
<input type="submit" name="submit" value="Log In" >
Обновлено login.php файл:
<?php
$lines = file('UserData.txt', FILE_IGNORE_NEW_LINES);
foreach ($lines as $line)
{
$arr = explode(':', $line);
if ($arr[0]==$user && $arr[1]==$password)
{
echo "MATCH - user/pass correct<br/>";
} else {
echo "NO<br />";
}
}
echo "<br />";
var_dump($user);
echo "<br />";
var_dump($password);
echo "<br />";
echo phpversion();
?>
Выход:
NO
NO
NO
NO
string(4) "test"
string(4) "pass"
4.4.9
Подписываются ли '$ user 'и' $ password' соответствующие поля формы '$ _POST'? – BoltClock