0 получить два ключа на https://www.google.com/recaptcha/
1 index.html
<form method="post" id="feedback"> <label> <input type="text" name="name" placeholder="Имя" value="" required> </label> <label> <input type="email" name="email" placeholder="Email" value="" required> </label> <label> <input type="text" name="phone" placeholder="Телефон" value=""> </label> <label> <textarea name="msg" placeholder="Сообщение" required></textarea> </label> <div class="g-recaptcha" data-sitekey="здесь ваш не секретный ключ"></div> <input type="hidden" name="form_name" value="Форма обратной связи"> <input type="submit" name="submit" value="Отправить"> </form> <script> $(document).ready(function () { $('#feedback').submit(function (event) { var $form = $(this); $.ajax({ type: $form.attr('method'), url: '/send.php', data: $form.serialize(), cache: false, success: function (data) { if (data === 'sent') { alert('Спасибо, Ваша заявка отправлена!'); window.location.href = '/'; } else if (data === 'captcha error') { alert('Нажмите на "Я не робот"'); } else { alert('Ошибка, обратитесь к администрации сайта!') } }, error: function (xhr, ajaxOptions, thrownError) { console.log('error...', xhr); } }); return false; }); }); </script>
2 send.php
<? $url = 'https://www.google.com/recaptcha/api/siteverify'; $recaptcha = $_POST['g-recaptcha-response']; $secret = 'здесь ваш секретный код с https://www.google.com/recaptcha/'; $ip = $_SERVER['REMOTE_ADDR']; $url_data = $url . '?secret=' . $secret . '&response=' . $recaptcha . '&remoteip=' . $ip; $curl = curl_init(); curl_setopt( $curl, CURLOPT_URL, $url_data ); curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 ); $res = curl_exec( $curl ); curl_close( $curl ); $res = json_decode( $res ); if ( $res->success == '1' ) { $email = 'здесь email для уведомлений'; $subject = $_SERVER['SERVER_NAME'] . ' - ' . htmlspecialchars( $_POST['form_name'] ); $message = 'Имя: ' . htmlspecialchars( $_POST['name'] ) . '<br>'; $message .= 'Email: ' . htmlspecialchars( $_POST['email'] ) . '<br>'; $message .= ! empty( htmlspecialchars( $_POST['phone'] ) ) ? 'Телефон: ' . htmlspecialchars( $_POST['phone'] ) . '<br>' : ''; $message .= 'Сообщение: ' . htmlspecialchars( $_POST['msg'] ) . '<br>'; $headers = "From: <noreply@" . $_SERVER['SERVER_NAME'] . ">\nContent-Type: text/html; charset=\"utf-8\""; if ( mail( $email, $subject, $message, $headers ) ) { echo 'sent'; } else { echo 'not sent'; } } else { echo 'captcha error'; }