reCaptcha即使在失败时也显示成功消息

问题描述 投票:0回答:1

我有一个HTML格式的联系表单,该表单由一个PHP文件处理。 ReCaptcha似乎正在工作,但即使出现故障也总是显示成功消息。我的意思是,用户无需单击“我不是机器人”就可以提交表单,该消息不会发送给我,但是在页面上,该消息看起来像是在发送给用户,因为它显示了成功消息。

关于导致此问题的原因以及如何解决的想法? (我在代码中确实有正确的键,我只是在这篇文章中将它们拉出了)

这是HTML代码::

<!doctype html>
<html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <meta name="description" content="Welcome to Adam Solton Photography, capturing moments through photography. Professional Prints are available. Specializing in Landscape Photography, Real Estate Photography sessions also available." >
        <meta name="keywords" content="Photography, Landscapes, Waterfalls, Sunsets, Prints, Real Estate Photography" >
        <link rel="icon" href="img/favicon.png" type="image/png">
        <title>Adam Solton Photography</title>
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="css/bootstrap.css">
        <link rel="stylesheet" href="vendors/linericon/style.css">
        <link rel="stylesheet" href="css/font-awesome.min.css">
        <link rel="stylesheet" href="vendors/owl-carousel/owl.carousel.min.css">
        <link rel="stylesheet" href="vendors/lightbox/simpleLightbox.css">
        <link rel="stylesheet" href="vendors/nice-select/css/nice-select.css">
        <link rel="stylesheet" href="vendors/animate-css/animate.css">
        <link rel="stylesheet" href="vendors/popup/magnific-popup.css">
        <!-- main css -->
        <link rel="stylesheet" href="css/style.css">
        <link rel="stylesheet" href="css/responsive.css">

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

<!-- This script makes Gallery clickable in the nav-bar  -->    
<script>
jQuery(function($) {
    $('.dropdown > a').click(function(){
        location.href = this.href;
    });
});
</script>       

    </head>

    <!--no right click script--><script language=JavaScript>var message="All images on this website are copyrighted to Adam Solton Photography.  Please contact me with questions.";function clickIE4(){if (event.button==2){alert(message);return false;}}
