Php 如何让reCaptcha使用ajax.load
我希望在jquery'.load'ajax函数中使用reCaptcha,以便将信息传递到我的PHP联系人表单。我已经确定了如何使用此方法发送诸如名称值、主题值等内容,但是,我不确定如何传递reCaptcha信息 目前,当我提交表单时,我收到一个PHP错误,提示“未定义索引:g-recaptcha-response”。我相信这与Ajax方面有关 在这方面的任何帮助都将是惊人的,因为我完全不知所措 jQuery:Php 如何让reCaptcha使用ajax.load,php,jquery,ajax,recaptcha,Php,Jquery,Ajax,Recaptcha,我希望在jquery'.load'ajax函数中使用reCaptcha,以便将信息传递到我的PHP联系人表单。我已经确定了如何使用此方法发送诸如名称值、主题值等内容,但是,我不确定如何传递reCaptcha信息 目前,当我提交表单时,我收到一个PHP错误,提示“未定义索引:g-recaptcha-response”。我相信这与Ajax方面有关 在这方面的任何帮助都将是惊人的,因为我完全不知所措 jQuery: $("#contactForm").submit(function(event) {
$("#contactForm").submit(function(event) {
event.preventDefault();
var name = $("#name").val();
var email = $("#email").val();
var subject = $("#subject").val();
var phone = $("#phone").val();
var company = $("#company").val();
var message = $("#message").val();
var submit = $("#submit").val();
$(".form-message").load("contactForm.php", {
name: name,
email: email,
subject: subject,
phone: phone,
company: company,
message: message,
submit: submit
});
PHP:
if(isset($\u POST['submit'])){
需要'dist/PHPMailer/phpmailerautoad.php';
$mail=新的PHPMailer;
$name=$_POST['name'];
$email=$_POST['email'];
$subject=$_POST['subject'];
$phone=$_POST['phone'];
$company=$_POST['company'];
$message=$_POST['message'];
$secretKey=“--KEY--”;
$responseKey=$_POST['g-recaptcha-response'];
$userIP=$\u服务器['REMOTE\u ADDR'];
$url=”https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$responseKey&remoteip=$userIP”;
$response=file\u get\u contents($url);
$mail->HOST='smtp.gmail.com';
$mail->Port=587;
$mail->SMTPAuth=true;
$mail->SMTPSecure='tls';
$mail->Username='--Username--';
$mail->Password='--Password--';
$mail->setFrom('--email--','Contact Form Submission');
$mail->addAddress('--email--');
$mail->addReplyTo($email,$name);
$mail->isHTML(true);
$mail->Subject=$Subject;
$mail->Body='Name:'.$Name.
Email:'.$Email.
Subject:'.$Subject.
Phone:'.$Phone.
Company:'.$Company.
Message:'.$Message.';
HTML:
您可以使用该方法从客户端获取验证码的值,然后使用ajax/jquery发送该值
<script type="text/javascript">
("#contactForm").submit(function(event) {
event.preventDefault();
var name = $("#name").val();
var email = $("#email").val();
var subject = $("#subject").val();
var phone = $("#phone").val();
var company = $("#company").val();
var message = $("#message").val();
var submit = $("#submit").val();
var captcha = grecaptcha.getResponse(); //get captcha
$(".form-message").load("contactForm.php", {
name: name,
email: email,
subject: subject,
phone: phone,
company: company,
message: message,
submit: submit,
captcha : captcha
});
</script>
(“#联系方式”)。提交(功能(事件){
event.preventDefault();
var name=$(“#name”).val();
var email=$(“#email”).val();
var subject=$(“#subject”).val();
var phone=$(“#phone”).val();
var company=$(“#company”).val();
var message=$(“#message”).val();
var submit=$(“#submit”).val();
var captcha=grecaptcha.getResponse();//获取验证码
$(“.form message”).load(“contactForm.php”{
姓名:姓名,,
电邮:电邮,,
主题:主题,,
电话:电话,,
公司:公司,,
讯息:讯息,,
提交:提交,
验证码:验证码
});
然后是你的php
<?php
if(isset($_POST['submit'])) {
require 'dist/PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$phone = $_POST['phone'];
$company = $_POST['company'];
$message = $_POST['message'];
$secretKey = "--KEY--";
$responseKey = $_POST['captcha']; //captcha
$userIP = $_SERVER['REMOTE_ADDR'];
$url = "https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$responseKey&remoteip=$userIP";
$response = file_get_contents($url);
$mail->HOST = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Username = '--username--';
$mail->Password = '--password--';
$mail->setFrom('--email--', 'Contact Form Submission');
$mail->addAddress('--email--');
$mail->addReplyTo($email, $name);
$mail->isHTML(true);
$mail->Subject= $subject;
$mail->Body='<p>Name: '.$name. '<br>Email: '.$email.'<br>Subject: '.$subject.'<br>Phone: '.$phone.'<br>Company: '.$company.'<br>Message: '.$message.'</p>';
在jquery上:var g-recaptcha-response=grecaptcha.getResponse();
然后像其他字段一样发送g-recaptcha-response
<script type="text/javascript">
("#contactForm").submit(function(event) {
event.preventDefault();
var name = $("#name").val();
var email = $("#email").val();
var subject = $("#subject").val();
var phone = $("#phone").val();
var company = $("#company").val();
var message = $("#message").val();
var submit = $("#submit").val();
var captcha = grecaptcha.getResponse(); //get captcha
$(".form-message").load("contactForm.php", {
name: name,
email: email,
subject: subject,
phone: phone,
company: company,
message: message,
submit: submit,
captcha : captcha
});
</script>
<?php
if(isset($_POST['submit'])) {
require 'dist/PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$phone = $_POST['phone'];
$company = $_POST['company'];
$message = $_POST['message'];
$secretKey = "--KEY--";
$responseKey = $_POST['captcha']; //captcha
$userIP = $_SERVER['REMOTE_ADDR'];
$url = "https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$responseKey&remoteip=$userIP";
$response = file_get_contents($url);
$mail->HOST = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Username = '--username--';
$mail->Password = '--password--';
$mail->setFrom('--email--', 'Contact Form Submission');
$mail->addAddress('--email--');
$mail->addReplyTo($email, $name);
$mail->isHTML(true);
$mail->Subject= $subject;
$mail->Body='<p>Name: '.$name. '<br>Email: '.$email.'<br>Subject: '.$subject.'<br>Phone: '.$phone.'<br>Company: '.$company.'<br>Message: '.$message.'</p>';