Как правильно проверить логин и пароль?

VovaMX

Guest
Как правильно проверить логин и пароль?

Есть БД в которой есть таблица clan_users.
В ней 3 столбца.

1.uid - int, auto_increment.
2.login - text.
3.pass - text.

//----------------------------------------------------------

Есть документ с формой и 2-мя полями.
<input type='Text' name='admin_login'>
<input type='Password' name='admin_pass'>
форму обрабатывает документ add_user.php

//----------------------------------------------------------

Документ должен проверить на верность введенные в форму данные,
и если в БД есть такой пользователь с таким паролем то выполнить допустим.

echo "Привет ".$admin_login;

А если такого пользователя нет или пароль к логину
не верный то выдать например такую строчку.

echo "Не правильный логин или пароль";

//----------------------------------------------------------

Еще я знаю что не правильно хранить данные типа пароль
в текстовом виде, но не знаю в каком.
Помогите пожалуйста.
 

VovaMX

Guest
Дело в том что я пишу сдесь потому что мне нужна быстрая подсказка, спасибо за ссылки на учебники - я почитаю их когда у меня будет на это время.
 

Фанат

oncle terrible
Команда форума
там объем как раз в объеме быстрой подсказки.
как составлять запрос к mysql, как выводить результат.
в общем, только первой достаточно.
 

VovaMX

Guest
Как составлять и как выводить запрос я думаю что я умею, я спрашывал как в описаном выше случае сделать это правильно.
То что я написал (

extract($_POST);
if(($admin_login != "") && ($admin_pass != "") && ($player_name != "") && ($player_title != "") && ($player_level != "")){
require ("connect.php");
$clan_admin_query="Select * from clan_users";
$result=mysql_query($clan_admin_query);
$rows=mysql_num_rows($result);
for($i=0;$i<$rows;$i++){
$clan_admin_array=mysql_fetch_array($result);
if($clan_admin_array["login"] == $admin_login){
if($clan_admin_array["pass"] == $admin_pass){
$add_player_query="INSERT INTO `clan_structure` ( `uid` , `name` , `title` , `level` ) VALUES ('', '".$player_name."', '".$player_title."', '".$player_level."');";
mysql_query($add_player_query);
print "<script>window.location=\"../index.php?goto=structure\";</script>";
}else{
echo "Не правильный логин или пароль.";
}
}else{
echo "Не правильный логин или пароль.";
}
}
}else{
echo "Вы заполнили не все поля формы.";
}

) меня не устраивает потому что я уверен что все это можно сделать правильнее и проще для сервера.
А вот как это сделать я не знаю. :(
И я прошу помощи у тех кто знает.
 

Фанат

oncle terrible
Команда форума
вот!
в такой постановке вопрос вполне тянет на быструю консультацию.
Ну сам посуди - откудя мне из твоего первого было узнать - умеешь ли ты с базой, там, соединяться, запросы делать.

Аздесь можно дать четкий ответ - да, можно.
Добавить в запрос условие. База для того и придумана, чтобы выполнять ПОИСК и СОРТИРОВКУ. И много еще чего. За нас.
А так, как испльзуешь сейчас ты - так никакого отличия с текстовым файлом. и база не нужна. Это не в упрек, а в поучение.

$query="Select * from clan_users WHERE login='$admin_login' AND pass='$admin_pass'";
if (mysql_num_rows($result)) {
бла-бла
}else{
echo "Не правильный логин или пароль.";
}
только не забудь про PHP FAQ: \"Кавычки \". Если Вы работаете с MySQL
 

VovaMX

Guest
Вот что сделал я после вашей быстрой консультации :)
extract($_POST);
if(($admin_login != "") && ($admin_pass != "") && ($player_name != "") && ($player_title != "") && ($player_level != "")){
require ("connect.php");
$clan_admin_query="Select * from clan_users WHERE login='".$admin_login."' AND pass='".$admin_pass."'";
$result=mysql_query($clan_admin_query);
if (mysql_num_rows($result)){
$add_player_query="INSERT INTO `clan_structure` ( `uid` , `name` , `title` , `level` ) VALUES ('', '".$player_name."', '".$player_title."', '".$player_level."');";
mysql_query($add_player_query);
print "<script>window.location=\"../index.php?goto=structure\";</script>";
}else{
echo "Не правильный логин или пароль.";
}
}else{
echo "Вы заполнили не все поля формы.";
}
//---------------------------------------------------------------------

Спасибо огромноЕ! :), вы мне очень помогли.
Все работает как и раньше, только в 2 раза быстрее и теперь можно добавить в БД еще сколько угодно админов.

//---------------------------------------------------------------------

Но выплыл еще один небольшой вопрос, БД MySql
поддержывают вложеные запросы?
Вот к примеру такие.
$query="select * from (select * from users where title=".$test_title.") where uid=".$test_uid;
Уверен что запрос этот написан не правильно потому как я давно проходил эту тему и слабо ее помню, но всеже надеюсь он дает понять что я имел ввиду.
Выбрать данные из выбраных данных используя только один запрос к БД.
 

Фанат

oncle terrible
Команда форума
БД MySql поддержывают вложеные запросы, начиная с определенной версии.
Однако в большинстве случаев вполне можно обойтись без них.
 

VovaMX

Guest
Спасибо, вопросов больше не имею... :)
p.s. Пока что :)
 
Сверху