Здравствуйте всем. Опыт программирования на php нулевой. Прочитал в нете, что php содержит всего 2 метода - get и post (нажатие на ссылку и клик кнопки формы). Но ведь есть же сайты, где ещё при вводе поля формы HTML "e-mail" происходит проверка его валидности и отсутствие в базе данных. Т.е. при смещении фокуса с поля формы на сайте сообщают, что e-mail корректен и свободен. Как сделать такую проверку именно в форме, как-то навесив событие onchange при инпуте поля e-mail на код php. Следующий код не срабатывает: Код (Text): <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Регистрация</title> </head> <body> <?php function ImeylIgrokaChange() { $connection = mysqli_connect('Мой сервер', 'Мой юзернэйм', 'Мой пароль', 'Моя база') or die(mysqli_error($connection)); $ImeylIgroka=document.getElementById("ImeylIgroka").value; $NadpisImeylIgroka=document.getElementById("NadpisImeylIgroka").value; if (empty($ImeylIgroka)) { $NadpisImeylIgroka = 'Вы не ввели почту'; } if (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $ImeylIgroka)) { $NadpisImeylIgroka = 'Неправильно введен адрес электронной почты'; } $result = mysqli_query($connection,"SELECT id FROM users WHERE email='$email'"); $myrow = mysqli_fetch_array($result); if (!empty($myrow['id'])) { $NadpisImeylIgroka = 'Такой email уже зарегистрирован!'; } else { $NadpisImeylIgroka = 'Email корректен и свободный!'; } } ?> <form> <p><b>Выделенное жирным шрифтом обязательно для заполнения</b></p> <p><b> Email: <input type="text" name="ImeylIgroka" size="60" maxlength="60" required id="ImeylIgroka" onchange=ImeylIgrokaChange()></b> <font color="#FF0000"> <input type="text" name="NadpisImeylIgroka" size="41" value="пустое поле" id="NadpisImeylIgroka" style="border-style: dotted; border-width: 1px; color:#FF0000" readonly></font></p> </form> </body> </html> Помогите, пожалуйста, кто чем может. На сайтах же как-то такую проверку сделали. Заранее благодарю
Нет. Осваивать новый метод самостоятельно для меня слишком сложно. Хочу сделать так. Форма HTML содержит метод POST. Как-то надо его вызвать при onchange. Как именно, пока не знаю, щас жму на кнопку. По кнопке происходит передача данных методом POST в форму php, где и стартует php-code. В коде вычисляется заполненность, валидность и свободность e-mail, результат выводится в переменную $NadpisImeylIgroka. Потом я запускаю сессию, записывая в неё данную переменную. Затем я должен перейти с php страницы на страницу html. А уже страница HTML должна при старте запустить свою сессию, в которой значение поля формы приравнивается к параметру сессии из php. Но вся эта шняга не работает - тормозится на записывании переменной в сессии. Хотя, к примеру, если написать не $_SESSION['Register_array'] = $NadpisImeylIgroka; а echo(NadpisImeylIgroka), то сообщение выводится, но страница php застревает и тут, не переходя на html-страницу. Вот код, может кто поможет в чём дело: Код (Text): <?php session_start(); document.getElementById("NadpisImeylIgroka").value==$_SESSION['Register_array']; ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Регистрация</title> </head> <body> <form method="POST" action="Registraciya.php"> <p><b>Выделенное жирным шрифтом обязательно для заполнения</b></p> <p><b> Email: <input type="text" name="ImeylIgroka" size="60" maxlength="60" id="ImeylIgroka" onchange=document.getElementById("Zaregistrirovat").submit></b> <font color="#FF0000"> <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> <p> </p> <p><b> </b><a href="index.html">На главную</a></p> </form> </body> </html> <?php $connection = mysqli_connect('db1.ho.ua', 'blagolotereya', 'rfhnjirfd12lyz', 'blagolotereya') or die(mysqli_error($connection)); $ImeylIgroka=$_POST['ImeylIgroka']; if (empty($ImeylIgroka)) { $NadpisImeylIgroka='Вы не ввели почту'; } if (!empty($ImeylIgroka)) { if (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $ImeylIgroka)) { $NadpisImeylIgroka='Неправильно введен адрес электронной почты'; } if (preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $ImeylIgroka)) { $result = mysqli_query($connection,"SELECT user_id FROM Registraciya WHERE useremail='$ImeylIgroka'"); $myrow = mysqli_fetch_array($result); if (!empty($myrow['user_id'])) { $NadpisImeylIgroka='Такой email уже зарегистрирован!'; } if (empty($myrow['user_id'])) { $NadpisImeylIgroka='Email корректен и свободный'; } } } session_start(); $_SESSION['Register_array'] = $NadpisImeylIgroka; require('Registraciya.html'); ?>
@Денис Иванов Есть такой параметр в html - required. Используйте его чтоб не писать какие поля заполнить. HTML: <div style="padding:1%"> <form> <label>Email:</label> <input type="text" name="ImeylIgroka" id="ImeylIgroka" required> <button type="submit" id="Zaregistrirovat">Зарегистрировать</button> </form> </div> Вам html надо поучить, потом css, и только потом через недельку писать на js чтобы проверить с помошью ajax вашу почту