reCAPTCHA работает на моем сервере, но не на клиентском сервере - PullRequest
0 голосов
/ 10 ноября 2018

Я внедрил рабочую форму защищенной обратной связи, которую я использовал на своем веб-сайте, на веб-сайте клиента. Все формы отлично работают при размещении на моем сервере рядом с моим собственным сайтом.

После тестирования я загрузил сайт клиента на его сервер. Однако после повторного тестирования он не работает. Все, что я сделал, это поменял ключи. Рекапча будет в порядке, и форма переходит на страницу отправки после отправки, как будто все работает правильно, но просто не отправляется на мой почтовый ящик.

Ниже приведен php-файл, который отлично работает на моем сайте и на его до миграции серверов.

<?php
    function post_captcha($user_response) {
        $fields_string = '';
        $fields = array(
            'secret' => 'key',
            'response' => $user_response
        );
        foreach($fields as $key=>$value)
        $fields_string .= $key . '=' . $value . '&';
        $fields_string = rtrim($fields_string, '&');

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
        curl_setopt($ch, CURLOPT_POST, count($fields));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);

        $result = curl_exec($ch);
        curl_close($ch);

        return json_decode($result, true);
    }

    // Call the function post_captcha
    $res = post_captcha($_POST['g-recaptcha-response']);

    if (!$res['success']) {
        // What happens when the CAPTCHA wasn't checked
        echo "<script>alert('Please make sure you check the security CAPTCHA box.');</script>";
    } else {
        // If CAPTCHA is successfully completed...

        $to="email";
        $name=$_REQUEST['name'];
        $email=$_REQUEST['email'];
        $phone=$_REQUEST['phone'];
        $area=$_REQUEST['area'];
        $option=$_REQUEST['option'];
        $message=$_REQUEST['message'];
        $MESSAGE_BODY = "Name: ".$name."\n";
        $MESSAGE_BODY .= "Email: ".$email."\n";
        $MESSAGE_BODY .= "Phone No: ".$phone."\n";
        $MESSAGE_BODY .= "Area: ".$area."\n";
        $MESSAGE_BODY .= "Subject enquiry: ".$option."\n";
        $MESSAGE_BODY .= "Message: ".$message.""; 

        $from="From: $name <$email>\r\nReturn-path: $email";
        $subject="Website Enquiry - $option";
        mail($to, $subject, $MESSAGE_BODY, $from);
        header('Location: submit.html');

    }
?>

Любые идеи будут высоко оценены!

...