За последние 24 часа нас посетили 103713 программистов и 5649 роботов. Сейчас ищет 2061 программист ...

Проверка имени пользователя и почты

Тема в разделе "Сделайте за меня", создана пользователем Неугомонный, 23 авг 2023.

  1. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    Есть такой кусочек кода чтобы лишний раз не дергать базу данных через OR . Как разбить на две проверки, сли существует пользователь с таким email выводило что "$_POST['email'] занят" , а если с username то "имя пользователя $_POST['username'] занято"?
    PHP:
    1. $zz = filter_var($_POST['zz'], FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
    2.     $u = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT `id` FROM `".PREFIX."_users` WHERE `".$zz."` = '".esc($_POST['zz'])."' LIMIT 1"));
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.125
    Симпатии:
    1.222
    Адрес:
    там-сям
    Напиши SQL запрос с условием OR. Если он вернет непустой результат, выведи "email или имя пользователя уже заняты". Всё!

    Я не понял что такое $_POST['zz'] и почему плохо "дёргать базу через OR". Черезжопство какое-то в которое не хочется вникать.
    Пользователь вводит в форму несколько полей в т.ч. и почту, и имя пользователя, так? Вот и используй оба значения в одном запросе через ИЛИ.
    --- Добавлено ---
    P.S. Тебе даже не надо получать сами существующие данные. Можно понять есть они или нет через функцию mysqli_num_rows
     
  3. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    626
    Симпатии:
    24
    никак, пользуну не нужно знать занято мыло или нет, занят логин или нет, нужно отлуп давать, что введены неправильные данные, какие, никого не должно волновать

    ты ему ещё разбей, какую букву он неправильно ввёл, так может он тогда быстрее нащупает правильную
     
    don.bidon нравится это.
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.125
    Симпатии:
    1.222
    Адрес:
    там-сям
    Вообще какбы принято намекать, что акк уже есть, а не просто "ошибка и пошел в жопу".

    Github: "Email is invalid or already taken"
    Facebook: "Do you already have a Facebook account?"
    Mail.ru: "Ящик с таким именем уже существует"

    В случае топикстартера можно наверное написать "Аккаунт с таким логином или адресом уже существует" без уточнения. Делай как проще и да прибудет с тобой сила!
    --- Добавлено ---
    P.S. раздел "Сделайте за меня" не гарантирует, что за тебя сделают. Скорее тебя закидают какашками за лень.