Вот код Тагрима.
PHP:
<?php
$name = trim($_POST['email']);
$password = trim($_POST['password']);
if (isset($name) && isset($password)) {
$data = file("data/users.dat");
for ($i = 0; $i < count($data); $i++) {
$dat = explode("|", $data[$i]);
if ($name == trim($dat[0]) && md5($password) == trim($dat[1])) {
echo "<h2>Добрый день <b>$dat[3]</b><br />ВЫ АВТОРИЗОВАНЫ</h2>";
exit;
} else {
echo "<h2>Вход невозможен. Проверьте верно ли введены данные.</h2>";
}
}
echo "</td>";
include ("bottom.html");
}
Тут считывается строка с файла. Если логин и пароль совпали с теми, что ввел пользователь - пишет "Добрый день" и выходит с цикла. Если нет - пишет "Вход не возможен" и переходит на следующую строку.
То есть, будет писать "вход не возможен" пока не найдет нужную строчку в файле (или вообще до конца файла, если такой комбинации логина / пароля не существует).
Проблема в том, что для каждого найденного пользователя в базе будет писать либо "добрый день" либо "вход не возможен", а этого делать не нужно.
А делать нужно было по-другому. Описать переменную (флаг) и задать ему стартовое значение (у dreamer флаг - переменная $logged_in_as, начальное значение - null) . Искать в файле совпадение логина и пароля с теми, которые ввел пользователь. Если совпадение найдено, то назначить флагу нужно присвоить какое-то значение (dreamer присваивает $logged_in_as = $name) и выйти с цикла (т.к. дальше искать нету смысла, все уже найдено), если не найдено - считать другую строчку.
После цикла проверить флаг. if ($logged_in_as) перейдет на ветку ИСТИНА тогда, когда в переменной $logged_in_as будет не null (то есть в цикле было произведено присваивание), иначе - переход на ветку ЛОЖЬ.
Как-то так.