ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   SQL / c++ (https://forum.antichat.xyz/showthread.php?t=1378138)

underpl1g 05.02.2021 20:13

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

Если нет, то *мое действие*

Tema05 05.02.2021 20:19

Цитата:

Сообщение от underpl1g

пароль

ты имел ввиду хеш пароля?

underpl1g 05.02.2021 20:20

Цитата:

Сообщение от Tema05

ты имел ввиду хеш пароля?

для начала именно пароль и логин, без зашифровок

Dark_Knight 06.02.2021 22:46

Цитата:

Сообщение от underpl1g

для начала именно пароль и логин, без зашифровок

Давай так. Сразу эту идею мы отбрасываем и забываем про неё. Сравнивай исключительно ХЕШ пароля. Второй вопрос. Ты делаешь подключение к БД сразу в своей программе или используешь прослойку какую-то? Прослойка в данном случае - это ты передаешь данные куда-то на сервер и он уже там ответ делает запрос к БД и тебе только отдает ответ от БД.

Vintik 07.02.2021 22:12

Цитата:

Сообщение от Dark_Knight

Давай так. Сразу эту идею мы отбрасываем и забываем про неё. Сравнивай исключительно ХЕШ пароля. Второй вопрос. Ты делаешь подключение к БД сразу в своей программе или используешь прослойку какую-то? Прослойка в данном случае - это ты передаешь данные куда-то на сервер и он уже там ответ делает запрос к БД и тебе только отдает ответ от БД.

Человек задал конкретный вопрос, зачем его учить? Он вроде бы советов не просил.

PHP:





Код:

$mysqli
=
mysqli_connect
(
$mysql_host
,
$mysql_user
,
$mysql_password
,
$mysql_database
)
;
mysqli_query
(
$mysqli
,
"SET NAMES 'utf8'"
)
;
$mysqli_query
=
mysqli_query
(
$mysqli
,
"SELECT id FROM users WHERE login = '$login' AND passwd = '$passwd'"
)
;
# делает запрос по введенному логину и паролю
$count
=
mysqli_num_rows
(
$mysqli_query
)
;
# получает количество результатов
if
(
$count
==
0
)
# сравнивает с нулём
$result
=
false
;
# если ноль - значит такого аккаунта нету
mysqli_close
(
$mysqli
)
;



Простая реализация на PHP. Думаю, с C++ разберешься.

Dark_Knight 07.02.2021 23:11

@Vintik

1. Мы его не учим. Мы эму даем советы, чтобы у него случайно в будущем не спиздили БД и он не плакала, что мы тут эму плохого посоветовали потому я испросил где это он хочет использовать. Вдруг эму чисто для практики надо на локалке сделать.

2. Где экранирование строк в запросе?

3. Использовать переменные напрямую в запросе - плохая практика. Даже для примера,

4. Где PDO?

5. Строки 5 и 6 можно записать ввиде одной строк и сразу убить проблему с необъявленной переменной. Вот тебе пример твоего кода, если значение будет один. https://ideone.com/JjYkzG

Vintik 07.02.2021 23:23

Цитата:

Сообщение от Dark_Knight

@Vintik
1. Мы его не учим. Мы эму даем советы, чтобы у него случайно в будущем не спиздили БД и он не плакала, что мы тут эму плохого посоветовали потому я испросил где это он хочет использовать. Вдруг эму чисто для практики надо на локалке сделать.
2. Где экранирование строк в запросе?
3. Использовать переменные напрямую в запросе - плохая практика. Даже для примера,
4. Где PDO?
5. Строки 5 и 6 можно записать ввиде одной строк и сразу убить проблему с необъявленной переменной. Вот тебе пример твоего кода, если значение будет один. https://ideone.com/JjYkzG

1. Согласен, был неправ.

2. Зачем? Так работает.

3. Не знал.

4. Зачем?)

5. Переменная объявлена строкой выше. Тут согласен, можно так, как ты посоветовал.

#Northn 07.02.2021 23:25

Цитата:

Сообщение от Vintik

2. Зачем? Так работает.

Чтобы не было sql инъекций

Vintik 07.02.2021 23:26

Цитата:

Сообщение от #Northn

Чтобы не было sql инъекций

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

Tema05 07.02.2021 23:30

Цитата:

Сообщение от Vintik

Человек задал конкретный вопрос, зачем его учить? Он вроде бы советов не просил.

PHP:





Код:

$mysqli
=
mysqli_connect
(
$mysql_host
,
$mysql_user
,
$mysql_password
,
$mysql_database
)
;
mysqli_query
(
$mysqli
,
"SET NAMES 'utf8'"
)
;
$mysqli_query
=
mysqli_query
(
$mysqli
,
"SELECT id FROM users WHERE login = '$login' AND passwd = '$passwd'"
)
;
# делает запрос по введенному логину и паролю
$count
=
mysqli_num_rows
(
$mysqli_query
)
;
# получает количество результатов
if
(
$count
==
0
)
# сравнивает с нулём
$result
=
false
;
# если ноль - значит такого аккаунта нету
mysqli_close
(
$mysqli
)
;



Простая реализация на PHP. Думаю, с C++ разберешься.

sql injection:

https://forum.antichat.xyz/attachments/27665562/


Время: 06:31