-1

今まで私はHTMLを持っていました

<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._%+-]+@[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);
} 

検証付きの私の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._-]+@[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();

登録フォームや提案を作成するための優れたチュートリアルを誰かが知っている場合。

4

3 に答える 3

2

フォームが送信されるので、reg.php にアクセスできます。とにかくカスタム関数でデータを送信していることから、それを修正する最も簡単な方法は、送信入力を通常のボタンに変更することです。そう

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

になる

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

フォームを検証する関数でエラーを見つけた場合に false を返す場合にも役立つと思います。

補足質問: ハニーポット フィールドに値 (http://) を指定したのは奇妙だと思います。通常、これらのフィールドは空です.そうする特定の理由はありますか?

于 2013-06-15T06:29:04.170 に答える
0

JSすべてのコードをfunction submitForm(formData)内部に保持する必要があります$(document).ready(function(){});

私が間違っていなければ、名前の変数がないcompanyので、この変数をpasswordi,e に変更します。if conditionあなたの検証の2番目に。

注: コードにエラーが存在する場合は、それらのエラーから逃れるのではなく、デバッグしてみてください。

于 2013-06-15T06:50:30.533 に答える
0

コードが機能していない場合、JS コードに何か問題があります

おそらく、JQuery http://bit.ly/1aAXy5Uを使用して SignupForm のこの例から試すことができます

于 2014-01-06T15:45:45.590 に答える