Приходят не все данные с формы обратной связи php + telegram
Всем привет. Недавно у меня появилась острая необходимость подвязать форму обратной связи на api telegram. Соответственно суть главного вопроса такова, что при проверки работоспособности формы на localhost - у меня работает все отлично. То есть бот отсылает информацию, которую оставил пользователь в заявке - перечень данных: Имя, Телефон, Город, ( тема лендинга ), прикрепленный файл. Однако при выгрузке файлов сайта на выделенный сервер в бота прилетают все данные, кроме прикрепленного пользователем файла и я не могу понять где у меня теряется во всей цепи файл оставленный пользователем. Ниже привожу код PHP обработчика:
const TOKEN = 'MyToken';
const CHATID = 'ChatID';
$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['username']) && !empty($_POST['usernumber'])) {
// Если не пустые, то валидируем эти поля и сохраняем и добавляем в тело сообщения. Минимально для теста так:
$txt = "";
// Имя
if (isset($_POST['username']) && !empty($_POST['username'])) {
$txt .= "Имя пославшего: " . strip_tags(trim(urlencode($_POST['username']))) . "%0A";
}
// Номер телефона
if (isset($_POST['usernumber']) && !empty($_POST['usernumber'])) {
$txt .= "Телефон: " . strip_tags(trim(urlencode($_POST['usernumber']))) . "%0A";
}
if (isset($_POST['city']) && !empty($_POST['city'])) {
$txt .= "Город: " . strip_tags(trim(urlencode($_POST['city']))) . "%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'] . '/projectland/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: /");
}