Помощник
|
Форма обратной связи и андроид, при отправке сообщений |
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'; серчконсоли до полусмерти ) Уже этим не страдаю muratastana, Ну, что тему закрываем? Нету же специалистов по PHP ? Ну, что тему закрываем? Нету же специалистов по PHP ? Кто то тут кричал: да Вы ничего не понимааааааете в создании сайтов! Ну, где же эти понимающие, докажите или слабо и только кричать можете? Сообщение отредактировал Silverspam - 14.11.2022, 15:30
Причина редактирования: upd
|
|
|
EvilGomel |
14.11.2022, 19:09;
Ответить: EvilGomel
Сообщение
#13
|
|
да Вы ничего не понимааааааете в создании сайтов! Ну, где же эти понимающие, докажите или слабо и только кричать можете? А бюджет огласить не пробовали?! -------------------- |
|
|
muratastana
|
Сообщение
#14
|
|
бюджет Не пробывал , честно скажу А бюджет огласить не пробовали?! Попробывал вырезать кусок кода со встроенной reCaptcha в обработчике PHP, вырезал, получилось, но в мозиле с андроида кнопка "Отправить" реагирует только после перезагрузки страницы, то есть как и раньше. Больше из кода нечего вырезать((( |
|
|
qpPeW |
14.11.2022, 23:11;
Ответить: qpPeW
Сообщение
#15
|
|
Нету бюджета - нету специалистов которые будут решать проблему вместо Вас.
-------------------- |
|
|
malamut |
14.11.2022, 23:36;
Ответить: malamut
Сообщение
#16
|
|
Зачем использовать 2 каптчи?
Мозила блокирует формы похожие на те, что крадут данные. Как вы это выяснили? Это только на андроиде? Попробуйте убрать свою каптчу - форма станет "менее подозрительной" - будет работать? -------------------- |
|
|
muratastana
|
Сообщение
#17
|
|
|
Попробуйте убрать свою каптчу Я пробывал убрать встроенную капчy, так как она чужая , не доверяю, но все то же самое с компа уходит письмо, со смартфона в мозиле нет , похоже обработчик придется переписывать полностью(( Как вы это выяснили? Это только на андроиде? Прочитал на одном из форумов , но там и в компе и в устройствах была проблема к мозилы, а у меня только со смартфона и то после обновления страницы отправляется , а с первого раза кнопка Отправить" как мертвая |
|
|
||
EvilGomel |
15.11.2022, 12:13;
Ответить: EvilGomel
Сообщение
#18
|
|
Не пробывал , честно скажу Зачем использовать 2 каптчи? Чтобы теоретический посетитель сайта "послал на три буквы" когда захочет задать вопрос в форме. так как она чужая , не доверяю, Сообщение отредактировал EvilGomel - 15.11.2022, 12:13 -------------------- |
|
|
muratastana
|
Сообщение
#19
|
|
Зачем использовать 2 каптчи? Используется только одна , моя, а ещё одна квпча была предустановлена в код формы разработчиком , вот она видимо и смущает мащилу, ее бы аккуратно вырезать из формы или обработчик переделать? Кто сможет, плачу только в том случае если в андроид мозила заработает с формой обратной связи без перезагрузки страницы |
|
|
EvilGomel |
15.11.2022, 18:50;
Ответить: EvilGomel
Сообщение
#20
|
|
Кто сможет, плачу только в том случае если в андроид мозила заработает с формой обратной связи без перезагрузки страницы Открою небольшой секрет - исполнители заинтересуются в случае указания размера оплаты. -------------------- |
|
|
muratastana
|
Сообщение
#21
|
|
Уфф, наконец то сделал, всем спасибо , закрываю тему. Никому ничего должен не остался ? Или на общак надо кинуть ?
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Принимаю заказы на копирайтинг, рерайтинг. Стабильно работаю, всегда на связи Нужен автор текстов, копирайтер? Обращайтесь |
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 |
Текстовая версия | Сейчас: 19.4.2024, 16:00 |