Loading...
Что указывать в name= ?
Чтобы пользователь мог войти введя имя пользователя или адрес электронной почты на выбор ,в одно поле input

<form method="post">
<input type="text" name="">
________
посл. ред. 23.08.2023 в 21:28; всего 15 раз(а); by SNEG
SNEG , name это просто название инпута, а уже из него данные ты сравниваешь с чем-то в бд
<input type="text" name="kakaya-to_fignya">

и в PHP уже проверяешь $_POST['kakaya-to_fignya']
xynd3r (23 авг 2023, в 21:28)
<input type="text" name="kakaya-to_fignya">

и в PHP уже проверяешь $_POST['kakaya-to_fignya']
php
$u = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT `id`, `userpass` FROM `users` WHERE `username` = '".$username"' OR `email` = '".$email."'"));

А как name="" заделать под варик имя пользователя или адрес электронной почты ?
________
посл. ред. 23.08.2023 в 21:32; всего 2 раз(а); by SNEG
По факту нужно сделать проверку на наличие @ в поле ввода и если @ присутствует, то проверять, как email, если нет, то как имя пользователя.

php
if (filter_var($_POST['kakaya-to_fignya'], FILTER_VALIDATE_EMAIL)) {
// Тут сверяемся с БД по email, так как валидация по почте прошла успешно
} else {
// Тут сверяемся с БД по name, так как валидация по почте не прошла
}
Если прямо совсем образно, то логика такая.

html
<form method="post">
<input type="text" name="user" placeholder="Введите имя или email" />
<input type="submit" name="next" placeholder="Далее" />
</form>


php
$val = $_POST['user'];

if (filter_var($val, FILTER_VALIDATE_EMAIL)) $key = 'email';
else $key = 'username';

$query = 'SELECT `id`, `userpass` FROM `users` WHERE `'.$key.'` = "'.$val.'"';

$u = mysqli_fetch_assoc(mysqli_query($mysqli, $query));


либо

php
$val = $_POST['user'];

$query = 'SELECT `id`, `userpass` FROM `users` WHERE `'.(filter_var($val, FILTER_VALIDATE_EMAIL) ? 'email':'username').'` = "'.$val.'"';

$u = mysqli_fetch_assoc(mysqli_query($mysqli, $query));

________
посл. ред. 23.08.2023 в 21:45; всего 3 раз(а); by xynd3r
xynd3r , спасибо, т.е нужно проверить строку содержит ли она имейл или логин
________
посл. ред. 23.08.2023 в 21:38; всего 1 раз(а); by SNEG
SNEG , да, просто если ты через БД будешь прогонять поиск, то это создаст лишнюю нагрузку, так как БД сначала будет искать все входы, как будто это имя пользователя, а потом как почта. По факту методами php ты исключаешь один из возможных вариантов поиска обычной валидацией твоей формы на наличие почты в данных пришедших с нее.
исправил прошлый пост для большей наглядности, но там чисто для понятие логики и в продакшен такое лучше не сувать.
________
посл. ред. 23.08.2023 в 21:43; всего 1 раз(а); by xynd3r
xynd3r , + на этапе регистрации пользователей необходимо определятся с допустимым шаблоном логина.
Можно задать логин формата: user@bymas.noname
filter_var определяет как e-mail и ищет по полю с e-mail, хотя по сути - это логин.
+ для ускорения если так критично, ставим индексы
nicefile , ты что-то умное сказал *monedas* , во время регистрации можно запретить использовать символ @ в имени пользователя.
________
посл. ред. 23.08.2023 в 22:40; всего 1 раз(а); by SNEG
Онлайн: 1
Время:
Gen. 0.1164
(c) Bym.Guru 2010-2025