За последние 24 часа нас посетили 22736 программистов и 1256 роботов. Сейчас ищут 779 программистов ...

Установка captcha на сайт сделанный на CodeIgniter 2.0

Тема в разделе "PHP для новичков", создана пользователем Yura12, 11 фев 2017.

Метки:
  1. Yura12

    Yura12 Новичок

    С нами с:
    11 фев 2017
    Сообщения:
    12
    Симпатии:
    0
    Здравствуйте!

    Помогите пожалуйста, а насколько реально установить captcha на сайт сделанный на CodeIgniter 2.0

    Вот приведу код страницы, куда надо установить captcha:

    Код (Text):
    1. <div class="grid_9">
    2.     <h1>Форма обратной связи</h1><br />
    3.     <div class="errorSummary" id="errMsg" style="display: none"></div>
    4.     <form id="kodeksForm" action="/form/feedback/submit" method="post" onsubmit="return sendForm('kodeksForm', 'errMsg', 'submit');">
    5.  
    6.         <label for="theme">Выберите тему:</label><br />
    7.         <select id="theme" name="theme" size="3">
    8.             <option value="Вопрос">Вопрос</option>
    9.             <option value="Временный свободный доступ">Временный свободный доступ</option>
    10.             <option value="Заказ демонстрации">Заказ демонстрации</option>
    11.         </select><br /><br />
    12.         <table>
    13.         <tr>
    14.         <td>
    15.         <label for="organization">Организация</label><br />
    16.         <input id="organization" name="organization" type="text" size="25" /><br /><br />
    17.         </td>
    18.  
    19.         <td>
    20.         <label for="person">Контактное лицо</label><br />
    21.         <input id="person" name="person" type="text" size="25" /><br /><br />
    22.  
    23.         </td>
    24.         </tr>
    25.         <tr>
    26.         <td>
    27.         <label for="phone">Телефон</label><br />
    28.         <input id="phone" name="phone" type="text" size="25" /><br /><br />
    29.  
    30.         </td>
    31.         <td>
    32.         <label for="email">Электронная почта</label><br />
    33.         <input id="email" name="email" type="text" size="25" /><br /><br />
    34.         </td></tr>
    35.         </table>
    36.         <label for="text">Текст сообщения</label><br />
    37.         <textarea id="text" name="text" rows="3" cols="44"></textarea><br /><br />
    38.  
    39.  
    40.     <div class="g-recaptcha" data-sitekey=" ************  "></div>
    41.  
    42.  
    43. <br />
    44.         <input id="submit" type="submit" class="big" value="Отправить" />
    45.     </form>
    46. </div>

    Пробовал поставить captcha от Google

    Действовал по инструкции
    https://webdesign.tutsplus.com/ru/t...-captcha-recaptcha-in-your-website--cms-23024

    дошёл до шага 4

    Так вот суть вопроса в том, а как действовать дальше?

    Как куда вставлять код для проверки captcha с шага 4 инструкции.

    Сайт разрабатывался не мной, если бы в action="/form/feedback/submit" стоял переход на следующий php файл, то там было бы просто.

    <form id="kodeksForm" action="/form/feedback/submit" method="post" onsubmit="return sendForm('kodeksForm', 'errMsg', 'submit');">

    Но сайт сделан на codeIgniter 2.0 - там сложно понять, куда можно поместить проверку, ведь судя по action="/form/feedback/submit" ссылка идёт на саму же эту страницу.

    Не могли бы помочь, подсказать?

    И второе, а может при приведённом коде - есть более простое готовое решение для captcha, а не captcha от Google?
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    мож чет не понял а почему тебя смущает на тот же action направить?
     
  3. Yura12

    Yura12 Новичок

    С нами с:
    11 фев 2017
    Сообщения:
    12
    Симпатии:
    0
    Так как в action целый php файл вставить?
     
  4. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Вот так и вставить. Создаёшь php файл, а в экшне путь указываешь. Или я не о том понял?
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    в экшн целый пхп файл? На фантазию не жаловался никогда но ты загнал меня в тупик... Про контроллеры читал?
     
  6. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    ТС,чисто твой пример по статье

    action.php
    PHP:
    1. require_once "recaptchalib.php";
    2. $secret = "твой ключ";
    3. // пустой ответ
    4. $response = null;
    5. // проверка секретного ключа
    6. $reCaptcha = new ReCaptcha($secret);
    7. if ($_POST["g-recaptcha-response"]) {
    8.         $response = $reCaptcha->verifyResponse(
    9.         $_SERVER["REMOTE_ADDR"],
    10.         $_POST["g-recaptcha-response"]
    11.     );
    12.     if ($response != null && $response->success)
    13.         echo "Hi " . $_POST["name"] . " (" . $_POST["email"] . "), thanks for submitting the form!";
    14. } else {
    15.     echo 'Упс,вы не ввели капчу';
    16. }
    index.php
    PHP:
    1. <!DOCTYPE html>
    2. <html lang="en">
    3.   <head>
    4. <title>How to Integrate Google “No CAPTCHA reCAPTCHA” on Your Website</title>
    5.   </head>
    6.   <body>
    7.     <form action="action.php" method="post">
    8.       <label for="name">Name:</label>
    9.       <input name="name" required><br />
    10.       <label for="email">Email:</label>
    11.       <input name="email" type="email" required><br />
    12.       <div class="g-recaptcha" data-sitekey="6LceMxUUAAAAAKRszuqscsmGBcbZI5cLQVbpFK7A"></div>
    13.       <input type="submit" value="Submit" />
    14.     </form>
    15.  
    16.     <!--js-->
    17.     <script src='https://www.google.com/recaptcha/api.js'></script>
    18.   </body>
    19. </html>
    О безопасности только не забудь позаботиться
     
  7. Yura12

    Yura12 Новичок

    С нами с:
    11 фев 2017
    Сообщения:
    12
    Симпатии:
    0
    Большое спасибо за помощь! В ближайшее время попробую и сообщу, получилось ли выполнить action="action.php" и при этом остаться на этой же странице ( http://kodeks.karelia.ru/lib/show/13 ).
    Чуть попозже сообщу.
     
  8. Yura12

    Yura12 Новичок

    С нами с:
    11 фев 2017
    Сообщения:
    12
    Симпатии:
    0
    Итак, только что сделал. Поставил так:
    <form id="kodeksForm" action="action.php" method="post" onsubmit="return sendForm('kodeksForm', 'errMsg', 'submit');">
    Файл action.php создал (он и ещё файл recaptchalib.php) оба находятся в текущей папке.

    Вот как выглядит созданный файл action.php:

    Код (Text):
    1. <?php
    2. require_once "recaptchalib.php";
    3. $secret = " ***** для форума код удалил  ************* ";
    4. // пустой ответ
    5. $response = null;
    6. // проверка секретного ключа
    7. $reCaptcha = new ReCaptcha($secret);
    8. if ($_POST["g-recaptcha-response"]) {
    9.         $response = $reCaptcha->verifyResponse(
    10.         $_SERVER["REMOTE_ADDR"],
    11.         $_POST["g-recaptcha-response"]
    12.     );
    13. }
    14.     if ($response != null && $response->success) {
    15.         echo "Hi " . $_POST["name"] . " (" . $_POST["email"] . "), thanks for submitting the form!";
    16. } else {
    17.     echo 'Упс,вы не ввели капчу';
    18. }
    19. ?>
    Так вот - при нажатии кнопки "Отправить" в браузере открывается пустая страница и выводится в ней счётчик посещений! Полная загадка откуда он там может взяться???

    Письмо не отправляется в любом случае (хоть правильно, хоть не правильно введена captcha).

    ... Хотя есть предположение, что файл action.php не выполняется вообще, а codeIgniter каким-то образом перенаправляет запрос вместо action.php вообще не понять куда и непонять как открывается пустая страница со одиночным счётчиком посещений. Попробуйте нажать кнопку Отправить со страницы http://kodeks.karelia.ru/lib/show/13