从今年3月左右开始,我们的osTicket系统开始发布重复票证和重复线程。
我已经尝试了我所知道的所有方法来排除故障并识别出现在何处以及为何发生这种情况。在插入票证和线程之前,我甚至实现了一个catch条件来检查db表,以查看$ vars []的内容是否与DB表中的内容相匹配。
无论如何都无法成功解决这个问题。
我用谷歌搜索它,看看这个问题在哪里,可以追溯到几年前。
是否有人有解决方法如何阻止osTicket始终如一地创建ducpliate票证和线程?
我尝试了以下方法,将其他人在各种osTicket中通过v1.10提出的建议拼凑在一起。这是我试过的代码。它实际上连续工作了2天,然后昨天又开始失败了。
在if($errors) return 0;
之前插入./include/class.ticket.php中的第2498行。
/**
* J.Doe added to intercept duplicate ticket entries.
* Updated: 2017-06-12
* @author John Doe <jd@example.com>
*/
$sql1='
SELECT ticketID FROM ost_ticket
WHERE
source = "' . $vars['source'] . '"
AND topic_id = "' . $vars['topicId'] . '"
AND url = "' . $vars['url'] . '"
AND priority_id = "' . $vars['priorityId'] . '"
AND duedate = "' . date( 'Y-m-d H:i:s', strtotime( $vars['duedate'] . ' ' . $vars['time'] ) ) . '"
AND team_id = "' . $vars['assignId'] . '"
AND subject = "' . $vars['subject'] . '"
AND dept_id = "' . $vars['deptId'] . '"
AND email = "' . $vars['email'] . '"
AND name = "' . $vars['name'] . '"
';
$sql2='
SELECT id FROM ost_ticket_thread
WHERE
staff_id = "' . $vars['assignId'] . '"
AND poster = "' . $vars['name'] . '"
AND title = "' . $vars['subject'] . '"
AND body = "' . $vars['message'] . '"
';
$res1=db_query($sql1);
$res2=db_query($sql2);
if( ( $res1 && db_num_rows( $res1 ) ) || ( $res2 && db_num_rows( $res2 ) ) ) {
header( 'Location: http://example.com/workorders/' );
exit;
}
//Any error above is fatal.
if($errors) return 0;