function clickNS4(e){if (document.layers||document.getElementById&&!document.all){if (e.which==2||e.which==3){alert(message);return false;}}}
if (document.layers){document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS4;}
else if (document.all&&!document.getElementById){document.onmousedown=clickIE4;}
document.oncontextmenu=new Function("alert(message);return false")</script><!--end no right click script-->

    <style>#g-recaptcha-response {
    display: block !important;
    position: absolute;
    margin: -78px 0 0 0 !important;
    width: 302px !important;
    height: 76px !important;
    z-index: -999999;
    opacity: 0;
}</style>

    <body>

        <!--================Header Menu Area =================-->
        <header class="header_area">
            <div class="main_menu">
                <nav class="navbar navbar-expand-lg navbar-light">
                    <div class="container">
                        <!-- Brand and toggle get grouped for better mobile display -->
                        <a class="navbar-brand logo_h" href="index.html"><img src="img/logo.png" alt=""></a>
                        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                        </button>
                        <!-- Collect the nav links, forms, and other content for toggling -->
                        <div class="collapse navbar-collapse offset" id="navbarSupportedContent">
                            <ul class="nav navbar-nav menu_nav ml-auto">
                                <li class="nav-item"><a class="nav-link" href="index.html">Home</a></li>
                                <li class="nav-item"><a class="nav-link" href="prints.html">Prints</a></li> 
                                <li class="nav-item"><a class="nav-link" href="about-me.html">About</a></li> 
                                <li class="nav-item submenu dropdown">
                                    <a href="gallery.html" class="nav-link" role="button" aria-haspopup="true" aria-expanded="false">Gallery</a>
                                    <ul class="dropdown-menu">
                                        <li class="nav-item"><a class="nav-link" href="photos_all.html">&bull; All Photos</a>
                                        <li class="nav-item"><a class="nav-link" href="photos_night.html">&bull; Sunsets, Blue Hour, & Night Photos</a></li>
                                        <li class="nav-item"><a class="nav-link" href="photos_wf.html">&bull; Waterfalls & Rivers</a></li>
                                        <li class="nav-item"><a class="nav-link" href="photos_beaches.html">&bull; Beaches, Bays, & Marinas</a></li>
                                    </ul>
                                </li> 
                                <!--<li class="nav-item submenu dropdown">
                                    <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Blog</a>
                                    <ul class="dropdown-menu">
                                        <li class="nav-item"><a class="nav-link" href="blog.html">Blog</a></li>
                                        <li class="nav-item"><a class="nav-link" href="single-blog.html">Blog Details</a></li>
                                    </ul>
                                </li>--> 
                                <li class="nav-item active"><a class="nav-link" href="contact.html">Contact</a></li>
                            </ul>
                        </div> 
                    </div>
                </nav>
            </div>
        </header>
        <!--================Header Menu Area =================-->

        <!--================Home Banner Area =================-->
        <section class="banner_area_c">
            <div class="box_1620">
                <div class="banner_inner d-flex align-items-center">
                    <div class="container">
                        <div class="banner_content text-center">
                            <h2><font color="ccd9ff">Contact Us</font></h2>
                            <div class="page_link">
                                <a href="index.html">Home</a>
                                <a href="contact.html">Contact Us</a>
                            </div>
                                <p><font color="#ccd9ff"><i><font size="5">This page is still under construction, please bear with me.</font>
                                <br><br><font size="6">I can be contacted using the form below. <br><br> Feel free to contact me for prints, to collaborate, 
                                <br>or with any questions you may have. </size></i></font></p>
                        </div>
                    </div>
                </div>
            </div>
        </section>
        <!--================End Home Banner Area =================-->

        <!--================Contact Area =================-->
        <section class="contact_area p_50">
            <div class="container">
             <!--   <div id="mapBox" class="mapBox" 
                    data-lat="40.701083" 
                    data-lon="-74.1522848" 
                    data-zoom="13" 
                    data-info="PO Box CT16122 Collins Street West, Victoria 8007, Australia."
                    data-mlat="40.701083"
                    data-mlon="-74.1522848">
                </div>     -->
                <div class="row">
                    <div class="col-lg-3">
                        <div class="contact_info">
                            <div class="info_item">
                                <i class="lnr lnr-home"></i>
                                <h6>Martinez, CA, United States
                                <br><br><font color="red"> Don't forget to check the "I'm not a Robot" box, or it will not go through, even if it looks like it!</font></h6>
                                <br><br>

                            </div>
                          <!--  <div class="info_item">
                                <i class="lnr lnr-phone-handset"></i>
                                <h6><a href="#">00 (440) 9865 562</a></h6>
                                <p>Mon to Fri 9am to 6 pm</p>
                            </div>      
                            <div class="info_item">
                                <i class="lnr lnr-envelope"></i>
                                <h6><a href="mailto:@soltonphoto.com">my_email_is_here</a></h6>
                                <p>Send me your questions anytime!</p>
                            </div>    -->
                        </div>
                    </div>
                    <div class="col-lg-9">
                        <form class="row contact_form" action="contact_process.php" method="post" id="contactForm" novalidate="novalidate">
                            <div class="col-md-6">
                                <div class="form-group">
                                    <input type="text" class="form-control" id="name" name="name" placeholder="Enter your name">
                                </div>
                                <div class="form-group">
                                    <input type="email" class="form-control" id="email" name="email" placeholder="Enter email address">
                                </div>
                                <div class="form-group">
                                    <input type="text" class="form-control" id="subject" name="subject" placeholder="Enter Subject">
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <textarea class="form-control" name="message" id="message" rows="1" placeholder="Enter Message"></textarea>
                                </div>
                            </div>

                            <div class="g-recaptcha" data-sitekey="my_public_key_was_here"></div>


                            <div class="col-md-12 text-right">
                                <button type="submit" value="submit" class="btn submit_btn">Send Message</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </section>
        <!--================Contact Area =================-->

         <!--================Instagram Area =================-->
        <section class="instagram_area">
            <div class="container box_1620">
                <div class="insta_btn">
                    <a class="btn theme_btn" href="http://instagram.com/59mango_adam_solton" target="_blank">Follow me on instagram</a>
                </div>
                <div class="instagram_image row m0">
                    <a href="http://instagram.com/59mango_adam_solton" target="_blank"><img src="img/instagram/ins-1.jpg" alt=""></a>
                    <a href="http://instagram.com/59mango_adam_solton" target="_blank"><img src="img/instagram/ins-2.jpg" alt=""></a>
                    <a href="http://instagram.com/59mango_adam_solton" target="_blank"><img src="img/instagram/ins-3.jpg" alt=""></a>
                    <a href="http://instagram.com/59mango_adam_solton" target="_blank"><img src="img/instagram/ins-4.jpg" alt=""></a>
                    <a href="http://instagram.com/59mango_adam_solton" target="_blank"><img src="img/instagram/ins-5.jpg" alt=""></a>
                    <a href="http://instagram.com/59mango_adam_solton" target="_blank"><img src="img/instagram/ins-6.jpg" alt=""></a>
                </div>
            </div>
        </section>
        <!--================End Instagram Area =================-->

   <!--================Footer Area =================-->
        <footer class="footer_area">
            <div class="container">
                <div class="row footer_inner">
                    <div class="col-lg-5 col-sm-6">
                        <aside class="f_widget ab_widget">
                            <div class="f_title">
                                <h3><font color="#ccd9ff">Prints are Available!!</font></h3>
                            </div>
                            <p>Prints are by a professional photo lab, and are available in multiple size and mounting options.  Prints can
                             be mounted to thin plastic (3mm styrene) which is suitable for framing but helps preserve the print,
                             or alternatively, they can be mounted as a standout, which are ready to hang right out of the box.  A standout 
                             has the print mounted on lightweight foam board, finished with edging for a professional quality, and 
                             mounting holes pre-cut in the backing for hanging.  Other mounting options include wood, metal, albums, 
                             and many more.  Please see the <a href="prints.html">Prints</a> page for more details.</p>
                        </aside>
                    </div>
                    <div class="col-lg-5 col-sm-6">
                        <aside class="f_widget news_widget">
                            <div class="f_title">
                                <h3><font color="#ccd9ff">Newsletter</font></h3>
                            </div>
                            <p>Coming Soon!</p>
                            <!-- <p>Your information will NEVER be sold or shared.  I will also not flood your inbox with nonsense.  But 
                            if you would like to be notified of events or happenings with Adam Solton Photography, please sign up below.</p>  -->   
                            <div id="mc_embed_signup">
                                <form target="_blank" action="https://spondonit.us12.list-manage.com/subscribe/post?u=1462626880ade1ac87bd9c93a&amp;id=92a4423d01" method="get" class="subscribe_form relative">
                                    <div class="input-group d-flex flex-row">
                                     <!--   <input name="EMAIL" placeholder="Enter email address" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Email Address '" required="" type="email">
                                        <button class="btn sub-btn"><span class="lnr lnr-arrow-right"></span></button>   -->   
                                    </div>              
                                    <div class="mt-10 info"></div>
                                    </form>
                            </div>
                        </aside>
                    </div>
                    <div class="col-lg-2">
                        <aside class="f_widget social_widget">
                            <div class="f_title">
                                <h3><font color="#ccd9ff">Social Media</font></h3>
                            </div>
                            <p>Follow me on Instagram and Facebook, and be the first to see new captures.</p>
                            <ul class="list">
                                <li><a href="http://instagram.com/59mango_adam_solton" target="_blank"><i class="fa fa-instagram"></i></a></li>
                                <li><a href="https://www.facebook.com/asolton" target="_blank"><i class="fa fa-facebook"></i></a></li>
                                </ul>
                        </aside>
                    </div>
                </div>
            </div>
            <p><center><font color="a9a9a9">All images and page content &copy; Copyright Adam Solton Photography<Br> <a href="https://www.soltonphoto.com">soltonphoto.com</a> &copy;<script>document.write(new Date().getFullYear());</script> All rights reserved</center></font></p>

