X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

4 страниц V  < 1 2 3 4 >
Открыть тему
Тема закрыта
> Форма обратной связи и андроид, при отправке сообщений
muratastana
muratastana
Topic Starter сообщение 14.11.2022, 16:35; Ответить: muratastana
Сообщение #12


Все ближе миг блаженства или почти у цели. Мозила блокирует формы похожие на те, что крадут данные. Эта форма похожа именно на такую, так как в ней присутствуют две капчи: одна встроенная в форму, другая настроенная мною лично, но отключить встроенную невозможно, так как нарушается целостность конструкции и тогда форма вообще не отправляет, теперь надо как то обработчик PHP переделать, чтобы он не обращался к встроенной капче и тогда будет работать только моя, соответственно мозила перестанет блокировать подозревая в краже данных (спасибо маломуту, подсказал, где искать)

Развернуть/Свернуть
Код
<?php
  // открываем сессию
  session_start();

  // переменная в которую будем сохранять результат работы
  $data['result']='error';

  // разрешённые типы файлов
  $allowedExtension = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");

  // директория для хранения файлов ()
  $pathToFile = $_SERVER['DOCUMENT_ROOT'].'/feedback/files/';

  // максимальный размер файла
  $maxSizeFile = 524288;

  // ваш секретный ключ вот это падло надо обойти как то:
  $secret = '5LeyuF7hAAAAAAHnbwufsHtP2WRMrJSGYvpdCfs8';

  // функция для проверки длины строки
  function validStringLength($string,$min,$max) {
    $length = mb_strlen($string,'UTF-8');
    if (($length<$min) || ($length>$max)) {
      return false;
    }
    else {
      return true;
    }
  }

  // если данные были отправлены методом POST, то...
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    $data['result']='success';

    //получить имя, которое ввёл пользователь
    if (isset($_POST['name'])) {
      $name = $_POST['name'];
      if (!validStringLength($name,2,30)) {
        $data['name']='Поля имя содержит недопустимое количество символов.';
        $data['result']='error';
      }
    } else {
      $data['result']='error';
    }
    //получить email, которое ввёл пользователь
    if (isset($_POST['email'])) {
      $email = $_POST['email'];
      if (!filter_var($email,FILTER_VALIDATE_EMAIL)) {
        $data['email']='Поле email введено неправильно';
        $data['result']='error';
      }
    } else {
      $data['result']='error';
    }
    //получить сообщение, которое ввёл пользователь
    if (isset($_POST['message'])) {
      $message = $_POST['message'];
      if (!validStringLength($message,20,500)) {
        $data['message']='Поле сообщение содержит недопустимое количество символов.';
        $data['result']='error';
      }
    } else {
      $data['result']='error';
    }

    // если не существует ни одной ошибки, то прододжаем...
    if ($data['result']=='success') {
      // однократное включение файла autoload.php (клиентская библиотека reCAPTCHA PHP)
      require_once (dirname(__FILE__).'/recaptcha/autoload.php');
      // если в массиве $_POST существует ключ g-recaptcha-response, то...
      if (isset($_POST['g-recaptcha-response'])) {
        // создать экземпляр службы recaptcha, используя секретный ключ
        $recaptcha = new \ReCaptcha\ReCaptcha($secret);
        // получить результат проверки кода recaptcha
        $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
        // если результат положительный, то...
        if ($resp->isSuccess()){
          // действия, если код captcha прошёл проверку
          //обработаем файлы, загруженные пользователем посредством элементов с name="images[]"
          // если ассоциатианый массив $_FILES["images"] существует, то
          if(isset($_FILES["images"])) {
            // переберём все файлы (изображения)
            $files = array();
            foreach ($_FILES["images"]["error"] as $key => $error) {
              // если ошибок не возникло, т.е. файл был успешно загружен на сервер, то...
              if ($error == UPLOAD_ERR_OK) {
                // имя файла на устройстве пользователя
                $nameFile = $_FILES['images']['name'][$key];
                // расширение загруженного пользователем файла в нижнем регистре
                $extFile = mb_strtolower(pathinfo($nameFile, PATHINFO_EXTENSION));
                // размер файла
                $sizefile = $_FILES['images']['size'][$key];
                //myme-тип файла
                $filetype = $_FILES['images']['type'][$key];
                // проверить расширение файла, размер файла и mime-тип
                if (!array_key_exists($extFile, $allowedExtension)) {
                  $data['files']='Ошибка при загрузке файлов (неверное расширение).';
                  $data['result']='error';
                } elseif ($sizefile > $maxSizeFile) {
                  $data['files']='Ошибка при загрузке файлов (размер превышает 512Кбайт).';
                  $data['result']='error';
                } elseif (!in_array($filetype, $allowedExtension)){
                  $data['files']='Ошибка при загрузке файлов (неверный тип файла).';
                  $data['result']='error';
                } else {
                  //ошибок не возникло, продолжаем...
                  // временное имя, с которым принятый файл был сохранён на сервере
                  $tmpFile = $_FILES['images']['tmp_name'][$key];
                  // уникальное имя файла
                  $newFileName = uniqid('img_', true).'.'.$extFile;
                  // полное имя файла
                  $newFullFileName = $pathToFile.$newFileName;
                  // перемещаем файл в директорию
                  if (!move_uploaded_file($tmpFile, $newFullFileName)) {
                    // ошибка при перемещении файла
                    $data['files']='Ошибка при загрузке файлов.';
                    $data['result']='error';
                  } else {
                    $files[] = $newFullFileName;
                  }
                }
              } else {
                //ошибка при загрузке файл на сервер
                $data['result']='error';
              }
            }
          }
        } else {
          // иначе передать ошибку
          $errors = $resp->getErrorCodes();
          $data['error-captcha']=$errors;
          $data['msg']='Код капчи не прошёл проверку на сервере';
          $data['result']='error';
        }
      } else {
        $data['result']='error';
      }
    }
  } else {
    //ошибка, не существует ассоциативный массив $_POST["send-message"]
    $data['result']='error';
  }

  // дальнейшие действия (ошибок не обнаружено)
  if ($data['result']=='success') {
    //1. Сохрание формы в файл
    $output = "---------------------------------" . "\n";
    $output .= date("d-m-Y H:i:s") . "\n";
    $output .= "Имя пользователя: " . $name . "\n";
    $output .= "Адрес email: " . $email . "\n";
    $output .= "Сообщение: " . $message . "\n";
    if (isset($files)) {
      $output .= "Файлы: " . "\n";
      foreach ($files as $value) {
         $output .= $value . "\n";
      }
    }
    if (file_put_contents(dirname(__FILE__).'/message.txt', $output, FILE_APPEND | LOCK_EX)) {
      $data['result']='success';
    } else {
      $data['result']='error';
    }

    //2. Отправляем на почту
    // включить файл PHPMailerAutoload.php
    require_once dirname(__FILE__) . '/phpmailer/PHPMailerAutoload.php';
    //формируем тело письма
    $output = "Дата: " . date("d-m-Y H:i") . "\n";
    $output .= "Имя пользователя: " . $name . "\n";
    $output .= "Адрес email: " . $email . "\n";
    $output .= "Сообщение: " . "\n" . $message . "\n";

    // создаём экземпляр класса PHPMailer
    $mail = new PHPMailer;

    $mail->CharSet = 'UTF-8';
    $mail->From      = 'email@mysite.ru';
    $mail->FromName  = 'ВОПРОС ПО САЙТУ';
    $mail->Subject   = 'Сообщение с сайта HTMLSITE.KZ';
    $mail->Body      = $output;
    $mail->AddAddress( 'admin@htmlsite.kz' );
    // прикрепляем файлы к письму
    if (isset($files)) {
      foreach ($files as $value) {
        $mail->addAttachment($value);
      }
    }

    // отправляем письмо
    if ($mail->Send()) {
      $data['result']='success';
    } else {
      $data['result']='error';
    }

  }

  echo json_encode($data);

