用reCaptcha联系表格 [英] Contact form with reCaptcha

查看:186
本文介绍了用reCaptcha联系表格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道这可能之前已经提交(对不起)
我有基本的形式,这些是细节id喜欢发送,但我不能让reCaptcha与它一起工作。我一整天都在搜索,但是当我尝试其他人的代码(修改为适合我的)时,它似乎无法工作。



我想:名称,电子邮件,通讯(是/否)和recaptcha被发送/工作。

有人可以给我一个想法,我可能会出错吗?我可能需要添加什么?



预先感谢!

这里是我的Form(html) p>

 < form method =POSTaction =Form_Activation.php> 
< div class =form-group>
< label for =name>名称:< / label>
< input type =textclass =form-controlid =namename =nameplaceholder =Full Namevalue =required />
< / div>
< div class =form-group>
< label for =email>电子邮件:< / label>
< input type =emailclass =form-controlid =emailname =emailvalue =placeholder =you@example.comrequired />
< / div>
< div class =form-group>
< label for =number>编号:< / label>
< input class =form-controlname =numberid =numbervalue =placeholder =Contact Numberrequired />
< / div>
< div class =form-group>
< label for =message>消息:< / label>
< textarea class =form-controlname =messageid =messageplaceholder =Enter Message ..required>< / textarea>
< / div>
< div class =form-group>
< input type =checkbox/> < b取代;订阅电子报< / b>
< / div>
< div class =g-recaptchadata-sitekey =6Le2SBQTAAAAADIOrUEPpcEVvR_c0vN9GzQpLg05>< / div>
< button type =submitclass =btn btn-default sendbutton>发送< / button>
< / form>

这是我的php(基本)

 <?php 
$ name = $ _POST ['name'];
$ email = $ _POST ['email'];
$ number = $ _POST ['number'];
$ message = $ _POST ['message'];

// $ password = $ _POST ['password'];

// $ keyy = $ _SERVER ['UNIQUE_ID'];


$ msg =名称:$ name \r\\\
\r\\\
;

$ msg。=电子邮件:$ email \r\\\
\r\\\
;

$ msg。=Number:$ number\r\\\
\r\\\
;

$ msg。=消息:$ message \r\\\
\r\\\
;

$收件人=info@islandwebdesign.co.uk;
$ subject =新网站请求;
$ mailheaders =From:$ email;
// $ mailheaders。=回复:$ email;
mail($ recipient,$ subject,$ msg,$ mailheaders);
header(位置:contactus.php?msg = 1);
?>


解决方案

首先确保您已包含必要的JavaScript资源来正确呈现reCAPTCHA小部件,如下所示:

 < html> 
< head>
< title> reCAPTCHA演示:简单网页< /标题>
< script src =https://www.google.com/recaptcha/api.jsasync defer>< / script>
< / head>
< body>
< div class =g-recaptchadata-sitekey =your_site_key>< / div>
< br />
< input type =submitvalue =提交>
< / form>
< / body>
< / html>

以下是参考资料:

>

现在转到用户的回复。用户的验证码挑战的响应可以通过三种方式获取。它可以是,



现在介绍您的用户的回复。用户的验证码挑战的响应可以通过三种方式获取。它可以是


  • g-recaptcha-response - 提交表单中的POST参数

  • grecaptcha.getResponse(widget_id) - 将在用户完成验证码后提供响应。
  • 回调函数的字符串参数传递给render方法的config对象中指定的函数。



以下是参考:



出于您的目的,请使用 g-recaptcha-response 来获取用户的回复。所以你的代码应该是这样的:

HTML

 < form method =POSTaction =Form_Activation.php> 
< div class =form-group>
< label for =name>名称:< / label>
< input type =textclass =form-controlid =namename =nameplaceholder =Full Namevalue =required />
< / div>
< div class =form-group>
< label for =email>电子邮件:< / label>
< input type =emailclass =form-controlid =emailname =emailvalue =placeholder =you@example.comrequired />
< / div>
< div class =form-group>
< label for =number>编号:< / label>
< input class =form-controlname =numberid =numbervalue =placeholder =Contact Numberrequired />
< / div>
< div class =form-group>
< label for =message>消息:< / label>
< textarea class =form-controlname =messageid =messageplaceholder =Enter Message ..required>< / textarea>
< / div>
< div class =form-group>
< input type =checkbox/> < b取代;订阅电子报< / b>
< / div>
< div class =g-recaptchadata-sitekey =6Le2SBQTAAAAADIOrUEPpcEVvR_c0vN9GzQpLg05>< / div>
< button type =submitname =submitclass =btn btn-default sendbutton>发送< / button>
< / form>

在您的提交按钮中添加名称属性。

Form_Activation.php

  <?php 

if(isset($ _ POST ['submit'])){

//您的站点密钥
$ secret ='XXXXXXX_Secret- key_XXXXXXX;

if(isset($ _ POST ['g-recaptcha-response'])&&!empty($ _ POST ['g-recaptcha-response'])){
/ /获取经过验证的回复数据
$ param =https://www.google.com/recaptcha/api/siteverify?secret=\".$secret.\"&response=\".$_POST['g-recaptcha -响应'];
$ verifyResponse = file_get_contents($ param);
$ responseData = json_decode($ verifyResponse);

if($ responseData-> success){
//成功

$ name = $ _POST ['name'];
$ email = $ _POST ['email'];
$ number = $ _POST ['number'];
$ message = $ _POST ['message'];

//等等

} else {
//故障
}

}

}