<font color="black"><p><!-- Link back to Colorlib can't be removed. Template is licensed under CC BY 3.0. -->
 | This template is made with <i class="fa fa-heart-o" aria-hidden="true"></i> by <a href="https://colorlib.com" target="_blank" style="color: rgb(0,0,0)"><font color="000000">Colorlib</font></a>
<!-- Link back to Colorlib can't be removed. Template is licensed under CC BY 3.0. -->
</font></p>


        </footer>
        <!--================End Footer Area =================-->



        <!--================Contact Success and Error message Area =================-->
        <div id="success" class="modal modal-message fade" role="dialog">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <i class="fa fa-close"></i>
                        </button>
                        <h2>Thank you</h2>
                        <p>Your message is successfully sent...</p>
                    </div>
                </div>
            </div>
        </div>

        <!-- Modals error -->

        <div id="error" class="modal modal-message fade" role="dialog">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <i class="fa fa-close"></i>
                        </button>
                        <h2>Sorry !</h2>
                        <p> Something went wrong </p>
                    </div>
                </div>
            </div>
        </div>
        <!--================End Contact Success and Error message Area =================-->




        <!-- Optional JavaScript -->
        <!-- jQuery first, then Popper.js, then Bootstrap JS -->
        <script src="js/jquery-3.3.1.min.js"></script>
        <script src="js/popper.js"></script>
        <script src="js/bootstrap.min.js"></script>
        <script src="js/stellar.js"></script>
        <script src="vendors/lightbox/simpleLightbox.min.js"></script>
        <script src="vendors/nice-select/js/jquery.nice-select.min.js"></script>
        <script src="vendors/isotope/imagesloaded.pkgd.min.js"></script>
        <script src="vendors/isotope/isotope.pkgd.min.js"></script>
        <script src="vendors/popup/jquery.magnific-popup.min.js"></script>
        <script src="vendors/owl-carousel/owl.carousel.min.js"></script>
        <script src="js/jquery.ajaxchimp.min.js"></script>
        <script src="js/mail-script.js"></script>
        <script src="vendors/counter-up/jquery.waypoints.min.js"></script>
        <script src="vendors/counter-up/jquery.counterup.js"></script>
        <!-- contact js -->
        <script src="js/jquery.form.js"></script>
        <script src="js/jquery.validate.min.js"></script>
        <script src="js/contact.js"></script>
        <!--gmaps Js-->
        <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCjCGmQ0Uq4exrzdcL6rvxywDDOvfAu6eE"></script>
        <script src="js/gmaps.min.js"></script>
        <script src="js/theme.js"></script>
    </body>