?>


// ваш секретный ключ вот это падло надо обойти как то:
$secret = '5LeyuF7hAAAAAAHnbwufsHtP2WRMrJSGYvpdCfs8';


Цитата(NikosTM @ 13.11.2022, 19:36) *
серчконсоли до полусмерти )

Уже этим не страдаю

muratastana,
Ну, что тему закрываем? Нету же специалистов по PHP ?

Цитата(muratastana @ 14.11.2022, 15:07) *
Ну, что тему закрываем? Нету же специалистов по PHP ?

Кто то тут кричал: да Вы ничего не понимааааааете в создании сайтов! Ну, где же эти понимающие, докажите или слабо и только кричать можете?


Сообщение отредактировал Silverspam - 14.11.2022, 15:30
Причина редактирования: upd
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
EvilGomel
EvilGomel
сообщение 14.11.2022, 19:09; Ответить: EvilGomel
Сообщение #13


Цитата(muratastana @ 14.11.2022, 15:35) *
да Вы ничего не понимааааааете в создании сайтов! Ну, где же эти понимающие, докажите или слабо и только кричать можете?

А бюджет огласить не пробовали?!


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
muratastana
muratastana
Topic Starter сообщение 14.11.2022, 21:22; Ответить: muratastana
Сообщение #14


Цитата(EvilGomel @ 14.11.2022, 19:09) *
бюджет

