Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Установка на сайт reCAPTCHA от Google

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

butgern

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, прошу вашей помощи.
 
есть простенький статический самописный сайт на html без cms и баз данных.
Есть необходимость добавить на него reCAPTCHA от Google для того, чтобы с формы отправки писем на сайте слали меньше спама.
 
С добавлением элементов в саму страницу html нет проблем, но вот со скриптом обработки, который вынесен в отдельный файл php есть сложности.
 
Изначально скрипт имел такой вид:
 

Код:
 
<?
$IP = $_SERVER['REMOTE_ADDR'];
$email = "mail@xxx.com";
$subject = "Privet";
if ($f_name <> "" and $f_mail <> "" and $f_message <> "") {
    
mail("$email", "$subject", "From: $f_name\nMail: $f_mail\nIP:\n$IP\nMessage:\n$f_message");
$msg = "<br><p align=center><font size=5>Вашe письмо отправлено!</font>";
} else {
$msg = "<br><p align=center><font size=5>Вашe письмо не отправлено!</font>";
}
?>
<p><? echo $msg; ?></p>
 

 
В нем все устраивает, кроме спама.
С целью заставить скрипт работать с reCAPTCHA от Google был добавлен такой кусок:
 

Код:
 
<?
if(isset($_POST['g-recaptcha-response']) && $_POST['g-recaptcha-response']) {
    $secret = '000000000000000000000000';
    $ip = $_SERVER['REMOTE_ADDR'];
    $response = $_POST['g-recaptcha-response'];
    $rsp = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$response&remoteip=$ip");
    $arr = json_decode($rsp, TRUE);
    if($arr['success']){
$IP = $_SERVER['REMOTE_ADDR'];
$email = "mail@xxx.com";
$subject = "Privet";
if ($f_name <> "" and $f_mail <> "" and $f_message <> "") {
    
mail("$email", "$subject", "From: $f_name\nMail: $f_mail\nIP:\n$IP\nMessage:\n$f_message");
$msg = "<br><p align=center><font size=5>Вашe письмо отправлено!</font>";
} else {
$msg = "<br><p align=center><font size=5>Вашe письмо не отправлено!</font>";
}
}
?>
<p><? echo $msg; ?></p>
 
 

 
Но скрипт не хочет работать. Проходишь капчу или нет при нажатии на кнопку отправки появляется пустая страница с сообщением, что сайт неправильно обрабатывает запрос.
 
В чем здесь проблема? Подскажите что нет так.
 
Заранее спасибо

Всего записей: 63 | Зарегистр. 19-05-2007 | Отправлено: 00:46 15-11-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не считая кучу других устаревших вещей,

Цитата:
if(isset($_POST['g-recaptcha-response']) && $_POST['g-recaptcha-response']) {  

первую фигурную скобку кто закрывать будет? посчитайте количество открывающих и закрывающих и поймете.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:59 15-11-2017
butgern

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
первую фигурную скобку кто закрывать будет? посчитайте количество открывающих и закрывающих и поймете.

 
Она закрыта вот этой:
}  
?>

Всего записей: 63 | Зарегистр. 19-05-2007 | Отправлено: 02:17 15-11-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
butgern

Цитата:
Она закрыта вот этой:  

посчитайте, ну елки палки..
еще спорите будете..
 
не верите мне, загоните код сюда https://phpcodechecker.com/ или в любой редактор с подсветкой синтаксиса.
или включите отображение php ошибок у себя, через ini_set('display_errors', '1'); хотя бы

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:33 15-11-2017 | Исправлено: Mavrikii, 02:36 15-11-2017
butgern

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
посчитайте, ну елки палки..  
еще спорите будете..  

 
Извините. Моя цель не поспорить, а добиться работы скрипта.
Пока не получается.
Буду благодарен за помощь.
Пробую такой вариант.
 

Код:
 
 
<?
$context = stream_context_create([
    'http' => [
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query([
            'secret' => 'xxxxxxxxxx'
            'response' => $_POST['g-recaptcha-response'],
            'remoteip' => $_SERVER['REMOTE_ADDR']
        ])
    ]
]);
 
$captcha = json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $context));
 
if (!$captcha) die();
 
if ($captcha->success) {
 
$IP = $_SERVER['REMOTE_ADDR'];
$email = "mail@xxx.com";
$subject = "Privet";
if ($f_name <> "" and $f_mail <> "" and $f_message <> "") {
    
mail("$email", "$subject", "From: $f_name\nMail: $f_mail\nIP:\n$IP\nMessage:\n$f_message");
$msg = "<br><p align=center><font size=5>Вашe письмо отправлено!</font>";
} else {
$msg = "<br><p align=center><font size=5>Вашe письмо не отправлено!</font>";
}
}
?>
<p><? echo $msg; ?></p>
 
 

 
Но при проверки работы капчи на сайте при любых вариантах при нажатии на кнопку отправить открывается новая страница, где написано:
Страница недоступна
Сайт xxxxx.com пока не может обработать этот запрос.
 
Что не так?

Всего записей: 63 | Зарегистр. 19-05-2007 | Отправлено: 00:42 16-11-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
butgern

Цитата:
Что не так?  

включите вывод ошибок php, тогда вам будет понятно в чем дело.
сейчас - нет запятой после

Цитата:
'secret' => 'xxxxxxxxxx'  

 
вот я переписал и отформатировал. не говорю, что работает, может проблема  в чем то еще, но так удобнее

Код:
<?php
$context = stream_context_create([  
   'http' => [  
      'header'  => "Content-type: application/x-www-form-urlencoded\r\n",  
      'method'  => 'POST',  
      'content' => http_build_query([  
         'secret' => 'xxxxxxxxxx',  
         'response' => $_POST['g-recaptcha-response'],  
         'remoteip' => $_SERVER['REMOTE_ADDR']  
      ])  
   ]  
]);  
 
$captcha = json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $context));  
 
if (!$captcha) die();  
 
if ($captcha->success) {
   $IP = $_SERVER['REMOTE_ADDR'];  
   $email = "mail@xxx.com";  
   $subject = "Privet";  
   if (!empty($_POST['f_name']) && !empty($_POST['f_mail']) && !empty($_POST['f_message'])) {
      mail($email, $subject, "From: " . $_POST['f_name'] . "\nMail: " . $_POST['f_mail'] . "\nIP:\n$IP\nMessage:\n" . $_POST['f_message']);  
      $msg = "<br><p align=center><font size=5>Вашe письмо отправлено!</font>";  
   } else {  
      $msg = "<br><p align=center><font size=5>Вашe письмо не отправлено!</font>";  
   }  
}  
?>

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 01:38 16-11-2017
butgern

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
вот я переписал и отформатировал. не говорю, что работает, может проблема  в чем то еще, но так удобнее  

 
Большое спасибо за помощь.
После добавления запятой все проверочники показывают, что теперь в файле и коде ошибок нет.
Но капча так и не работает!
 
Пишет:
Сайт xxxxx.com пока не может обработать этот запрос.  
 
Или вообще при нажатии кнопку отправить открывается  пустая страница (firefox)
 
Просто капец какой-то

Всего записей: 63 | Зарегистр. 19-05-2007 | Отправлено: 01:40 21-11-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
butgern
значит ошибка в том, что то отключено или не работает (например file_get_contents с https или вообще для url).
включите вывод ошибок в браузер, подскажет в чем дело.
добавьте в свой php код две строки

Код:
ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE);

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 03:22 21-11-2017
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Установка на сайт reCAPTCHA от Google


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru