调用 REST API 以在票证系统中创建问题的 PHP 脚本只能调用一次
A PHP script that calls a REST API to create issues in a ticket system should only be called once
我有一个比较具体的问题。
我正在为我们公司的员工注册流程编写一个应用程序。在几个表格的过程中,有关新员工要求的数据被收集并输入到 MySQL 数据库中。
在最后一步,一个 PHP 脚本通过 cURL 在我们的 JIRA 票证系统(通过 REST API)中获取这些信息并创建多个票证。
执行 cURL 调用的网页也会在之后呈现结果,即 links 到创建的票证。如果有人点击 link,然后决定按下浏览器的 "back" 按钮,整个脚本将再次 运行。
如何有效地防止这种情况发生?我已经有了一些想法,但其中 none 似乎非常合适:
- 在数据库中创建更多信息,即每张票的状态,然后在决定 运行 cURL 调用之前对其进行查询。
- 不允许通过 JS 按后退按钮访问脚本(实际上这个想法完全是垃圾,但无论如何我都会把它留在这里。)
- 不允许用户调用脚本,而是让表单向我发送一封电子邮件,说明信息已输入,这样我就可以 运行 自己编写脚本。每次...
请原谅,这不是 "exact" 问题,而是关于最佳实践的问题。尽管以我的拙见,这就是论坛所需要的,而不是您可以在任何文档中阅读的内容。
问候
只是一个想法 - 使用会话变量来确保 curl 请求只发生一次 - 您可以选择(或与会话一起)在数据库中存储一个布尔值以针对他们的名称/用户 ID 以指示他们已完成过程。
<?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 */
}
?>
我有一个比较具体的问题。
我正在为我们公司的员工注册流程编写一个应用程序。在几个表格的过程中,有关新员工要求的数据被收集并输入到 MySQL 数据库中。
在最后一步,一个 PHP 脚本通过 cURL 在我们的 JIRA 票证系统(通过 REST API)中获取这些信息并创建多个票证。
执行 cURL 调用的网页也会在之后呈现结果,即 links 到创建的票证。如果有人点击 link,然后决定按下浏览器的 "back" 按钮,整个脚本将再次 运行。
如何有效地防止这种情况发生?我已经有了一些想法,但其中 none 似乎非常合适:
- 在数据库中创建更多信息,即每张票的状态,然后在决定 运行 cURL 调用之前对其进行查询。
- 不允许通过 JS 按后退按钮访问脚本(实际上这个想法完全是垃圾,但无论如何我都会把它留在这里。)
- 不允许用户调用脚本,而是让表单向我发送一封电子邮件,说明信息已输入,这样我就可以 运行 自己编写脚本。每次...
请原谅,这不是 "exact" 问题,而是关于最佳实践的问题。尽管以我的拙见,这就是论坛所需要的,而不是您可以在任何文档中阅读的内容。
问候
只是一个想法 - 使用会话变量来确保 curl 请求只发生一次 - 您可以选择(或与会话一起)在数据库中存储一个布尔值以针对他们的名称/用户 ID 以指示他们已完成过程。
<?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 */
}
?>