</html>

这里是完整的PHP代码:

<?php

//reCAPTCHA validation
//Checking For reCAPTCHA
$captcha;
if (isset($_POST['g-recaptcha-response'])) {
    $captcha = $_POST['g-recaptcha-response'];
}
// Checking For correct reCAPTCHA
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=my _secret_key_is_here_&response=" . $captcha);
if (!$captcha || $response.success == false) {
    echo "Your CAPTCHA response was wrong.";
    exit ;
}


    $to = "my_email_is_here";
    $from = $_REQUEST['email'];
    $name = $_REQUEST['name'];
    $csubject = $_REQUEST['subject'];
    $number = $_REQUEST['number'];
    $cmessage = $_REQUEST['message'];

    $headers = "From: $from";
    $headers = "From: " . $from . "\r\n";
    $headers .= "Reply-To: ". $from . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

    $subject = "You have a message from SoltonPhoto.com.";

    $logo = '../img/logo.png';
    $link = '#';

    $body = "<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><title>Express Mail</title></head><body>";
    $body .= "<table style='width: 100%;'>";
    $body .= "<thead style='text-align: center;'><tr><td style='border:none;' colspan='2'>";
    $body .= "<a href='{$link}'><img src='{$logo}' alt=''></a><br><br>";
    $body .= "</td></tr></thead><tbody><tr>";
    $body .= "<td style='border:none;'><strong>Name:</strong> {$name}</td>";
    $body .= "<td style='border:none;'><strong>Email:</strong> {$from}</td>";
    $body .= "</tr>";
    $body .= "<tr><td style='border:none;'><strong>Subject:</strong> {$csubject}</td></tr>";
    $body .= "<tr><td></td></tr>";
    $body .= "<tr><td colspan='2' style='border:none;'>{$cmessage}</td></tr>";
    $body .= "</tbody></table>";
    $body .= "</body></html>";

    $send = mail($to, $subject, $body, $headers);

?>
recaptcha
1个回答
0
投票

还有另一个很好的例子,为什么开发时不应该关闭任何错误:

Warning: Use of undefined constant success - assumed 'success' (this will throw an Error in a future version of PHP) stackoverflow.php on line 5

基本上是以下几行:

var_dump($response.success);

因为$response只是string,而不是您可以访问的字段的对象。

对recaptcha的HTTP调用返回一个json,首先需要使用json_decode函数对其进行解析:

json_decode

然后您可以通过关联数组访问$response = json_decode($response,true); 值:

success

将导致:

$response['success']

这也已经优化,因为在未设置验证码的情况下它不会触发HTTP请求。

此外,在开发时,您应该真正使用var_dump并在自己的代码中打印内容。本可以节省您很多时间。

© www.soinside.com 2019 - 2024. All rights reserved.