[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Авторизация.Сессия.БД.
happy46
Всем привет....я написал такую форму:

<?php
if (isset($_SESSION['auth']))echo '<br><br>Вы авторизованы, <a href="/mybook/index.php?logout">Выход</a>'; else {?>
<form
method='POST' action = 'index.php'>
Логин <input type='text' name='login'><br>

Пароль<input type='password' name='pass'>

<input
type='submit' value='Авторизоваться'>
</form>

вы не авторизованы
<?}?>


и такой код авторизации:


<?php
session_start();
if ($_POST['login'] == 'php' && $_POST['pass'] == '12345') $_SESSION['auth'] = '1';
if (isset($_GET['logout'])) unset($_SESSION['auth']);
if ($_POST['login'] == 'Vasya' && $_POST['pass'] == '12345') $_SESSION['auth'] = '1';
if (isset($_GET['logout'])) unset($_SESSION['auth']);
if ($_POST['login'] == 'Max' && $_POST['pass'] == '12345') $_SESSION['auth'] = '1';
if (isset($_GET['logout'])) unset($_SESSION['auth']);
if ($_POST['login'] == 'admin' && $_POST['pass'] == '12345') $_SESSION['auth'] = '1';
if (isset($_GET['logout'])) unset($_SESSION['auth']);

?>


Вопрос такой: Как сделать так,что бы при авторизации имя и пароль сравнивались с значениями из базы даных?если можно, то по подробнее,я чайник в этом деле.



Спустя 10 минут, 11 секунд (21.10.2011 - 15:52) Renden написал(а):
happy46
Ну для начала надо создать базу данных, создать таблицу с полями id | login | password.
Потом при сабмите формы посылать запрос в бд. ну типа:

$login = mysql_real_escape_string(trim($_POST['login']));
$password = mysql_real_escape_string(trim($_POST['password']));

$query = mysql_query("SELECT FROM `users` WHERE `login`='$login' AND `password`='$password'");
if(mysql_num_rows($query))
echo "логин\пароль верны";
else
echo "введен неверный логин\пароль";

ну только заместо echo "логин\пароль верны"; выполнять действия связанные с сессией..

Спустя 1 минута, 17 секунд (21.10.2011 - 15:53) YVSIK написал(а):
happy46 может так !! пишешь к каждой строчке комментарии
что хотел сделать , всю свою логику выполнения этого скрипта .
вот попробуй своими словами описать что тут написал
if ($_POST['login'] == 'php' && $_POST['pass'] == '12345')

Спустя 3 минуты, 9 секунд (21.10.2011 - 15:56) m4a1fox написал(а):
Renden, просто интересно. Читал где-то что
Цитата

$login    = mysql_real_escape_string(trim($_POST['login']));
    $password = mysql_real_escape_string(trim($_POST['password']));


mysql_real_escape_string

Нужно применять только при добавлении данных в БД. То есть так оно не сработает! Или меня жестоко надули?

Спустя 3 минуты, 42 секунды (21.10.2011 - 16:00) Winston написал(а):
Цитата (m4a1fox @ 21.10.2011 - 15:56)
Нужно применять только при добавлении данных в БД. То есть так оно не сработает! Или меня жестоко надули?

Если подключение с БД есть, то сработает, иначе будет Access denied

Спустя 50 секунд (21.10.2011 - 16:01) happy46 написал(а):
Цитата (Renden @ 21.10.2011 - 12:52)
happy46
Ну для начала надо создать базу данных, создать таблицу с полями id | login | password.
Потом при сабмите формы посылать запрос в бд. ну типа:

$login = mysql_real_escape_string(trim($_POST['login']));
$password = mysql_real_escape_string(trim($_POST['password']));

$query = mysql_query("SELECT FROM `users` WHERE `login`='$login' AND `password`='$password'");
if(mysql_num_rows($query))
echo "логин\пароль верны";
else
echo "введен неверный логин\пароль";

ну только заместо echo "логин\пароль верны"; выполнять действия связанные с сессией..

пишет такое: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\mybook\index.php on line 8
введен неверный логин\пароль

Спустя 2 минуты (21.10.2011 - 16:03) johniek_comp написал(а):
http://irbis-team.com/15/7
тут расписано так что не получится не должно! дерзай! удачи!

Спустя 1 минута, 2 секунды (21.10.2011 - 16:04) happy46 написал(а):
Цитата (YVSIK @ 21.10.2011 - 12:53)
happy46 может так !! пишешь к каждой строчке комментарии
что хотел сделать , всю свою логику выполнения этого скрипта .
вот попробуй своими словами описать что тут написал
if ($_POST['login'] == 'php' && $_POST['pass'] == '12345')

примерн если логин и пароль равны сответственно , то делать то.....может где я не правилно сделал,но я тока начинающий...напиши тогда как правильно вообще мне все реализовать...буду благодарен=)