?>

不要忘记将您的密钥添加到 $ secret 变量。


I know this may have been submitted before (sorry) I have basic form, these are the details id like to be sent, however i cannot get the reCaptcha to work with it. I have googled all day, but when i try other peoples code (amending to fit mine) it doesnt seem to work.

I would like: Name, Email, Number, newsletter (yes/no) and recaptcha to be sent/work.

Can someone please give me an idea where i may be going wrong? what i may need to add?

Thanks in advance!

Here is my Form (html)

<form method="POST" action="Form_Activation.php">
   <div class="form-group">
        <label for="name">Name:</label>
            <input type="text" class="form-control" id="name" name="name" placeholder="Full Name"       value="" required/>
        </div>
        <div class="form-group">
            <label for="email">Email:</label>
            <input type="email" class="form-control" id="email" name="email" value=""       placeholder="you@example.com" required/>
        </div>
        <div class="form-group">
            <label for="number">Number:</label>
            <input class="form-control" name="number" id="number" value="" placeholder="Contact         Number" required/>
        </div>
        <div class="form-group">
            <label for="message">Message:</label>
            <textarea class="form-control" name="message" id="message" placeholder="Enter       Message.." required></textarea>
        </div>
        <div class="form-group">
            <input type="checkbox"/> <b> Subscribe to Newsletter</b>
        </div>
        <div class="g-recaptcha" data-sitekey="6Le2SBQTAAAAADIOrUEPpcEVvR_c0vN9GzQpLg05"></div>
        <button type="submit" class="btn btn-default sendbutton">SEND</button>
        </form>

Here is my php (basic)

    <?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $number = $_POST['number'];
    $message = $_POST['message'];

    //$password = $_POST['password'];

    //$keyy = $_SERVER['UNIQUE_ID'];


    $msg = "Name: $name\r\n \r\n"; 

    $msg .= "Email: $email\r\n \r\n";

    $msg .= "Number: $number\r\n \r\n"; 

    $msg .= "Message: $message\r\n \r\n"; 

    $recipient = "info@islandwebdesign.co.uk";
    $subject = "New Website Request";
    $mailheaders = "From:$email";
    //$mailheaders .= "Reply-To:$email";
    mail($recipient,$subject,$msg,$mailheaders);
    header("Location: contactus.php?msg=1");
    ?>

解决方案

First of all make sure that you've included the necessary JavaScript resource to render reCAPTCHA widget properly, like this:

<html>
  <head>
    <title>reCAPTCHA demo: Simple page</title>
     <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  </head>
  <body>
    <form action="?" method="POST">
      <div class="g-recaptcha" data-sitekey="your_site_key"></div>
      <br/>
      <input type="submit" value="Submit">
    </form>
  </body>
</html>

Here's the reference:

Now comes to your user's response. The response from the user's captcha challenge can be fetched in three ways. It can be as,

Now comes to your user's response. The response from the user's captcha challenge can be fetched in three ways. It can be as,

  • g-recaptcha-response - a POST parameter in the submitted form
  • grecaptcha.getResponse(widget_id) - will provide the response after the user completes the captcha.
  • A string argument to the callback function specified in the config object passed to the render method.

Here's the reference:

For your purpose use g-recaptcha-response to get the user's response. So your code should be like this:

HTML

<form method="POST" action="Form_Activation.php">
   <div class="form-group">
    <label for="name">Name:</label>
        <input type="text" class="form-control" id="name" name="name" placeholder="Full Name" value="" required/>
    </div>
    <div class="form-group">
        <label for="email">Email:</label>
        <input type="email" class="form-control" id="email" name="email" value="" placeholder="you@example.com" required/>
    </div>
    <div class="form-group">
        <label for="number">Number:</label>
        <input class="form-control" name="number" id="number" value="" placeholder="Contact Number" required/>
    </div>
    <div class="form-group">
        <label for="message">Message:</label>
        <textarea class="form-control" name="message" id="message" placeholder="Enter Message.." required></textarea>
    </div>
    <div class="form-group">
        <input type="checkbox"/> <b> Subscribe to Newsletter</b>
    </div>
    <div class="g-recaptcha" data-sitekey="6Le2SBQTAAAAADIOrUEPpcEVvR_c0vN9GzQpLg05"></div>
    <button type="submit" name="submit" class="btn btn-default sendbutton">SEND</button>
</form>

Add a name attribute in your submit button.

Form_Activation.php

<?php

    if(isset($_POST['submit'])){

        //your site secret key
        $secret = 'XXXXXXX_Secret-key_XXXXXXX';

        if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])){
            //get verified response data
            $param = "https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$_POST['g-recaptcha-response'];
            $verifyResponse = file_get_contents($param);
            $responseData = json_decode($verifyResponse);

            if($responseData->success){
                // success

                $name = $_POST['name'];
                $email = $_POST['email'];
                $number = $_POST['number'];
                $message = $_POST['message'];

                // so on

            }else{
                // failure
            }

        }

    }

?>

Don't forget to add your secret key in $secret variable.

这篇关于用reCaptcha联系表格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