2016-12-29 10 views
-1

PHPで初心者であるため、自分のウェブサイトにGoogle reCaptchaを実装する際に問題があります。フィールドが空の場合にのみフォームを送信する方法

私は、このフィールドが空白の場合はフォームを送信してください。ここで

が私のコードです:

<form method="POST" action="/#contact"> 

    <!-- Name + mail --> 
    <input type="text" required placeholder="Name" name="name" /> 
    <input type="email" required placeholder="Email" name="email" id="email" value=""/> 

<select name="subject" id="category"> 
    <option value="">Subject</option> 
    <option value="1">1</option> 
    <option value="1">2</option> 
    <option value="1">3</option> 
    <option value="1">4</option> 
</select> 

<input id="submit" name="submit" type="submit" value="Send"/> 
<input type="reset" value="Clear" class="alt" /> 

<div> 
    <label>If you're human, leave this field epmty</label> 
    <input type="text" name="comment"> 
    <?php 
    if(empty($_POST['comment'])) { 
    // the field is empty 
    } 
    ?> 
</div> 
</form> 

私の問題は、次のとおりです。フォームはまだ送信されて、偶数フィールドのものがあります。

ご協力いただきありがとうございます。

+0

フォームがで送られる助けどの要素をクリックしますか?送信ボタン?フォームの送信を妨げるjavascriptはありますか? –

+3

*入力要素に 'required'属性を追加してください。 –

+0

私の最後の入力に 'required'を追加すると(空であると思われます)、私はそれを記入しない限りフォームは送信されません。これは私が望まないものです – user7354466

答えて

1

これまで2つの解決策があります。

  1. は、入力を検証するPHPファイルを呼び出します。ユーザーが送信ボタンを押すと、PHPページに移動します。このページでは、入力したフォームの値を取得して検証します。無効な入力が見つかった場合は、URLのエラーパラメータ(ex。index.php?error = botfoundなど)でメインページ(ex。index.php)を呼び出すことができます。また、index.phpファイルの先頭に、エラーパラメータがあるかどうかチェックを書いて、必要に応じてエラーメッセージを表示することができます。

  2. javascriptは、値がPHPファイルに送信される前に入力の値を検証します。私は値があればそのスクリプトを確認してくださいになると思い

    <script> 
        function DoSubmit(){ 
         if(document.getElementById('idOfInput').value != ""){ 
          alert("Wrong input"); //Or you can actually add an error message to your page. 
          return false; 
         } 
         return true; 
        } 
    </script> 
    

    :のようなJavaScript関数の何かを

    <form method="POST" action="/#contact" onsubmit="DoSubmit();"> 
    

    :これを行うには、へ<form method="POST" action="/#contact">

からあなたのコードを変更しますid 'ifOfInput'が空でない入力の場合、警告を出し、PHPスクリプトは呼び出されません。

(それは通常のユーザーが、ボットはまだ入力に入力されます困らないようにところで、あなたはまた、その入力を不可視にすることができます。)

希望はこれが:)

+0

ボットを防ぐためのこの検証のポイントは、フォームがサイレントモードで失敗することです。フォームがメッセージで失敗すると、そのボットにメッセージが送信されなかったことが通知されます... – Devon

関連する問題