почему моя регистрационная форма не отправляется?

Проблема с моей формой состоит в том, что, когда я заполняю все правильно и кнопка отправки ничего не делает. Мой код проверки JQuery работает на 100%, и я думаю, что проблема в моем PHP-коде. Мне просто интересно, если кто-нибудь может сказать мне проблему, то я могу решить ее. Если вы хотите увидеть мой скрипт проверки jquery его на Вот

: /

HTML ядро

<div id="registerForm">
<h1>Register</h1>
<form action="core/register.php" method="POST" class="registerForm form-horizontal">
<div class="form-group has-feedback">
<label class="control-label col-sm-2" for="username">Username:</label>
<div class="col-sm-10">
<span></span>
<input type="text" name="username" class="form-control" id="username" placeholder="Enter a username">
</div>
</div>
<div class="form-group has-feedback">
<label class="control-label col-sm-2" for="email">Email:</label>
<div class="col-sm-10">
<span></span>
<input id="email" type="email" name="email" class="form-control" placeholder="Enter your email - IMPORTANT">
</div>
</div>
<div class="form-group has-feedback">
<label class="control-label col-sm-2" for="password">Password:</label>
<div class="col-sm-10">
<span></span>
<input id="password" type="password" name="password" class="form-control" placeholder="Enter a password">
</div>
</div>
<div class="form-group has-feedback">
<label class="control-label col-sm-2" for="confirmpassword">Confirm:</label>
<div class="col-sm-10">
<span></span>
<input id="confirmpassword" type="password" name="confirmpassword" class="form-control" placeholder="Confirm password">
</div>
</div>
<div class="form-group has-feedback">
<label class="control-label col-sm-2" for="code">Code:</label>
<div class="col-sm-10">
<span></span>
<input type="text" id="code" name="code" class="form-control" placeholder="Enter Register Code">
</div>
</div>
<div class="buttonspecial">
<input class="btn btn-primary" type="submit" id="submit" value="Register!">
</div>
</form>
</div>

И мой PHP-код:

//FUNCTION
function register($register_data, $mysqli) {
$username       = $register_data['username'];
$password       = crypt($register_data['password'], PASSWORDSTRING);
$email          = $register_data['email'];
$email_code     = $register_data['email_code'];

if ($insert_stmt = $mysqli->prepare("INSERT INTO users (username, password, email, email_code, created) VALUES (?, ?, ?, ?, NOW())")){
$insert_stmt->bind_param('ssss', $username, $password, $email, $email_code);

if ($insert_stmt->execute()) {
return true;
}
return false;
}
}

//WHERE FORM WILL BE SUBMITTED TO

<?php
include_once("../core/init.php");

if (isset($_POST['username'], $_POST['email'], $_POST['password'])){
$register_data = array(
'username'          => $_POST['username'],
'password'          => $_POST['password'],
'email'             => $_POST['email'],
'email_code'        => md5($_POST['username'] + microtime() + $_POST['email']),
);
if (register($register_data, $mysqli) == true){
header('Location: ../register_success.php');
} else {
header('Location: ../error.php?err=Registration failure: INSERT');
}
}
?>

Код проверки JQuery:

    $(document).ready(function () {
$('.registerForm').validate({
// errorPlacement: function(error,element) {
//     return true;
// },
rules: {
username: {
required: true,
rangelength: [5, 20],
remote: {
url: 'core/check/check.php',
type: "post",
data: {
username: function () {
return $("#username").val();
}
}
}
},
password: {
required: true,
rangelength: [5, 50]
},
confirmpassword: {
required: true,
rangelength: [5, 50],
equalTo: password
},
email: {
required: true,
remote: {
url: 'core/check/check.php',
type: "post",
data: {
email: function () {
return $("#email").val();
}
}
}
},
code: {
required: true,
remote: {
url: 'core/check/check.php',
type: "post",
data: {
code: function () {
return $("#code").val();
}
}
}
},
},
messages: {
username: {
required: "Enter a username.",
rangelength: "Username must be 5 to 20 character",
remote: "Username have been taken"},
password: {
required: "Enter a password.",
rangelength: "Password must be 5 to 50 character",
remote: "Email have been taken"},
confirmpassword: {
required: "Confirm your password.",
rangelength: "Password must be 5 to 50 character",
equalTo: "Your password does not match"},
email: {
required: "Enter your email(NOT SPAM EMAIL).",
remote: "This Email have been taken"},
code: {
required: "Enter your Register Code",
remote: "Invalid code or used code"},
recaptcha_response_field: {
required: "Do the reCaptcha",
remote: 'Bad reCaptcha'
}
},
highlight: function (element) {
$(element).closest('.form-group').removeClass('has-success').addClass('has-error').find('.col-sm-10 span').removeClass('glyphicon glyphicon-ok form-control-feedback').addClass('glyphicon glyphicon-remove form-control-feedback');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error').addClass('has-success').find('.col-sm-10 span').removeClass('glyphicon glyphicon-remove form-control-feedback').addClass('glyphicon glyphicon-ok form-control-feedback');
},
submitHandler: function () {
form.submit();
}
});
});

