2013-06-15 4 views
-1

До сих пор у меня есть HTMLAjax PHP + MySQL регистрационная форма учебник

<form id="account_reg" action="reg.php" method="post"> 
    <div id="response"></div> 
    <div class="input"> 
     <label>Login</> 
     <input name="login" type="text" class="required" id="login" size="30"/> 
    </div> 

    <div class="input"> 
    <label>Password</> 
    <input name="password" type="text" class="required" id="password" size="30"/> 
    </div> 

    <div class="input"> 
    <label>Repeat Password</> 
    <input name="rpassword" type="text" class="required" id="rpassword" size="30"/> 
    </div> 

    <div class="input"> 
    <label>Email</> 
    <input name="email" type="text" class="required" id="email" size="30"/> 
    </div> 

    <div class="button"> 
    <input type="submit" name="send" id="send" value="Send"/> 
    </div> 

    <div class="input"> 
    <input type="hidden" name="honeypot" id="honeypot" value="http://"/> 
    <input type="hidden" name="humancheck" id="humancheck" class="clear" value=""/> 
    </div> 
</form> 

МОЕ PHP У меня есть некоторые проверки на стороне сервера. `

include("dop/config.php"); //includ Db connect 

    $login = ($_POST['login']); 
    $password = ($_POST['password']); 
    $rpassword = ($_POST['rpassword']); 
    $email = ($_POST['email']); 
    $humancheck = $_POST['humancheck']; 
    $honeypot = $_POST['honeypot']; 
if ($honeypot == 'http://' && empty($humancheck)) { 
$error_message = ''; 
$reg_exp = "/^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9-]+\.[a-Za-Z.](2,4)$/"; 
if(!preg_match($reg_exp, $email)){ 
$error_message .="<p>A Valid email is required</p>"; 
} 
if(empty($login)){ 
$error_message .="<p>enter login</p>"; 
} 
if(empty($password)){ 
$error_message .="<p>Enter password</p>"; 
} 
if(empty($rpassword)){ 
$error_message .="<p>Enter password again</p>"; 
} 
if($password != $rpassword){ 
$error_message .="<p>password mut match</p>"; 
} 
} 
else { 
$return['error'] = true; 
$return['msg'] = "<h3>There was a problem with your submission. Please try again.</h3>";  
    echo json_encode($return); 
} 

My JS с проверкой.

$('#send').click(function(e) 
    { 
     e.preventDefault(); 
     var valid = ''; 
     var required =' is required.'; 
     var login = $('#account_reg #login').val(); 
     var password = $('#account_reg #password').val(); 
     var rpassword = $('#account_reg #rpassword').val(); 
     var email = $('#account_reg #email').val(); 
     var honeypot = $('#account_reg #honeypot').val(); 
     var humancheck = $('#account_reg #humancheck').val(); 

     if(login = ''){ 
      valid ='<p> Your Name '+ required +'</p>'; 
     } 
     if(password='' || company.length<=6){ 
      valid +='<p> Password '+ required +'</p>'; 
     } 
     if(rpassword != password){ 
      valid +='<p> password must match </p>'; 
     } 
     if(!email.match(/^([a-z0-9._-][email protected][a-z0-9._-]+\.[a-z]{2,4}$)/i)) 
     { 
      valid +='<p> Your Email' + required +'</p>'; 
     } 


     if (honeypot != 'http://') { 
      valid += '<p>Spambots are not allowed.</p>';  
     } 

     if (humancheck != '') { 
      valid += '<p>A human user' + required + '</p>'; 
     } 
     if(valid !=''){ 
      $('#account_reg #response').removeClass().addClass("error") 
       .html('<strong> Please Correct the errors Below </strong>' + valid).fadeIn('fast'); 
     } 
     else{ 
      //$('form #response').removeClass().addClass('processing').html('Processing...').fadeIn('fast'); 
      var formData = $('#account_reg').serialize(); 
      $('#send').val("Please wait..."); 
      submitForm(formData); 
     } 
    }); 
function submitForm(formData) { 

$.post('reg2.php',formData, function(data){ 
    //console.log(data); 
    $('#send').val("Send"); 
    if (data === '1') { 
     alert('ok!'); 
    } else { 
     alert('wrong shit'); 
    } 
}); 
}; 

Я еще не сделал часть MySQL. Вставка и проверка, если учетная запись уже зарегистрирована.

Первая проблема, которая у меня есть на событие Нажмите перенаправляет меня на reg.php даже когда я использую e.preventDefault();

Если кто-нибудь знает хороший учебник для создания регистрационной формы или предложения.

ответ

2

Форма отправлена, поэтому вы попадаете на reg.php. Из того, что я вижу, вы все равно отправляете данные с помощью настраиваемой функции, поэтому самый быстрый способ исправить это - изменить ввод ввода в обычную кнопку. Так

<input type="submit" name="send" id="send" value="Send"/> 

становится

<input type="button" name="send" id="send" value="Send"/> 

Я думаю, что это также может помочь, если вы возвращаете ложь, когда вы нашли ошибку в функции, которая проверяет форму, когда.

Вопрос: Мне странно, что вы выбрали поле honeypot со значением (http: //). Обычно эти поля пусты. Есть ли какая-то конкретная причина для этого?

0

Вы должны держать все ваши JS код ожидать function submitForm(formData) внутри $(document).ready(function(){});

Если я не ошибаюсь нет ни одной переменной с именем company так изменить эту переменную password, е. во втором if condition вашей проверки.

Примечание: Если в вашем коде есть ошибки, не уклоняйтесь от этих ошибок, а попробуйте отладить их.

+1

Да извиняюсь В моем коде находится в DOM готов. Я меняю компанию. Но все же на клике перенаправляется на reg.php – Froxz

+0

@Froxz: Помните одно, если ваша проблема не решена, тогда не принимайте никакого ответа, вы только теряете новые ответы на свой вопрос. Затем, придя к вашей ошибке, если некоторые ошибки существуют в вашей функции 'click', тогда' form' будет отправляться, перекрестно проверять вашу консоль 'javascript' для каких-либо ошибок. –

0

есть что-то не так с JS кода, когда код не работает

может быть, вы можете попробовать из этого примера для SignupForm с помощью JQuery http://bit.ly/1aAXy5U

Смежные вопросы