带有Recaptcha v2的PHP表单-表单刷新而无需提交

时间:2018-07-05 13:55:20

标签: php forms email recaptcha

我已经阅读了许多此处的帖子,并遵循了所有建议,但是我无法获得此表单以通过Google Recaptcha v2提交。按提交后,表格会刷新。

html表单和php在同一页面上。我基本上只是采用一种已经存在的表格,然后添加到Google Recaptcha中。

任何帮助将不胜感激!

PHP:

<?php
 if(isset($_POST['submit']) && !empty($_POST['submit'])){ 
    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])){


        //your site secret key
        $secret = 'SECRET KEY';

        $gRecaptcha = $_POST['g-recaptcha-response'];

        $gRecaptcha = "https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$_POST['g-recaptcha-response'];

        $response = file_get_contents($gRecaptcha);

        $responseData = json_decode($response);

        if($responseData->success){

          switch ($_POST['location']) {
            case 'Inverness':
              $Send = "email address";
              break;
            case 'Southlake':
              $Send = "email address";
              break;
        }

        $Subject = "A Message From your Website!";
        $name = $_POST['name'];
        $email = $_POST['email'];
        $phone = $_POST['phone'];
        $location = $_POST['location'];
        $message = $_POST['message'];

        $mailbody="Name: $name\n\nEmail: $email\n\nPhone: $phone\n\nLocation: $location\n\nMessage: $message\n\n";
        mail($Send, $Subject, $mailbody);
        $succMsg = 'Your contact request have submitted successfully.';
            exit($succMsg); 
        } else {
            // if not show the error
            $errMsg = 'Robot verification failed, please try again.';
            echo $errMsg;
        }
      }else{
        // if recaptcha is not checked
        $errMsg = 'Please click on the reCAPTCHA box.';
    } 
}  
?> 

HTML:

<div id="contact-form" style="float:left;">
    <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" enctype="text/plain">
        <table width="325" cellpadding="0" cellspacing="6">
            <tr>
                <td><label for="name">Name:</label></td>
                <td><input type="text" name="name" value=""/></td>
            </tr>
            <tr>
                <td><label for="email">Email:</label></td>
                <td><input type="text" name="email" id="email" value="" /></td>
            </tr>
            <tr>
                <td><label for="phone">Phone:</label></td>
                <td><input type="text" name="phone" id="phone"  value="" /></td>
            </tr>
            <tr>
                <td><label for="loc">Location:</label></td>
                <td><select name="location"><option value="Inverness">Inverness</option><option value="Southlake">Southlake</option></select></td>
            </tr>
            <tr>
                <td><label for="msg">Questions/Comments:</label></td>
                <td><textarea name="message" id="msg"  value="" cols="20" rows="5" /></textarea></td>
            </tr>
            <tr>
            <td>For spam prevention purposes, please answer the question below</td>
        </tr>
            <tr>

                <td><div style="width:200px" class="g-recaptcha" data-sitekey="SITE KEY"></div></td>
            </tr>
            <tr>
                <td colspan="2" align="left"><input type="submit" name='submit' value="Send" style="color:white;background-color:#bc2729;width:95px;height:29px;border:none" src="images/btn_submit.jpg"></td>
            </tr>
        </table>
    </form>


                </div>

1 个答案:

答案 0 :(得分:0)

从表单中删除enctype="text/plain"属性,表单应提交。您可以让它使用默认编码application/x-www-form-urlencoded提交。