尝试使用Formspree

时间:2015-12-23 01:54:49

标签: php jquery html forms

我按照在线教程展示了如何在HTML中将reCAPTCHA添加到表单中,同时还在PHP中使用if / then脚本,如果验证码失败则显示消息。我的一切工作都在大部分时间,但我试图弄清楚如何通过Formspree的重定向提交联系表单。当用户验证验证码并单击提交按钮时,它们将被重定向到测试页面,但我无法弄清楚如何发送表单数据。我想象它必须在PHP中完成,使用变量引用表单的字段,但我自己在PHP上并不太好。

这是我的HTML表单:

<div id="form">
    <form method="post" action="http://formspree.io/MY@EMAIL.COM">
        <?php if(isset($_GET['CaptchaFail'])){ ?>
        <div class="row 50%">
            Captcha failed. Please try again.
        </div>
        <?php } ?>
        <div class="row 50%">
            <div class="6u 12u(mobile)"><input type="text" name="name" placeholder="Name" /></div>
            <div class="6u 12u(mobile)"><input type="email" name="email" placeholder="Email" /></div>
        </div>
        <div class="row 50%">
            <div class="12u"><textarea name="message" placeholder="Message" rows="6"></textarea></div>
        </div>
        <div class="row">
            <div class="12u">
                <ul class="actions">
                    <div class="g-recaptcha" data-sitekey="--- my Google reCAPTCHA sitekey ---"></div>
                    <li">
                    <input name="ContactButton" type="submit" value="Send Message" id="ContactButton"></li>
                </ul>
            </div>
        </div>
    </form>
</div>

这就是PHP:

<?php
    if(isset($_POST['ContactButton'])){
        $url = 'https://www.google.com/recaptcha/api/siteverify';
        $privatekey = "--- my Google reCAPTCHA secret key ---";

        $response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
        $data = json_decode($response);

        if(isset($data->success) AND $data->success==true){
            header('Location: submit.html');
        }else{
            header('Location: index.php?CaptchaFail=True#form');
        }
    }
?>

我知道该操作需要与重定向到&#39; submit.html&#39;相同的部分。发生了,但我不知道在那里添加什么会提交表格。我必须删除表单操作才能重定向到&#39; submit.html&#39;发挥作用。否则,无论是否检查验证码,提交按钮都会通过Formspree提交表单。

感谢您的帮助!

0 个答案:

没有答案