За последние 24 часа нас посетили 22722 программиста и 1207 роботов. Сейчас ищет 701 программист ...

Как после ввода e-mail проверять валидность и отсутствие в базе

Тема в разделе "PHP для новичков", создана пользователем Денис Иванов, 7 ноя 2018.

  1. Денис Иванов

    Денис Иванов Новичок

    С нами с:
    7 ноя 2018
    Сообщения:
    21
    Симпатии:
    0
    Здравствуйте всем. Опыт программирования на php нулевой. Прочитал в нете, что php содержит всего 2 метода - get и post (нажатие на ссылку и клик кнопки формы). Но ведь есть же сайты, где ещё при вводе поля формы HTML "e-mail" происходит проверка его валидности и отсутствие в базе данных. Т.е. при смещении фокуса с поля формы на сайте сообщают, что e-mail корректен и свободен. Как сделать такую проверку именно в форме, как-то навесив событие onchange при инпуте поля e-mail на код php. Следующий код не срабатывает:
    Код (Text):
    1. <!DOCTYPE HTML>
    2. <html>
    3.  
    4. <head>
    5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    6. <title>Регистрация</title>
    7. </head>
    8.  
    9. <body>
    10.  
    11. <?php
    12.    function ImeylIgrokaChange() {
    13.        $connection = mysqli_connect('Мой сервер', 'Мой юзернэйм', 'Мой пароль', 'Моя база') or die(mysqli_error($connection));
    14.        $ImeylIgroka=document.getElementById("ImeylIgroka").value;
    15.        $NadpisImeylIgroka=document.getElementById("NadpisImeylIgroka").value;
    16.     if (empty($ImeylIgroka))
    17.     {
    18.         $NadpisImeylIgroka = 'Вы не ввели почту';
    19.     }
    20.     if (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $ImeylIgroka))
    21.     {
    22.         $NadpisImeylIgroka = 'Неправильно введен адрес электронной почты';
    23.     }
    24.      $result = mysqli_query($connection,"SELECT id FROM users WHERE email='$email'");
    25.      $myrow = mysqli_fetch_array($result);
    26.      if (!empty($myrow['id']))
    27.      {
    28.       $NadpisImeylIgroka = 'Такой email уже зарегистрирован!';
    29.      }
    30.      else
    31.      {
    32.       $NadpisImeylIgroka = 'Email корректен и свободный!';
    33.      }
    34.    }
    35. ?>
    36.  
    37. <form>
    38.     &nbsp;<p><b>Выделенное жирным шрифтом обязательно для заполнения</b></p>
    39.     <p><b>&nbsp;&nbsp; Email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    40.     <input type="text" name="ImeylIgroka" size="60" maxlength="60" required id="ImeylIgroka" onchange=ImeylIgrokaChange()></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    41.     <font color="#FF0000">
    42.     <input type="text" name="NadpisImeylIgroka" size="41" value="пустое поле" id="NadpisImeylIgroka" style="border-style: dotted; border-width: 1px; color:#FF0000" readonly></font></p>
    43. </form>
    44.  
    45. </body>
    46. </html>
    Помогите, пожалуйста, кто чем может. На сайтах же как-то такую проверку сделали. Заранее благодарю
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
  3. Денис Иванов

    Денис Иванов Новичок

    С нами с:
    7 ноя 2018
    Сообщения:
    21
    Симпатии:
    0
    Нет. Осваивать новый метод самостоятельно для меня слишком сложно. Хочу сделать так. Форма HTML содержит метод POST. Как-то надо его вызвать при onchange. Как именно, пока не знаю, щас жму на кнопку. По кнопке происходит передача данных методом POST в форму php, где и стартует php-code. В коде вычисляется заполненность, валидность и свободность e-mail, результат выводится в переменную $NadpisImeylIgroka. Потом я запускаю сессию, записывая в неё данную переменную. Затем я должен перейти с php страницы на страницу html. А уже страница HTML должна при старте запустить свою сессию, в которой значение поля формы приравнивается к параметру сессии из php. Но вся эта шняга не работает - тормозится на записывании переменной в сессии. Хотя, к примеру, если написать не $_SESSION['Register_array'] = $NadpisImeylIgroka; а echo(NadpisImeylIgroka), то сообщение выводится, но страница php застревает и тут, не переходя на html-страницу. Вот код, может кто поможет в чём дело:

    Код (Text):
    1. <?php
    2. session_start();
    3. document.getElementById("NadpisImeylIgroka").value==$_SESSION['Register_array'];
    4. ?>
    5. <!DOCTYPE HTML>
    6. <html>
    7.  
    8. <head>
    9. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    10. <title>Регистрация</title>
    11. </head>
    12.  
    13. <body>
    14.  
    15. <form method="POST" action="Registraciya.php">
    16.     &nbsp;<p><b>Выделенное жирным шрифтом обязательно для заполнения</b></p>
    17.     <p><b>&nbsp;&nbsp; Email:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    18.     <input type="text" name="ImeylIgroka" size="60" maxlength="60" id="ImeylIgroka" onchange=document.getElementById("Zaregistrirovat").submit></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    19.     <font color="#FF0000">
    20.     <input type="text" name="NadpisImeylIgroka" size="41" value="пустое поле" id="NadpisImeylIgroka" style="border-style: dotted; border-width: 1px; color:#FF0000" readonly></font></p><input type="submit" value="Зарегистрировать" name="Zaregistrirovat" id="Zaregistrirovat" style="font-weight: 700"></font></b></p>
    21.     <p>&nbsp;</p>
    22.     <p><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    23.     </b><a href="index.html">На главную</a></p>
    24. </form>
    25.  
    26. </body>
    27.  
    28. </html>
    29.  
    30.  
    31.  
    32.  
    33.  
    34. <?php
    35.        $connection = mysqli_connect('db1.ho.ua', 'blagolotereya', 'rfhnjirfd12lyz', 'blagolotereya') or die(mysqli_error($connection));
    36.        $ImeylIgroka=$_POST['ImeylIgroka'];
    37.     if (empty($ImeylIgroka))
    38.     {
    39.      $NadpisImeylIgroka='Вы не ввели почту';
    40.     }
    41.     if (!empty($ImeylIgroka))
    42.     {
    43.         if (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $ImeylIgroka))
    44.         {
    45.          $NadpisImeylIgroka='Неправильно введен адрес электронной почты';
    46.         }
    47.  
    48.         if (preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $ImeylIgroka))
    49.          {
    50.            $result = mysqli_query($connection,"SELECT user_id FROM Registraciya WHERE useremail='$ImeylIgroka'");
    51.            $myrow = mysqli_fetch_array($result);
    52.              if (!empty($myrow['user_id']))
    53.              {
    54.               $NadpisImeylIgroka='Такой email уже зарегистрирован!';
    55.              }
    56.              if (empty($myrow['user_id']))
    57.              {
    58.                 $NadpisImeylIgroka='Email корректен и свободный';
    59.              }
    60.          }
    61.      }
    62. session_start();
    63. $_SESSION['Register_array'] = $NadpisImeylIgroka;
    64. require('Registraciya.html');
    65. ?>
     
  4. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @Денис Иванов Есть такой параметр в html - required. Используйте его чтоб не писать какие поля заполнить.
    HTML:
    1.  
    2. <div style="padding:1%">
    3.    <form>
    4.     <label>Email:</label>
    5.     <input type="text" name="ImeylIgroka" id="ImeylIgroka" required>
    6.     <button type="submit" id="Zaregistrirovat">Зарегистрировать</button>
    7.    </form>
    8. </div>
    9.  
    Вам html надо поучить, потом css, и только потом через недельку писать на js чтобы проверить с помошью ajax вашу почту