Спустя 18 секунд (21.10.2011 - 16:04) imbalance_hero написал(а):
happy46
mysql_query("тут запрос") or die(mysql_error());

Спустя 36 секунд (21.10.2011 - 16:05) Winston написал(а):
$query = mysql_query("SELECT * FROM `users` WHERE `login`='$login' AND `password`='$password'");


ОФФТОП
johniek_comp
Когда чат будет ? :D

Спустя 2 минуты, 13 секунд (21.10.2011 - 16:07) m4a1fox написал(а):
А разве так нельзя

$login = mysql_real_escape_string(trim($_POST['login']));
$password = mysql_real_escape_string(trim($_POST['password']));

$query = mysql_query("SELECT * FROM `users`
WHERE `login`='"
.$login."' AND `password`='".$password."'
LIMIT 1 "
) or die("Ошибка - ".mysql_error()) ;
if($query(вот тут тупичок. Тупо не помню. Если запрос вернет 0 то это все равно будет TRUE?))
echo "логин\пароль верны";
else
echo "введен неверный логин\пароль";

Спустя 21 секунда (21.10.2011 - 16:07) Игорь_Vasinsky написал(а):
happy46
на время отлпдки пиши так

$query = mysql_query("SELECT * FROM `users` WHERE `login`='" . $login . "' AND `password`='" . $password . "'") or die(mysql_error());


ты * - после SELECT пропустил.

Спустя 28 секунд (21.10.2011 - 16:08) Winston написал(а):
Цитата (m4a1fox @ 21.10.2011 - 16:07)
SELECT FROM

Один написал, и все копируют примеры, где не указано, что выбирается biggrin.gif

Спустя 33 секунды (21.10.2011 - 16:08) YVSIK написал(а):
Цитата (Winston @ 21.10.2011 - 16:05)
$query = mysql_query("SELECT * FROM `users` WHERE `login`='$login' AND `password`='$password'");


ОФФТОП
johniek_comp
Когда чат будет ? :D

Свернутый текст
ага в тот-же котел !! biggrin.gif

Спустя 30 секунд (21.10.2011 - 16:09) Игорь_Vasinsky написал(а):
обрати внимание на конкатенацию (ковычки)
подробнее - есть линк в моей подписи "Оформление SQL запроса"

Спустя 33 секунды (21.10.2011 - 16:09) johniek_comp написал(а):
Winston
[moon]Капчу поставил, но надо сделать так что бы если 5 сообщений в течении n-ого времени приходили, то она только в том случае появлялась, вот сделал что-то подобное... cool.gif tongue.gif[/moon]


Спустя 15 секунд (21.10.2011 - 16:09) Игорь_Vasinsky написал(а):
ну теперь тож все копировать будут biggrin.gif
а я первый был wink.gif

Спустя 18 секунд (21.10.2011 - 16:10) Winston написал(а):
Свернутый текст
Цитата (Игорь_Vasinsky @ 21.10.2011 - 16:09)
(ковычки)

