Всем привет. Несколько озадачен был установкой капчи от гугла, и в связи с этим возник вопрос: - как интегрировать эту reCAPTCHA от https://www.google.com/recaptcha/intro/index.html к себе на сайт? Есть форма обратной связи, в нужном месте включен был предлагаемый код гугла, но почему-то не пашет он... Т.е. при нажатии кнопки отправить - всё замечательно отправляется, но без проверки капчи. Может найдутся люди способные помочь в этом вопросе? Вот кусочек кода в форме: Код (Text): <td colspan="5" align="center"> <div class="g-recaptcha" data-sitekey="здесь указан ключ"></div> </td> </tr> <tr> <td colspan="3" align="right"><input type="submit" onclick="yaCounter13454020.reachGoal('FBQuestions'); return true;" value="Отправить" /></td> </tr> И ещё. Весьма интересно было бы сделать так, чтобы после отправки данных с формы и проверки капчи сообщение об успешности или не удачи отправки данных выводились бы на этой же странице, т.е. на странице этой же формы.
другой файл Код (Text): <?php define('URL_FEEDBACK', 'http://www.1.ru/feedback.php'); define('URL_LETSGO', 'http://www.1.ru/letsgo.php'); $name1=$name2=$name3=$email=$tel=$pravo=$body=''; /* Здесь проверяется существование переменных */ if (isset($_POST['name1'])) {$name1 = $_POST['name1'];} if (isset($_POST['name2'])) {$name2 = $_POST['name2'];} if (isset($_POST['name3'])) {$name3 = $_POST['name3'];} if (isset($_POST['email'])) {$email = $_POST['email'];} if (isset($_POST['tel'])) {$tel = $_POST['tel'];} if (isset($_POST['pravo'])) {$pravo = $_POST['pravo'];} if (isset($_POST['body'])) {$body = $_POST['body'];} $err = array(); // ошибки /* А эта функция занимается обработкой введённых данных в форме перед отправкой письма на указанный вами email */ if (empty($name1)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана фамилия!</b></span></p>"; } if (empty($name2)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано имя!</b></span></p>"; } if (empty($name3)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано отчество!</b></span></p>"; } if (empty($email)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан e-mail!</b></span></p>"; } if (empty($tel)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан телефон!</b></span></p>"; } if (empty($pravo)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана тема вопроса!</b></span></p>"; } if (empty($body)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Вы забыли написать комментарий?</b></span></p>"; } /* если НЕТ ошибок */ if (sizeof($err)==0) { /* Сюда впишите свою эл. почту */ $address = "questions@www.1.ru"; /* А здесь прописывается текст сообщения, \n - перенос строки */ $mes = "Фамилия: $name1 \nИмя: $name2 \nОтчество: $name3 \nE-mail: $email \nТелефон для связи: $tel \nВопрос о: $pravo \nКомментарий: $body"; /* А эта функция как раз занимается отправкой письма на указанный вами email */ $send = mail ($address,$pravo,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email"); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <?php if (sizeof($err)==0) { // no error ?> <meta http-equiv="refresh" content="10; url=<?php echo URL_LETSGO;?>"> <?php } else { // error ?> <meta http-equiv="refresh" content="10; url=<?php echo URL_FEEDBACK;?>"> <?php } ?> <title>Feedbackform</title> </head> <body> <div align="center"> <table border="0" cellspacing="0" cellpadding="20" width="650"> <tr> <td align="center"> <p style="color: blue; font-size: 20px;"> <?php if (sizeof($err)>0) { // errors echo join('<br />', $err); echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; } else { // no errors /* А эта функция занимается выводом сообщения на экран после верного заполнения формы обратной связи и ошибки отправки сообщения */ if ($send == 'true') { echo $a = "<a href='http://www.1.ru/letsgo'><img src='http://xxx.ru/feedbackmess/image/xxx(500x221).png' border=0 title='Перейти'></a><br>\n<br>\nВаша заявка принята.<br>\nСообщение успешно отправлено.<br><br>\nВы будете перенаправлены на форму оплаты в течении 10 секунд.<br>\n<br>\nЕсли не хотите ждать, а хотите перейти к оплате сразу,<br>\n <a href='http://www.1.ru/letsgo>нажмите на эту ссылку</a>.<br>\n <img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'>"; } else { echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости что-то и где-то пошло не совсем так как надо.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; } } ?> </p> </td> </tr> </table> </div> </body> </html>
https://developers.google.com/recaptcha/docs/verify В POST будет ключ g-recaptcha-response из него и бери информацию для проверки Даже примеры есть https://github.com/google/ReCAPTCHA/tree/master/php
Скачай файл recaptchalib.php тут https://github.com/google/ReCAPTCHA/tree/master/php Заполни, siteKey и secret выдаёт гугл для твоего сайта require_once "recaptchalib.php"; // Register API keys at https://www.google.com/recaptcha/admin $siteKey = ""; $secret = ""; Встроить в форму Заполни data-sitekey Код (PHP): <div class="g-recaptcha" data-sitekey="ТУТ_siteKey"></div> <script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=ru"> </script> Может будет работать Код (PHP): <?php define('URL_FEEDBACK', 'http://www.1.ru/feedback.php'); define('URL_LETSGO', 'http://www.1.ru/letsgo.php'); // ******************************** require_once "recaptchalib.php"; // Register API keys at https://www.google.com/recaptcha/admin $siteKey = ""; $secret = ""; // reCAPTCHA supported 40+ languages listed here: https://developers.google.com/recaptcha/docs/language $lang = "en"; // The response from reCAPTCHA $resp = null; // The error code from reCAPTCHA, if any $error = null; $reCaptcha = new ReCaptcha($secret); // Was there a reCAPTCHA response? if ($_POST["g-recaptcha-response"]) { $resp = $reCaptcha->verifyResponse( $_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"] ); } // ******************************** $name1=$name2=$name3=$email=$tel=$pravo=$body=''; /* Здесь проверяется существование переменных */ if (isset($_POST['name1'])) {$name1 = $_POST['name1'];} if (isset($_POST['name2'])) {$name2 = $_POST['name2'];} if (isset($_POST['name3'])) {$name3 = $_POST['name3'];} if (isset($_POST['email'])) {$email = $_POST['email'];} if (isset($_POST['tel'])) {$tel = $_POST['tel'];} if (isset($_POST['pravo'])) {$pravo = $_POST['pravo'];} if (isset($_POST['body'])) {$body = $_POST['body'];} $err = array(); // ошибки /* А эта функция занимается обработкой введённых данных в форме перед отправкой письма на указанный вами email */ if (empty($name1)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана фамилия!</b></span></p>"; } if (empty($name2)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано имя!</b></span></p>"; } if (empty($name3)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано отчество!</b></span></p>"; } if (empty($email)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан e-mail!</b></span></p>"; } if (empty($tel)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан телефон!</b></span></p>"; } if (empty($pravo)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана тема вопроса!</b></span></p>"; } if (empty($body)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Вы забыли написать комментарий?</b></span></p>"; } if ($resp != null && $resp->success) { } else { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>ошибка каптчи</b></span></p>"; } /* если НЕТ ошибок */ if (sizeof($err)==0) { /* Сюда впишите свою эл. почту */ $address = "questions@www.1.ru"; /* А здесь прописывается текст сообщения, \n - перенос строки */ $mes = "Фамилия: $name1 \nИмя: $name2 \nОтчество: $name3 \nE-mail: $email \nТелефон для связи: $tel \nВопрос о: $pravo \nКомментарий: $body"; /* А эта функция как раз занимается отправкой письма на указанный вами email */ $send = mail ($address,$pravo,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email"); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <?php if (sizeof($err)==0) { // no error ?> <meta http-equiv="refresh" content="10; url=<?php echo URL_LETSGO;?>"> <?php } else { // error ?> <meta http-equiv="refresh" content="10; url=<?php echo URL_FEEDBACK;?>"> <?php } ?> <title>Feedbackform</title> </head> <body> <div align="center"> <table border="0" cellspacing="0" cellpadding="20" width="650"> <tr> <td align="center"> <p style="color: blue; font-size: 20px;"> <?php if (sizeof($err)>0) { // errors echo join('<br />', $err); echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; } else { // no errors /* А эта функция занимается выводом сообщения на экран после верного заполнения формы обратной связи и ошибки отправки сообщения */ if ($send == 'true') { echo $a = "<a href='http://www.1.ru/letsgo'><img src='http://xxx.ru/feedbackmess/image/xxx(500x221).png' border=0 title='Перейти'></a><br>\n<br>\nВаша заявка принята.<br>\nСообщение успешно отправлено.<br><br>\nВы будете перенаправлены на форму оплаты в течении 10 секунд.<br>\n<br>\nЕсли не хотите ждать, а хотите перейти к оплате сразу,<br>\n <a href='http://www.1.ru/letsgo>нажмите на эту ссылку</a>.<br>\n <img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'>"; } else { echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости что-то и где-то пошло не совсем так как надо.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; } } ?> </p> </td> </tr> </table> </div> </body> </html>