Проблема с Sql запросом

mr. Eof

Новичок
Проблема с Sql запросом

Здраствуйте!

Я делаю авторизациюдаля сайта:

$connect=mysql_connect ($location,$login,$password);
mysql_select_db ($db_name);
$res=mysql_query("SELECT * FROM ".$users_table." WHERE login like ".$Formlogin);
$row=mysql_fetch_row ($res);

и дальше использую: $res[1], $res[2]...

Таблица:
--------------------------------
| id | login | password | ... |
--------------------------------

Данный код будет работать если запись существует.

Господа, подскажите, как сделать так, чтобы узнать существует ли нужная запись, а то может дальше и проверять Логин/Пароль - не надо..

Я имею ввиду что проверка типа if($res[1]=="") будет глупой, да и это не эстетично..
Подскажите пожалуйста.
Спасибо.
 

Slavicos

Новичок
mysql_num_rows($res)
или
while($row=mysql_fetch_array($res)){<твой код>}

ЗЫ чет странная авторизация
 

disc

Новичок
Да и вправду странноватая реализация, mysql_num_rows но запрос сразу сделай с логином и паролем.
 

mr. Eof

Новичок
блин... спасибо за ответы, но тогда другой вопрос.

Как по идее, в идеале, должен быть реализован механизм аутентификации?
 

Slavicos

Новичок
mr. Eof
хм... в поиск?
или подумать пару секунд?
тебе что нужно от посетителя узнать для аутентификации/авторизации?
(похоже тема не в том разделе)
 

Фанат

oncle terrible
Команда форума
mr. Eof
ты спрашиваешь, как тебе сделать авторизацию ЦЕЛИКОМ или как проверить введенные пользователем данные?
если второе, то тебе уже объяснили, вроде.
а если первое, то после прохождения проверки пишешь в сессию, что чел авторизован, и на остальных страницах проверяешь.
с сессиями ты, вроде, работал
в чем вопрос - непонятно
 

mr. Eof

Новичок
Да. Спасибо.
На самом деле, вот код:

$connect=mysql_connect ($db_location,$db_login,$db_password);
mysql_select_db ($db_name);

$req="SELECT * FROM '$users_table' WHERE login LIKE '$Formlogin' and password LIKE '$Formpassword'";
$res=mysql_query($req);

if (($res != null) and mysql_num_rows($res)) //Собственно проверка.
{
session_name("SSID");
session_start();
$_SESSION['SSID_flag']='On';

echo "<HTML><!-- --- --><HEAD><Title>Please wait!</Title></HEAD><!-- --- -->";
echo "<h1 align='center'><b>Please wait!</b></h1>";
echo "<meta http-equiv=Refresh content=1;url=../../index.php><!-- --- --></HTML>";
}
else
{
...
}

Проблема-то в следующем: при попытке аутентификации - постоянно выполняется ELSE, хотя Логин/пароль - правильные и есть в бд.

Можно литак составлять проверку выборки (естественно, что запрос будет выполнен, но его результатом м.б. NULL (если такого логина и пароля - нет) и значение, если запись существует) из таблицы (if (($res != null) and mysql_num_rows($res)))?

Дело в том, что как проверить данные - я знаю, и вроде бы - все знаю как сделать, но единственное чего не знаю - как проверить, была ли в результате запроса выбрана запись?

Мой вариант - не работает.
 

Trianon

Новичок
Автор оригинала: mr. Eof

$req="SELECT * FROM '$users_table' WHERE login LIKE '$Formlogin' and password LIKE '$Formpassword'";
Это просто праздник какой-то.
Введи процент вместо пароля и войдешь любым пользователем.

Конструкции LIKE если и применяют при аутентификации- - то уж никак не для проверки пароля.
Да и для логина
а) при весьма специфического вида таблице логинов
и
б) всяко в обратную сторону
'$Formlogin@$RemoteHost' LIKE login

Короче, уберите LIKE, поставьте =
 

Фанат

oncle terrible
Команда форума
ужас.
тебе не авторизацию учиться делать, а с базой работать.
$req="SELECT * FROM '$users_table' WHERE login LIKE '$Formlogin' and password LIKE '$Formpassword'";
$res=mysql_query($req);
в этих двух строчках у тебя гора ошибок.
ты не понимаешь, что делает и что озвращает функция mysql_query
ты не представляешь себе синтаксис SQL и лепишь запрос от балды.

прочти документацию на mysql_query.
прочти ответы, которые тебе давали выше - как ПРАВИЛЬНО проверять.
а, самое главное - для начала научись составлять запросы в SQL
Эти две ссылки
http://phpfaq.ru/slashes
http://phpfaq.ru/debug
читать и выучить наизусть.
плюс освоить работу в mysql в консоли и все запросы проверять сначала там

-~{}~ 16.06.07 16:10:

да, и про like очень правильное замечание
 
Сверху