Правильно кавычки wink.gif

Спустя 1 минута, 17 секунд (21.10.2011 - 16:11) Игорь_Vasinsky написал(а):
johniek_comp
зачем офтопить то. есть же свой топик.

Winston
на форуме я редко за орфАграфией слежу wink.gif не до неё... вперёд успеть надо.

Спустя 26 секунд (21.10.2011 - 16:11) m4a1fox написал(а):
Глаз алмаз у всех! А мы с YVSIK - слепые! biggrin.gif

Спустя 55 секунд (21.10.2011 - 16:12) YVSIK написал(а):
happy46 расписывается так :
по утру
встать;
умыться;
пойти на работу;

если (ты начальник)
{
взять веник;
поехать в сауну;
}
(иначе)
{
упасть;
отжаться;
}

а как точно вот тут и надо смотреть и понять все базовые принципы

Спустя 2 минуты, 13 секунд (21.10.2011 - 16:15) Игорь_Vasinsky написал(а):
YVSIK
blink.gif что это было?

Спустя 2 минуты, 46 секунд (21.10.2011 - 16:17) Игорь_Vasinsky написал(а):
m4a1fox
Цитата
if($query(вот тут тупичок. Тупо не помню. Если запрос вернет 0 то это все равно будет TRUE?))


если совпадений нет - то FALSE
если есть то INTEGER

unsure.gif

Спустя 27 секунд (21.10.2011 - 16:18) m4a1fox написал(а):
Это он логику скрипта расписал по аналогии для большей наглядности! Я в какой то книжке так же видел.

Игорь_Vasinsky
Цитата
если совпадений нет - то FALSE
если есть то INTEGER

А ну значит как я и думал. Тогда можно так делать

$login = mysql_real_escape_string(trim($_POST['login']));
$password = mysql_real_escape_string(trim($_POST['password']));

$query = mysql_query("SELECT * FROM `users`
WHERE `login`='"
.$login."' AND `password`='".$password."'
LIMIT 1 "
) or die("Ошибка - ".mysql_error()) ;
if($query)
echo "логин\пароль верны";
else
echo "введен неверный логин\пароль";

Спустя 1 минута, 38 секунд (21.10.2011 - 16:19) m4a1fox написал(а):
Игорь_Vasinsky
Цитата
если совпадений нет - то FALSE
если есть то INTEGER

А ну значит как я и думал. Тогда можно так делать

$login = mysql_real_escape_string(trim($_POST['login']));
$password = mysql_real_escape_string(trim($_POST['password']));

$query = mysql_query("SELECT * FROM `users`
WHERE `login`='"
.$login."' AND `password`='".$password."'
LIMIT 1 "
) or die("Ошибка - ".mysql_error()) ;
if($query)
echo "логин\пароль верны";
else
echo "введен неверный логин\пароль";

Спустя 6 секунд (21.10.2011 - 16:20) Winston написал(а):
Цитата (Игорь_Vasinsky @ 21.10.2011 - 16:17)
если совпадений нет - то FALSE
если есть то INTEGER

mysql_query возвращает resource, а если ошибка в запросе то false
А mysql_num_rows возвращает int

Спустя 1 минута, 50 секунд (21.10.2011 - 16:21) Игорь_Vasinsky написал(а):
biggrin.gif я подумал что про num_rows речь.....
конечно False или ресурс

Спустя 14 секунд (21.10.2011 - 16:22) m4a1fox написал(а):
Черт, значит я ошибся.
тогда

$login = mysql_real_escape_string(trim($_POST['login']));
$password = mysql_real_escape_string(trim($_POST['password']));

$query = mysql_query("SELECT * FROM `users`
WHERE `login`='"
.$login."' AND `password`='".$password."'
LIMIT 1 "
) or die("Ошибка - ".mysql_error()) ;
if(mysql_num_rows($query))
echo "логин\пароль верны";
else
echo "введен неверный логин\пароль";

