Форма регистрации с двумья значениями

176
14 июля 2017, 02:52

Столкнулся с проблемой:

На сайте в форме регистрации есть поле, в которое нужно ввести email (например: exemple@gmail.com) или имя пользователя (например: user_name1).

Вопрос: как в php файле оброботчике формы узнать что именно пришло в переменной $_POST['login'] - email пользователя или его username?

Answer 1

Самый простой вариант — действительно, сделать запрос который будет искать по обоим значениям. Не знаю, какой query-builder у вас используется (и используется ли).

Как чисты sql это выглядит следующим образом:

SELECT * FROM users WHERE (username = '{login}' OR email='{login}') AND 'password' = '{password_hash}'

В большинстве штатных случаев этого варианта будет более чем достаточно.

Самая сложное в этом запросе при использовании конкретного query-builder - это найти, каким образом группировать условия в скобки

Answer 2

Проверить регулярным выражением. Например так:

if (preg_match("/^[a-z0-9\.]+@[a-z0-9]+\.[a-z0-9]+$/i", $_POST['login']) == 1) {
 //email
} else {
 //username
}

Если же требуется проверка E-Mail адресов потенциально содержащих символы алфавита отличного от английского, то можно воспользоваться способом о котором писал выше Visman.

if (strpos($_POST['email'], "@") != false) {
 //email
} else {
 //username
}

Но данный способ не гарантирует того что вам прислали именно E-Mail адрес.

READ ALSO
meta open graph для главной

meta open graph для главной

ЗдравствуйтеСкажите, вот добавляю теги Opengraph к главной странице сайта index

207
Нумерация элементов в smarty

Нумерация элементов в smarty

ЗдравствуйтеПодскажите, как мне пронумеровать в smarty(v2) класс каждой в зависимости от количества элементов ?

358
Как перевести число в другое значение?

Как перевести число в другое значение?

Есть числовые значения рейтинга от 0 до 10Числа рейтинга имеют одно число после точки, то есть могут быть числа 4

298