1) Первая ошибка в том, что вы никогда не отправляете запрос в СУБД - ваш код должен выглядеть примерно так:
$dbh=mysql_connect(...);
mysql_select_db(...,$dbh); // note see below
$result=mysql_query(....$dbh);
while ($row=mysql_fetch_assoc($result)) {
...
}
2) У вас есть 2 цикла (цикл for и цикл while) вокруг кода, который извлекает строки из запроса - должен быть только один. Поэтому, если ваш запрос возвращает 3 строки, вы фактически повторяете цикл 9 раз:
1) для итерации цикла 1
2) пока итерация цикла 1 выбирает строку 1, записывает результаты
3) пока итерация цикла 2 извлекает строку 2, записывает результаты
4) пока итерация цикла 3 извлекает строку 3, записывает результаты
5) цикл while завершается неудачно на следующей итерации
6) для цикла итерации 2
7) цикл while завершается неудачно на следующей итерации
8) для цикла итерации 3
9) цикл while завершается неудачно на следующей итерации
3) Вы присваиваете значения, возвращаемые mysql_fetch_assoc, скалярным переменным (то есть вы перезаписываете результат каждый раз, поэтому $ user и $ pass всегда содержат значения из последней возвращенной строки.
4) Рекомендуется устанавливать критерии раннего выхода в цикле - помимо избежания избыточного выполнения, это также решит третью ошибку, описанную выше, например,
$valid=false;
while($row=mysql_fetch_array($result))
{
if (($username==$row['UNAME']) && ($password==$row['PW'])) {
$valid=true;
break;
}
}
if ($valid) {....
4) Следующая проблема заключается в том, почему вы проверяете, совпадает ли имя пользователя с $ username, когда вы ранее говорили, что оно должно совпадать с $ _POST ['Uneym'].
5) Следующая проблема в том, что вы, кажется, написали этот код с включенным register_globals.
6) Следующая проблема заключается в том, что вы без необходимости извлекаете данные из базы данных - просто добавьте фильтр к паролю, тогда вы получите только 1 или ноль строк (и вам даже не нужно перебирать набор результатов ):
$user=mysql_real_escape_string($_POST['Uneym'], $dbh);
$pass=mysql_real_escape_string($_POST['password'], $dbh);
$result=mysql_query("SELECT * FROM users WHERE UNAME='$user' AND PW='$pass'",$dbh);
$valid=mysql_num_rows($result);
и еще больше:
7)
if ($ username == $ user && $ password == $ pass)
{
echo "alert ('Login Successful!')";
}
иначе если ($ пароль! = $ pass || $ username! = $ user)
{
echo («Пожалуйста, введите правильное имя пользователя и пароль ...»);
?>
Это не будет анализироваться - есть непревзойденный '{' после остального
8) Условие в операторе else является избыточным - код будет всегда входить в предложение else только в случае сбоя в предложении if, и по определению
($ username == $ user && $ password == $ pass) ===! ($ пароль! = $ pass || $ username! = $ user)
9) использование mysql_select_db () может значительно усложнить жизнь, если вы работаете с несколькими базами данных mysql - в общем, лучше указать, в какой базе данных находится таблица, с помощью оператора DML.
C.