Спустя 2 минуты, 51 секунда (21.10.2011 - 16:24) Игорь_Vasinsky написал(а):
m4a1fox
как это ошибся...
успешный ответ от запроса (выборки) - должен возращать ресурс....

Спустя 3 минуты, 1 секунда (21.10.2011 - 16:28) YVSIK написал(а):
Игорь_Vasinsky
m4a1fox
рОбятЫ а рОбятЫ, кончайте офтопить ответьте ТС он задал вопрос а вы начали вси свои дела тут обсуждать , а он уже так и сбежал так ничего и не поняв что тут началось !!

Спустя 1 минута, 16 секунд (21.10.2011 - 16:29) Игорь_Vasinsky написал(а):
YVSIK
Процетируй его вопрос.. чёт я не вижу sad.gif

Спустя 25 секунд (21.10.2011 - 16:29) m4a1fox написал(а):
Да брось YVSIK. Ему готовый скрипт дали

$login = mysql_real_escape_string(trim($_POST['login']));
$password = mysql_real_escape_string(trim($_POST['password']));

$query = mysql_query("SELECT * FROM `users`
WHERE `login`='"
.$login."' AND `password`='".$password."'
LIMIT 1 "
) or die("Ошибка - ".mysql_error()) ;
if(mysql_num_rows($query))
echo "логин\пароль верны";
else
echo "введен неверный логин\пароль";

Спустя 1 минута, 36 секунд (21.10.2011 - 16:31) Winston написал(а):
Пароль в незашифрованом виде.... не плохо smile.gif

Спустя 39 секунд (21.10.2011 - 16:31) YVSIK написал(а):
Цитата
Вопрос такой: Как сделать так,что бы при авторизации имя и пароль сравнивались с значениями из базы даных?если можно, то по подробнее,я чайник в этом деле.

m4a1fox
а он что его понял? этот ответ? а вы начали о ссвоем говорить !

Спустя 2 минуты, 41 секунда (21.10.2011 - 16:34) m4a1fox написал(а):
Ну да по хорошему там посолить с начала и с конца строки с паролем, потом кинуть в md5() или sha1, хотя мне md5() ближе, больше нравится! Вот тогда это уже что-то будет нормальное!

Спустя 18 секунд (21.10.2011 - 16:34) Игорь_Vasinsky написал(а):
Для ТС

перед тем как пихать пароли в БД - шифруй (поле для пароля 40 симв... вроде для sha1)

$password = sha1($password);


след-но и при сверке в коде

WHERE `login`='".$login."' AND `password`='".sha1($password)."' 


да. пароли потом ты не увидишь..только хэш

Спустя 5 минут, 31 секунда (21.10.2011 - 16:40) m4a1fox написал(а):
YVSIK
Дык он и не спрашивал. Раз не спрашивает - значит понимает! Не надо Робина Гуда строить! Мы все тут были нубами в таких вопросах когда то и если что то не понимали, то спрашивали а не сидели и F5 жмякали в надежде на правильный ответ. И если б не своя инициатива, мол, поясните глупому ну не понимаю, то до сих пор бы путали isset и empty. Кстати, у ТС, чего-то я кнопочки на отправку данных я не увидел! Недочет! Надо поправить. Предположим стандартный вариант кнопки

if(isset($_POST['submit'])){
$login = !empty($_POST['login'])?mysql_real_escape_string(trim($_POST['login'])):NULL;

$password = !empty($_POST['password'])?mysql_real_escape_string(trim($_POST['password'])):NULL;
if($login !== NULL AND $password !== NULL){
$query = mysql_query("SELECT * FROM `users`
WHERE `login`='"
.$login."' AND `password`='".$password."'
LIMIT 1 "
) or die("Ошибка - ".mysql_error()) ;
if(mysql_num_rows($query))
echo "логин\пароль верны";
else
echo "введен неверный логин\пароль";
}
}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.