@L1nw0od

Не отправляет форму в телеграм?

Всем привет, с пхп не знакомы но по урокам сделал форму отправки (отправляет форма в телеграм)
Проблема в том что если поля заполнены не все то форма не доходит, а елси все то форма отправляет!
Вот код подскажите как и что исправить
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (!empty($_POST['name']) && !empty($_POST['name'])){
  if (isset($_POST['name'])) {
    if (!empty($_POST['name'])){
  $name = strip_tags($_POST['name']);
  $nameFieldset = "Имя пославшего: ";
  }
}

if (isset($_POST['theme'])) {
  if (!empty($_POST['theme'])){
  $theme = strip_tags($_POST['theme']);
  $themeFieldset = "Тема: ";
  }
}
    
 if (isset($_POST['theme2'])) {
  if (!empty($_POST['theme2'])){
  $theme2 = strip_tags($_POST['theme2']);
  $theme2Fieldset = "Тема - 2: ";
  }
} 
    
    if (isset($_POST['mail'])) {
  if (!empty($_POST['mail'])){
  $mail = strip_tags($_POST['mail']);
  $mailFieldset = "Почта: ";
  }
}
    
    
    if (isset($_POST['sk_viber'])) {
  if (!empty($_POST['sk_viber'])){
  $sk_viber = strip_tags($_POST['sk_viber']);
  $sk_viberFieldset = "Скайп или вайбер: ";
  }
}  
    
    if (isset($_POST['name_project'])) {
  if (!empty($_POST['name_project'])){
  $name_project = strip_tags($_POST['name_project']);
  $name_projectFieldset = "Название проекта: ";
  }
}  
    
    if (isset($_POST['link__site'])) {
  if (!empty($_POST['link__site'])){
  $link__site = strip_tags($_POST['link__site']);
  $link__siteFieldset = "Ссылка на сайт: ";
  }
}
     if (isset($_POST['kharakter_tovar'])) {
  if (!empty($_POST['kharakter_tovar'])){
  $kharakter_tovar = strip_tags($_POST['kharakter_tovar']);
  $kharakter_tovarFieldset = "Характеристика товара: ";
  }
}
    if (isset($_POST['kolvo_komponent'])) {
  if (!empty($_POST['kolvo_komponent'])){
  $kolvo_komponent = strip_tags($_POST['kolvo_komponent']);
  $kolvo_komponentFieldset = "Кол-во комментариев: ";
  }
}
    
        if (isset($_POST['geography_donor'])) {
  if (!empty($_POST['geography_donor'])){
  $geography_donor = strip_tags($_POST['geography_donor']);
  $geography_donorFieldset = "География доноров: ";
  }
}
    
        if (isset($_POST['auditoriya'])) {
  if (!empty($_POST['auditoriya'])){
  $auditoriya = strip_tags($_POST['auditoriya']);
  $auditoriyaFieldset = "Аудитория: ";
  }
}
    
        if (isset($_POST['msg'])) {
  if (!empty($_POST['msg'])){
  $msg = strip_tags($_POST['msg']);
  $msgFieldset = "Сообщение: ";
  }
}
 
$token = "XXXXXXXXXXXXXXXXXXXXXXX";
$chat_id = "xxxxxxx";
$arr = array(
    $themeFieldset => $theme,
  $nameFieldset => $name,
  $mailFieldset => $mail,
  $sk_viberFieldset => $sk_viber,
  $name_projectFieldset => $name_project,
  $link__siteFieldset => $link__site,
  $kharakter_tovarFieldset => $kharakter_tovar,
  $kolvo_komponentFieldset => $kolvo_komponent,
  $geography_donorFieldset => $geography_donor,
  $auditoriyaFieldset => $auditoriya,
  $msgFieldset => $msg
//  $phoneFieldset => $phone,

//  $theme2Fieldset => $theme2
);
foreach($arr as $key => $value) {
  $txt .= "<b>".$key."</b> ".$value."%0A";
};
$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
if ($sendToTelegram) {
 
  echo '<p class="success">Спасибо за отправку вашего сообщения!</p>';
    return true;
} else {
  echo '<p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p>';
}
} else {
  echo '<p class="fail">Ошибка. Вы заполнили не все обязательные поля!</p>';
}
} else {
header ("Location: /");
}

?>
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Vitsliputsli
Вероятно эти незаполненные поля обязательны в API Телеграма. Если это допустимо в API передавайте их в ваш код пустыми. Или измените код на этот:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
	$args = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
	if (!empty($args['name'])){
		$arr = [
			"Имя пославшего: "=>$args['name'],
			"Тема: "=>!empty($args['theme']) ? $args['theme'] : '',
			"Тема - 2: "=>!empty($args['theme2']) ? $args['theme2'] : '',
			"Почта: "=>!empty($args['mail']) ? $args['mail'] : '',
			"Скайп или вайбер: "=>!empty($args['sk_viber']) ? $args['sk_viber'] : '',
			"Название проекта: "=>!empty($args['name_project']) ? $args['name_project'] : '',
			"Ссылка на сайт: "=>!empty($args['link__site']) ? $args['link__site'] : '',
			"Характеристика товара: "=>!empty($args['kharakter_tovar']) ? $args['kharakter_tovar'] : '',
			"Кол-во комментариев: "=>!empty($args['kolvo_komponent']) ? $args['kolvo_komponent'] : '',
			"География доноров: "=>!empty($args['geography_donor']) ? $args['geography_donor'] : '',
			"Аудитория: "=>!empty($args['auditoriya']) ? $args['auditoriya'] : '',
			"Сообщение: "=>!empty($args['msg']) ? $args['msg'] : '',
		];
		$token = "XXXXXXXXXXXXXXXXXXXXXXX";
		$chat_id = "xxxxxxx";
		$txt="";
		foreach($arr as $key => $value) {
		  $txt .= "<b>".$key."</b> ".$value."%0A";
		};
		$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
		if ($sendToTelegram) {
			echo '<p class="success">Спасибо за отправку вашего сообщения!</p>';
			return true;
		} else {
			echo '<p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p>';
		}
	} else {
		echo '<p class="fail">Ошибка. Вы заполнили не все обязательные поля!</p>';
	}
} else {
	header ("Location: /");
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы