繁体   English   中英

我在使用邮件设置的Google验证验证码中遇到错误

[英]I am getting error in my google validation captcha with mail settings

<!DOCTYPE html>
<html>
    <head>
        <title>
            Google Captcha Form With Send Mail
        </title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="css/bootstrap-theme.min.css">
        <link rel="stylesheet" type="text/css" href="css/style.css">
    </head>
    <body>
        <form id="contactform" action="action.php" method="post" class="form" role="form">
            <div class="form-group">
                <div class="row">
                    <div class="col-lg-3">
                        <label>Name:</label>
                    </div>
                    <div class="col-lg-5">
                        <input class="form-control required" id="vname" name="vname" placeholder="Your Name" type="text" required />
                    </div>
                </div>
            </div>
            <br>
            <div class="form-group">
                <div class="row">
                    <div class="col-lg-3">
                        <label>Email:</label>
                    </div>
                    <div class="col-lg-5">
                        <input class="form-control required" id="vemail" name="vemail" placeholder="Your Email" type="email" required />
                    </div>
                </div>
            </div>
            <br>
            <div class="form-group">
                <div class="row">
                    <div class="col-lg-3">
                        <label>Information:</label>
                    </div>
                    <div class="col-lg-5">
                        <textarea type="text" name="msg" id="msg" rows="5" cols="50" class="form-control"></textarea>
                    </div>
                </div>
            </div>
            <br>
            <div class="form-group">
                <div class="row">
                    <div class="col-lg-3">
                        <label>Verify Whether Human</label>
                    </div>
                    <div class="col-lg-5">
                        <div class="g-recaptcha" data-sitekey="PRIVATE" class="form-control">
                        </div>
                    </div>
                </div>
            </div>
            <br>
            <div class="form-group">
                <input type="submit" class="btn btn-success form-send" value="Send">
            </div>
        </form>
        <script src="js/jquery.min.js"></script>
        <script src="js/recaptcha.js"></script>
        <script src="js/bootstrap.min.js"></script>
    </body>
</html>

这是以下PHP

<?php
$captcha;
if (isset($_POST['g-recaptcha-response'])) { $captcha = $_POST['g-recaptcha-response']; }
// Check for correct reCAPTCHA
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret='PRIVATE'&response=" . $captcha . '&remoteip=' . $_SERVER['REMOTE_ADDR']);
if (!$captcha || $response.success == false) {
    echo "Your CAPTCHA response was wrong";
    exit ;
} else {
    // Check for Blank Fields..
    if ($_POST["vname"] == "" || $_POST["vemail"] == "" || $_POST["msg"] == "") {
        echo "Please fill all required fields";
    } else {
        // Check if the "Sender's Email" input field is filled out
        $email = $_POST['vemail'];
        // Sanitize E-mail Address
        $email = filter_var($email, FILTER_SANITIZE_EMAIL);
        // Validate E-mail Address
        $email = filter_var($email, FILTER_VALIDATE_EMAIL);
        if (!$email) {
            echo "Invalid Sender's Email";
        } else {
            $to = 'jinam@evoplus.in';
            $subject = 'New Form Entry';
            $message = "New message was submitted from <br /> " . "<strong>" . $_POST['vname'] . "</strong>" . "<br /><br />The message is:<br />" . "<strong>" . $_POST['msg'] . "</strong>";
            $headers = "From:" . $_POST['vname'] . "<" . $email . ">";
            $headers .= "MIME-Version: 1.0" . "\r\n";
            $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
            // Sender's Email
            // Message lines should not exceed 70 characters (PHP rule), so wrap it
            $message = wordwrap($message, 70, "\r\n");
            // Send Mail By PHP Mail Function
            if (mail($to, $subject, $message, $headers)) {
                echo "Your mail has been sent successfully!";
            } else {
                echo "Failed to send email, try again.";
                exit ;
            }
        }
    }
}
?>

注意:使用不确定的持续成功-在第6行的C:\\ xampp \\ htdocs \\ captchaform \\ action.php中假定为“成功”

我正在收到此错误帮助我,我使用json进行triend解码没有帮助,所以我在哪里错了

$ response具有JSON数据和您不能使用的PHP。 操作符来获取其密钥。 -转换为数组-访问键

因为你的回应是这样的

{ "success": true, "challenge_ts": "2017-02-09T12:18:22Z", "hostname": "localhost" }

做这样的事情:

$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret='PRIVATE'&response=" . $captcha . '&remoteip=' . $_SERVER['REMOTE_ADDR']);
// Convert json to array
$response = ($response) ? json_decode($response, true) : [];
// If array not empty then perform your logic
if ($res) {
   if (!$captcha || $response['success'] == false) {
    echo "Your CAPTCHA response was wrong";
    exit ; 
  } else { 
   // your code 
     .....
      ....
  }
}

这将起作用。

使用json_decode()

$response = json_decode($response);

然后像这样检查

if (!$captcha || $response->success == false) {

要深入了解更多内容: http : //php.net/manual/zh/function.json-decode.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM