Intereting Posts
Что такое внутренний указатель массива в PHP? Запрос пользовательского почтового запроса WordPress Если rank = this put team here? Ошибка JavaScript JavaScript не работает! щелкнуть даже Вставьте один или несколько наборов полей в базу данных с помощью динамической формы Удаление последней запятой из цикла foreach Может ли Goutte / Guzzle быть переведен в режим UTF-8? удаление всех файлов за исключением того, что выполняется код удаления присвоение $ _GET и $ _POST одной переменной Получить символы после последнего / в URL-адресе Каковы методы кэширования, которые могут быть реализованы при разработке динамического веб-сайта? Использование регулярного выражения для соответствия блоку div, имеющему определенный идентификатор Как скрыть / защитить данные паролей в php? Найдите ссылку youtube в строке PHP и преобразуйте ее в код встраивания? Загрузите сайт + базу данных в Dropbox с помощью PHP

jQuery Validator Plugin – проверка существующего имени пользователя и электронной почты в базе данных mysql

Я успешно создал форму, которая отправляет и добавляет пользователей в базу данных mysql, а форма проверки с помощью плагина «jQuery Validator» отлично подходит для всего, кроме проверки того, существует ли имя пользователя в базе данных …

Я просто потратил около 8 часов на чтение и попытался выяснить способ определения нового метода с помощью плагина jQuery Validator. Я просто не могу понять, как я буду проверять базу данных для введенного имени пользователя или электронной почты и возвращать, существует ли она уже или нет, используя jQuery.

Мой код:

<script src="../assets/js/main.js"></script> <script src="../assets/js/ajax.js"></script> <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.min.js"></script> <!-- FORM VALIDATION --> <script type="text/javascript"> jQuery.validator.addMethod("checkExists", function(value, element) { //No idea what to call here }, "Username already exists." ); //<![CDATA[ $(window).load(function(){ $("form").validate({ rules: { username: {minlength: 3, required: true, checkExists: true}, email: {email: true, required: true}, pass1: {minlength: 3, required: true}, pass2: {minlength: 3, required: true, equalTo: "#pass1"}, country: {required: true}, tandc: {required: true}, }, messages: { username: {required: "You need to enter a Username."}, email: {required: "You need to enter an Email Address."}, pass1: {required: "You need to enter a Password."}, pass2: {required: "You need to enter your password again.", equalTo: "Your passwords don't match."}, country: {required: "You need to tell us where you live."}, tandc: {required: "You need to read and agree to the Terms and Conditions to use CGE."} }, showErrors: function(errorMap, errorList) { $.each(this.successList, function(index, value) { return $(value).popover("hide"); }); return $.each(errorList, function(index, value) { var _popover; console.log(value.message); _popover = $(value.element).popover({ trigger: "manual", placement: "right", content: value.message, template: "<div class=\"popover\"><div class=\"arrow\"></div><div class=\"popover-inner\"><div class=\"popover-content\"><p></p></div></div></div>" }); _popover.data("popover").options.content = value.message; return $(value.element).popover("show"); }); } }); });//]]> </script> 

Если кто-нибудь умный, возможно, изменит мой код, чтобы показать мне, как я должен был это сделать, это было бы большой помощью – я чувствую, что я собираюсь сходить с ума!

Спасибо заранее, не могу дождаться, чтобы увидеть решение 🙂


EDIT – это мой текущий код

Кажется, ничего не происходит, мне кажется, что я ближе, хотя:

ТЕКУЩИЙ КОД:

signup.php

  $(window).load(function(){ $("form").validate({ rules: { username: {minlength: 3, required: true}, email: {email: true, required: true, remote: {url: "./validation/checkUnameEmail.php", type : "post"}}, pass1: {minlength: 3, required: true}, pass2: {minlength: 3, required: true, equalTo: "#pass1"}, country: {required: true}, tandc: {required: true} }, 

checkUnameEmail.php

 <?php include_once(".../php_includes/db_conx.php"); $email = urldecode($_POST['email']); $result = mysqli_query($db_conx, "SELECT * FROM users WHERE email = '$email' LIMIT 1;"); $num = mysqli_num_rows($result); if($num == 0){ echo "true"; } else { echo "E-Mail-Adresse schon registriert."; } mysqli_close($db_conx); ?> 

* Db_conx.php *

 <?php $db_conx = mysqli_connect("localhost", "root", "root", "membership"); //Evlauate the connection if (mysqli_connect_errno()){ echo mysqli_connect_error(); exit(); } ?> 

 $.validator.addMethod("checkExists", function(value, element) { var inputElem = $('#register-form :input[name="email"]'), data = { "emails" : inputElem.val() }, eReport = ''; //error report $.ajax( { type: "POST", url: validateEmail.php, dataType: "json", data: data, success: function(returnData) { if (returnData!== 'true') { return '<p>This email address is already registered.</p>'; } else { return true; } }, error: function(xhr, textStatus, errorThrown) { alert('ajax loading error... ... '+url + query); return false; } }); }, ''); 

ИЛИ

Вместо этого вы можете использовать удаленный метод, который позволяет выполнять удаленные проверки: http://docs.jquery.com/Plugins/Validation/Methods/remote

Например.

  $("#yourFormId").validate({ rules: { email: { required: true, email: true, remote: { url: "checkUnameEmail.php", type: "post" } } }, messages: { email: { required: "Please Enter Email!", email: "This is not a valid email!", remote: "Email already in use!" } } }); 

checkUnameEmail.php // Например.

  <?php $registeredEmail = array('jenson1@jenson.in', 'jenson2@jenson.in', 'jenson3@jenson.in', 'jenson4@jenson.in', 'jenson5@jenson.in'); $requestedEmail = $_REQUEST['email']; if( in_array($requestedEmail, $registeredEmail) ){ echo 'false'; } else{ echo 'true'; } ?> 

Код js

 username: { required: true, minlength: 5, remote: '/userExists' }, 

Php-код для проверки наличия и возврата сообщений

 public function userExists() { $user = User::all()->lists('username'); if (in_array(Input::get('username'), $user)) { return Response::json(Input::get('username').' is already taken'); } else { return Response::json(Input::get('username').' Username is available'); } }