Доброго времени суток!
Скачал готовый скрипт для отправки данных с сайта в телеграм, поменял токен, все настроил и в консоли вижу такую ошибку POST
127.0.0.1:5500/php/send-message-to-telegram.php 405 (Method Not Allowed), в гугле ничего дельного не нашел:(
код js:
(function ($) {
$(".contact-form").submit(function (event) {
event.preventDefault();
// Сообщения формы
let successSendText = "Сообщение успешно отправлено";
let errorSendText = "Сообщение не отправлено. Попробуйте еще раз!";
let requiredFieldsText = "Заполните поля с именем и телефоном";
// Сохраняем в переменную класс с параграфом для вывода сообщений об отправке
let message = $(this).find(".contact-form__message");
let form = $("#" + $(this).attr("id"))[0];
let fd = new FormData(form);
$.ajax({
url: "/php/send-message-to-telegram.php",
type: "POST",
data: fd,
processData: false,
contentType: false,
beforeSend: () => {
$(".preloader").addClass("preloader_active");
},
success: function success(res) {
$(".preloader").removeClass("preloader_active");
// Посмотреть на статус ответа, если ошибка
// console.log(res);
let respond = $.parseJSON(res);
if (respond === "SUCCESS") {
message.text(successSendText).css("color", "#21d4bb");
setTimeout(() => {
message.text("");
}, 4000);
} else if (respond === "NOTVALID") {
message.text(requiredFieldsText).css("color", "#d42121");
setTimeout(() => {
message.text("");
}, 3000);
} else {
message.text(errorSendText).css("color", "#d42121");
setTimeout(() => {
message.text("");
}, 4000);
}
}
});
});
})(jQuery);
код php:
<?php
// Токен
const TOKEN = '5925855333:AAHv_8lrMkq8LRwMQxg60KGeBQv9SbQYUUU';
// ID чата
const CHATID = '-886405263';
// Массив допустимых значений типа файла. Популярные типы файлов можно посмотреть тут: https://docs.w3cub.com/http/basics_of_http/mime_types/complete_list_of_mime_types
$types = array('image/gif', 'image/png', 'image/jpeg', 'application/pdf');
// Максимальный размер файла в килобайтах
// 1048576; // 1 МБ
$size = 1073741824; // 1 ГБ
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$fileSendStatus = '';
$textSendStatus = '';
$msgs = [];
// Проверяем не пусты ли поля с именем и телефоном
if (!empty($_POST['name']) && !empty($_POST['phone'])) {
// Если не пустые, то валидируем эти поля и сохраняем и добавляем в тело сообщения. Минимально для теста так:
$txt = "";
// Имя
if (isset($_POST['name']) && !empty($_POST['name'])) {
$txt .= "Имя пославшего: " . strip_tags(trim(urlencode($_POST['name']))) . "%0A";
}
// Номер телефона
if (isset($_POST['phone']) && !empty($_POST['phone'])) {
$txt .= "Телефон: " . strip_tags(trim(urlencode($_POST['phone']))) . "%0A";
}
// Не забываем про тему сообщения
if (isset($_POST['theme']) && !empty($_POST['theme'])) {
$txt .= "Тема: " . strip_tags(urlencode($_POST['theme']));
}
$textSendStatus = @file_get_contents('https://api.telegram.org/bot'. TOKEN .'/sendMessage?chat_id=' . CHATID . '&parse_mode=html&text=' . $txt);
if( isset(json_decode($textSendStatus)->{'ok'}) && json_decode($textSendStatus)->{'ok'} ) {
if (!empty($_FILES['files']['tmp_name'])) {
$urlFile = "https://api.telegram.org/bot" . TOKEN . "/sendMediaGroup";
// Путь загрузки файлов
$path = $_SERVER['DOCUMENT_ROOT'] . '/telegramform/tmp/';
// Загрузка файла и вывод сообщения
$mediaData = [];
$postContent = [
'chat_id' => CHATID,
];
for ($ct = 0; $ct < count($_FILES['files']['tmp_name']); $ct++) {
if ($_FILES['files']['name'][$ct] && @copy($_FILES['files']['tmp_name'][$ct], $path . $_FILES['files']['name'][$ct])) {
if ($_FILES['files']['size'][$ct] < $size && in_array($_FILES['files']['type'][$ct], $types)) {
$filePath = $path . $_FILES['files']['name'][$ct];
$postContent[$_FILES['files']['name'][$ct]] = new CURLFile(realpath($filePath));
$mediaData[] = ['type' => 'document', 'media' => 'attach://'. $_FILES['files']['name'][$ct]];
}
}
}
$postContent['media'] = json_encode($mediaData);
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, ["Content-Type:multipart/form-data"]);
curl_setopt($curl, CURLOPT_URL, $urlFile);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postContent);
$fileSendStatus = curl_exec($curl);
curl_close($curl);
$files = glob($path.'*');
foreach($files as $file){
if(is_file($file))
unlink($file);
}
}
echo json_encode('SUCCESS');
} else {
echo json_encode('ERROR');
//
// echo json_decode($textSendStatus);
}
} else {
echo json_encode('NOTVALID');
}
} else {
header("Location: /");
}