Здравствуйте. Проконсультируйте пожалуйста, разрешается ли в форме страницы сайта (код 1 - вырезка кода из формы страницы) в action= вставить два наименования скрипта PHP, второй обработчик формы PHP для отправки в беседу, с помощью бота telegram? Как правильно его туда вписать? После нажатия кнопки "Отправить заявку" (Снимок экрана 1), заработают ли эти 2 скрипта?
Или лучше использовать cron, и что бы он раз в 5 минут запускал скрипт, который проверял были ли изменения в БД, если они есть, то отправлял оповещение в беседу телеграм?
Автоматизированная система приема заявок "HESK" развернута на виртуальной машине с операционной системой РедОС 8. Веб сервер nginx, БД mariadb.
Код 1
<form class="form form-submit-ticket ticket-create <?php echo count($_SESSION['iserror']) ? 'invalid' : ''; ?>" method="post" action="submit_ticket.php?submit=1" name="form1" id="form1" enctype="multipart/form-data">
По рекомендациям попробовал метод с include. На 2-ом коде представлена вырезка первого обработчик формы, 3-ий код - скрипт для бота, 4-ый код - вырезка из формы страницы с добавленной строчкой для сбора.
Код 2
// We only allow POST requests to this file
if ( $_SERVER['REQUEST_METHOD'] != 'POST' )
{
header('Location: index.php?a=add');
exit();
}
// Check for POST requests larger than what the server can handle
if ( empty($_POST) && ! empty($_SERVER['CONTENT_LENGTH']) )
{
hesk_error($hesklang['maxpost']);
}
// Try to detect some simple SPAM bots
if ( ! isset($_POST['hx']) || $_POST['hx'] != 3 || ! isset($_POST['hy']) || $_POST['hy'] != '' || isset($_POST['phone']) )
{
header('HTTP/1.1 403 Forbidden');
exit();
}
// Block obvious spammers trying to inject email headers
if ( preg_match("/\n|\r|\t|%0A|%0D|%08|%09/", hesk_POST('name') . hesk_POST('subject') ) )
{
header('HTTP/1.1 403 Forbidden');
exit();
}
hesk_session_start();
// A security check - not needed here, but uncomment if you require it
# hesk_token_check();
// Prevent submitting multiple tickets by reloading submit_ticket.php page
if (isset($_SESSION['already_submitted']))
{
hesk_forceStop();
}
// Connect to database
hesk_dbConnect();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['tel_bot4'])) {
include 'tel_bot4.php';
}
}
$hesk_error_buffer = array();
// Check anti-SPAM question
if ($hesk_settings['question_use'])
{
$question = hesk_input( hesk_POST('question') );
if ( strlen($question) == 0)
{
$hesk_error_buffer['question'] = $hesklang['q_miss'];
}
Код 3
<?php
session_start();
// Подключение библиотеки для работы с Telegram API
require __DIR__ . '/vendor/autoload.php';
use Telegram\Bot\Api;
// Параметры для подключения к боту
$token = '*****************';
$chatId = '-****************';
try {
$api = new Api($token);
// Пример отправки сообщения
$name = $_POST['name'];
$api->sendMessage([
'chat_id' => $chatId,
'text' => $name
]);
// Успешная отправка
echo "Telegram message sent successfully!";
} catch (\Exception $e) {
// Обработка ошибок
echo "Error sending Telegram message: " . $e->getMessage();
}
?>
Код 4
</div>
<?php endif; ?>
<div class="form-footer">
<input type="hidden" name="token" value="<?php hesk_token_echo(); ?>">
<input type="hidden" name="category" value="<?php echo $categoryId; ?>">
<input type="checkbox" name="tel_bot4" value="1"> Send via Telegram Bot
<button type="submit" class="btn btn-full" ripple="ripple" id="recaptcha-submit">
<?php echo $hesklang['sub_ticket']; ?>
</button>
<!-- Do not delete or modify the code below, it is used to detect simple SPAM bots -->
<input type="hidden" name="hx" value="3" /><input type="hidden" name="hy" value="">
<!-- >
<input type="text" name="phone" value="3">
< -->
</div>
<?php
// Use Invisible reCAPTCHA?
if ($hesk_settings['secimg_use'] && $hesk_settings['recaptcha_use'] == 1 && ! isset($_SESSION['img_verified']))
{
?>
<div class="g-recaptcha" data-sitekey="<?php echo $hesk_settings['recaptcha_public_key']; ?>" data-bind="recaptcha-submit" data-callback="recaptcha_submitForm"></div>
<?php
}
?>
</form>