curl — PHP-скрипт, который вызывает REST API для создания проблем в системе заявок, должен вызываться только один раз

У меня довольно специфическая проблема.

Я пишу приложение для процесса регистрации сотрудников в нашей компании. В течение нескольких форм данные о требованиях к новому сотруднику собираются и заносятся в базу данных MySQL.

На последнем этапе один PHP-скрипт берет эти фрагменты информации и создает несколько билетов в нашей системе заявок JIRA (через REST API) через cURL.

На веб-странице, которая выполняет вызовы cURL, также отображается результат, то есть ссылки на созданные заявки. Если кто-то щелкает ссылку, а затем решает нажать кнопку «назад» своего браузера, весь сценарий будет запущен снова.

Как я могу предотвратить это эффективно? У меня уже есть некоторые идеи, но ни одна из них не кажется действительно подходящей:
— Создайте еще больше информации в базе данных, то есть статус каждого тикета, а затем запросите его, прежде чем принимать решения о вызовах cURL.
— Не позволяйте дойти до сценария нажатием кнопки «Назад» через JS (на самом деле эта идея — полная чушь, но я все равно оставлю ее здесь).
— Не позволяйте пользователю вызывать сценарий, а сделайте так, чтобы форма отправляла мне электронное письмо о том, что информация была введена, чтобы я мог запустить сценарий самостоятельно. Каждый раз…

Прошу прощения за это не «точный» вопрос, а больше о наилучшей практике. Хотя, по моему скромному мнению, для этого нужны форумы, а не вещи, которые вы можете прочитать в любой документации.

Привет

1

Решение

Просто идея — используя переменную сеанса, чтобы гарантировать, что запрос curl происходит только один раз — вы могли бы альтернативно (или вместе с сеансами) сохранить логическое значение в БД против их имени / идентификатора пользователя, чтобы указать, что они завершили процесс.

<?php
if( !isset( $_SESSION['curl_ticket'] ) ){
/* do the curl request */

/* get response from request */

/* set the session */
$_SESSION['curl_ticket']=$some_id;
}if( isset( $_SESSION['curl_ticket'] ) ){
/* display ticket */
}
?>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]