1

我有一个 HTML 单页网站。我想插入 google recaptcha 2.0 系统,但是 js 出了点问题。当我单击提交按钮时,不会显示成功消息,也不会发送任何消息。按钮 Send 保持单击状态,不会发生进一步的操作。使用底部的原始 php 文件,表单可以正常工作。但是我必须插入recaptcha,垃圾邮件太多。有人可以帮忙吗?谢谢西皮奥

代码

<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<form name="frmcontact" action="php/send.php" class="contact-frm"    method="post">
<input type="text" required placeholder="Nome" name="txtname">
<p class="twocolumn">
<input type="email" required placeholder="Email" name="txtemail">
<input type="tel" placeholder="Phone" name="txtphone">
</p>
<div class="g-recaptcha" data-sitekey="xxx"></div>
<textarea placeholder="Testo del Messaggio" name="txtmessage"></textarea>
<input type="submit" class="button" value="SEND" name="btnsend">

我要插入的 PHP 代码:

<?php
if(isset($_POST['btnsend']) && !empty($_POST['btnsend'])):
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-         response'])):
    //your site secret key
    $secret = 'XXX';
    //get verify response data
    $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
    $responseData = json_decode($verifyResponse);
    if($responseData->success):
        //contact form submission code
        $name = !empty($_POST['txtname'])?$_POST['txtname']:'';
        $email = !empty($_POST['txtemail'])?$_POST['txtemail']:'';
        $email = !empty($_POST['txtphone'])?$_POST['txtphone']:'';
        $message = !empty($_POST['txtmessage'])?$_POST['txtmessage']:'';

        $to = 'XXX';
        $subject = 'New contact form have been submitted';
        $htmlContent = "
            <h1>Contact request details</h1>
            <p><b>Name: </b>".$name."</p>
            <p><b>Email: </b>".$email."</p>
            <p><b>Phone: </b>".$phone."</p>
            <p><b>Message: </b>".$message."</p>
        ";
        // Always set content-type when sending HTML email
        $headers = "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
        // More headers
        $headers .= 'From:'.$name.' <'.$email.'>' . "\r\n";
        //send email
        @mail($to,$subject,$htmlContent,$headers);

        $succMsg = 'Your contact request have submitted successfully.';
    else:
        $errMsg = 'Robot verification failed, please try again.';
    endif;
else:
    $errMsg = 'Please click on the reCAPTCHA box.';
endif;
else:
$errMsg = '';
$succMsg = '';
endif;
?>

JS代码:

$('form[name="frmcontact"]').submit(function () {

    var This = $(this);

    if($(This).valid()) {
        var action = $(This).attr('action');

        var data_value = unescape($(This).serialize());
        $.ajax({
             type: "POST",
             url:action,
             data: data_value,
             error: function (xhr, status, error) {
                 confirm('The page save failed.');
               },
              success: function (response) {
                $('#ajax_contact_msg').html(response);
                $('#ajax_contact_msg').slideDown('slow');
                if (response.match('success') != null) $(This).slideUp('slow');
             }
        });
    }
    return false;
});

原始 PHP 代码:

<?php
if(!$_POST) exit;

$to       = 'gopal@iamdesigning.com'; #Replace your email id...
$name     = $_POST['txtname'];
$email    = $_POST['txtemail'];
$phone    = $_POST['txtphone'];
$subject  = 'Support';
$comment  = $_POST['txtmessage'];

if(get_magic_quotes_gpc()) { $comment = stripslashes($comment); }

 $e_subject = 'You\'ve been contacted by ' . $name . '.';

 $msg  = "You have been contacted by $name with regards to $subject.\r\n\n";
 $msg .= "$comment\r\n\n";
 $msg .= "You can contact $name via email, $email.\r\n\n";
 $msg .= "-------------------------------------------------------------------------------------------\r\n";

 if(@mail($to, $e_subject, $msg, "From: $email\r\nReturn-Path: $email\r\n"))
 {
     echo "<span class='success-msg'>Thanks for Contacting Us, We will call back to you soon.</span>";
 }
 else
 {
     echo "<span class='error-msg'>Sorry your message not sent, Try again Later.</span>";
 }
 ?>
4

0 回答 0