Не пробывал , честно скажу

Цитата(EvilGomel @ 14.11.2022, 19:09) *
А бюджет огласить не пробовали?!

Попробывал вырезать кусок кода со встроенной reCaptcha в обработчике PHP, вырезал, получилось, но в мозиле с андроида кнопка "Отправить" реагирует только после перезагрузки страницы, то есть как и раньше. Больше из кода нечего вырезать(((
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
qpPeW
qpPeW
сообщение 14.11.2022, 23:11; Ответить: qpPeW
Сообщение #15


Нету бюджета - нету специалистов которые будут решать проблему вместо Вас.


--------------------
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) :: БЫСТРО :: КАЧЕСТВЕННО :: ДОСТУПНО


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
malamut
malamut
сообщение 14.11.2022, 23:36; Ответить: malamut
Сообщение #16


Зачем использовать 2 каптчи?

Цитата(muratastana @ 14.11.2022, 14:35) *
Мозила блокирует формы похожие на те, что крадут данные.

Как вы это выяснили? Это только на андроиде?

Попробуйте убрать свою каптчу - форма станет "менее подозрительной" - будет работать?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
muratastana
muratastana
Topic Starter сообщение 15.11.2022, 11:33; Ответить: muratastana
Сообщение #17


Цитата(malamut @ 14.11.2022, 23:36) *
Попробуйте убрать свою каптчу

Я пробывал убрать встроенную капчy, так как она чужая , не доверяю, но все то же самое с компа уходит письмо, со смартфона в мозиле нет , похоже обработчик придется переписывать полностью((

Цитата(malamut @ 14.11.2022, 23:36) *
Как вы это выяснили? Это только на андроиде?

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

Прикрепленное изображение
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
EvilGomel
EvilGomel
сообщение 15.11.2022, 12:13; Ответить: EvilGomel
Сообщение #18


Цитата(muratastana @ 14.11.2022, 20:22) *
Не пробывал , честно скажу



Цитата(malamut @ 14.11.2022, 22:36) *
Зачем использовать 2 каптчи?

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

Цитата(muratastana @ 15.11.2022, 10:33) *
так как она чужая , не доверяю,

:popcorn2:

Сообщение отредактировал EvilGomel - 15.11.2022, 12:13


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
muratastana
muratastana
Topic Starter сообщение 15.11.2022, 15:20; Ответить: muratastana
Сообщение #19


Цитата(malamut @ 14.11.2022, 23:36) *
Зачем использовать 2 каптчи?

Используется только одна , моя, а ещё одна квпча была предустановлена в код формы разработчиком , вот она видимо и смущает мащилу, ее бы аккуратно вырезать из формы или обработчик переделать? Кто сможет, плачу только в том случае если в андроид мозила заработает с формой обратной связи без перезагрузки страницы
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
EvilGomel
EvilGomel
сообщение 15.11.2022, 18:50; Ответить: EvilGomel
Сообщение #20


Цитата(muratastana @ 15.11.2022, 14:20) *
Кто сможет, плачу только в том случае если в андроид мозила заработает с формой обратной связи без перезагрузки страницы

Открою небольшой секрет - исполнители заинтересуются в случае указания размера оплаты.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
muratastana
muratastana
Topic Starter сообщение 15.11.2022, 20:15; Ответить: muratastana
Сообщение #21


Уфф, наконец то сделал, всем спасибо , закрываю тему. Никому ничего должен не остался ? Или на общак надо кинуть ?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
4 страниц V  < 1 2 3 4 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПринимаю заказы на копирайтинг, рерайтинг. Стабильно работаю, всегда на связи
Нужен автор текстов, копирайтер? Обращайтесь
14 KriptoFin 8092 22.9.2020, 18:07
автор: mrSana
Открытая тема (нет новых ответов) Нужен простой лендинг с формой обратной связи
10 Kuzzma 2598 11.9.2020, 21:33
автор: Kuzzma
Открытая тема (нет новых ответов) [Кейс] Заработок на Андроид трафике без денег на закупку и без своих приложений
2 mmobile2 2775 5.2.2020, 16:05
автор: -mmobile2-
Открытая тема (нет новых ответов) Нужен качественный рерайт - андроид игры
30 руб за 1000
4 seonotebook 4568 19.4.2019, 11:27
автор: Roman1989
Открытая тема (нет новых ответов) Настройка каптчи на форму обратной связи
3 woolf 2043 9.4.2019, 17:21
автор: bobur


 



RSS Текстовая версия Сейчас: 19.4.2024, 16:00
Дизайн