check.php

 <?php
include_once("../core/connect/db_connect.php");

// EMAIL
if (isset($_POST['email'])){
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$email = filter_var($email, FILTER_VALIDATE_EMAIL);

$pre_stmt = "SELECT email FROM users WHERE email = ? LIMIT 1";
$stmt = $mysqli->prepare($pre_stmt);

if ($stmt) {
$stmt->bind_param('s', $email);
$stmt->execute();
$stmt->store_result();
// CHECK IF EMAIL EXIST
if ($stmt->num_rows == 0){
echo "true";
$stmt->close();
} else {
echo "false";
$stmt->close();
}

}
}

// CODE
if (isset($_POST['code'])){
$ccode = filter_input(INPUT_POST, 'code', FILTER_SANITIZE_STRING);
$code = md5(trim(strtolower($ccode)));

$pre_stmt = "SELECT code FROM code WHERE code = ? AND used = 0";
$stmt = $mysqli->prepare($pre_stmt);

if ($stmt) {
$stmt->bind_param('s', $code);
$stmt->execute();
$stmt->store_result();
// CHECK IF CODE EXIST
if ($stmt->num_rows == 1){
echo 'true'; //OKAY
$stmt->close();
} else {
echo 'false'; //NOTOK
$stmt->close();
}

}
}

// USERNAME
if (isset($_POST['username'])){
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

$pre_stmt = "SELECT username FROM users WHERE username = ?";
$stmt = $mysqli->prepare($pre_stmt);

if ($stmt) {
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->store_result();
// CHECK IF CODE EXIST
if ($stmt->num_rows == 0){
echo 'true';
$stmt->close();
} else {
echo 'false';
$stmt->close();
}
}
}?>

0

Решение

Вот твоя проблема …

submitHandler: function () {
form.submit();
}
  1. Вы забыли передать form аргумент в функцию. submitHandler принимает и предотвращает отправку нативной формы; и это ничего не может сделать с form.submit() так как form здесь не существует Это должно выглядеть больше так …

    submitHandler: function (form) { // <- need to pass the 'form' argument here
    $(form).submit();
    }
    
  2. ОДНАКО, так как .submit() родного form действие это то, что плагин будет делать по умолчанию, вам не нужно submitHandler совсем. Все это лишнее. Убери это. Удалить весь submitHandler вариант.

(The submitHandler нужен только тогда, когда вы хотите сделать что-то еще, например, отправить всю форму через ajax().)


ЗАМЕТКИ:

Ваш remote Метод использует data вариант …

rules: {
username: {
// other rules,
remote: {
url: 'core/check/check.php',
type: "post",
data: {
username: function () {
return $("#username").val();
}
}
}
}, ....

data опция не нужна для username поле, потому что значение этот поле уже отправлено по умолчанию с remote,

rules: {
username: {
// other rules,
remote: {
url: 'core/check/check.php',
type: "post"}
}, ....

(The data опция понадобится только если вы захотите отправить другие дополнительные данные вместе с этим remote запрос.)


У вас здесь еще больше лишних …

password: {
required: true,
rangelength: [5, 50]
},
confirmpassword: {
required: true,
rangelength: [5, 50],
equalTo: password
},

При использовании equalTo Правило, оно обязывает confirmpassword поле точно соответствует password поле. Это означает, что вы не могли уйти confirmpassword пустое или введено неверное количество символов, потому что оно уже должен соответствовать password поле.

Это будет работать практически так же …

password: {
required: true,
rangelength: [5, 50]
},
confirmpassword: {
required: true,  // <- I left this one for an initial empty form
equalTo: password
},

Кстати: вы можете просто использовать заполнители в ваших сообщениях об ошибках. Правильные значения будут вставлены динамически.

rangelength: "Username must be {0} to {1} characters",

Ваше ДЕМО: http://jsfiddle.net/2jwja5uy/1/

То же ДЕМО с remote методы удалены, так что вы можете увидеть, как это происходит: http://jsfiddle.net/2jwja5uy/2/

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]