it-gundan.com

양식 중 하나가 제출되지 않은 여러 단계 양식을 처리하는 방법

두 가지 양식이 필요한 제출 프로세스가 있다고 가정하십시오. 두 번째 양식을 제출하면 이메일이 트리거됩니다. 두 번째 양식을 제출하지 않으면 어떻게합니까? 사용자가 실수로 창을 잊어 버리거나 닫았다 고 가정 해 봅시다.

내 유일한 해결책은 전자 메일이 전송되지 않았 음을 나타내는 첫 번째 양식 제출에서 플래그로 DB를 업데이트하는 것입니다. 두 번째 양식을 제출하면 이벤트가 이메일을 전송하고 이메일이 전송되었음을 나타내는 플래그로 DB를 업데이트합니다. 크론 작업은 정기적으로 실행되어 보내지 않은 이메일에 대한 플래그를 확인하고 정보를 수집하며 이메일을 보냅니다.

이것이 문제를 다루는 가장 좋은 방법입니까?

감사.

편집 : 선명도

양식 1 사용자가 일반 데이터를 제출

메시지 1 사용자에게 선택권이 제시되었습니다. 사용자는 "통과"또는 "수락"을 선택해야합니다. 사용자가 "동의"양식 (양식 2)을 제출하면 이메일이 전송됩니다. 사용자가 "통과"양식 (양식 2)을 제출하면 다른 선택 (양식 3)과 함께 다른 메시지가 표시됩니다. 사용자가 아무 것도 수행하지 않으면 마지막으로 제공되는 선택이 기본 선택이지만이 시점에서 여전히 이메일을 보내야합니다.

더 명확하길 바랍니다.

2
user334

HTTP는 상태 비 저장이므로 브라우저를 닫은 후 사용자가 첫 번째 양식을 제출했는지 여부를 추적 할 수있는 유일한 방법은 사용자가 한 것처럼 지속성 메커니즘 (예 : 데이터베이스)을 사용하는 것입니다.

그러나 사용자가 첫 번째 양식을 제출하고 두 번째 양식을 제출하기 전에 cron 작업이 실행되면 문제점이 발생할 수 있습니다. 또한 일정 시간이 지 났는지 확인하고 싶을 수도 있습니다.

이론적으로 브라우저가 닫힐 때를 감지하고 해당 이벤트를 사용하여 작업을 트리거하려고 시도 할 수는 있지만 strongly.

0
Andy West

왜 이것이 걱정되는지에 달려 있습니다.

DB에 불완전한 데이터가 있다고 생각되면 사용자가 두 번째 양식을 완료 한 다음 DB를 업데이트하고 전자 메일을 보낼 때까지 입력 한 데이터를 사용자 세션에 유지하는 것이 좋습니다. 사용자가 두 번째 양식을 작성하지 않으면 세션 시간이 초과되면 전체 교환을 잊어 버립니다.

사용자가 두 번째 양식을 작성해야한다는 사실을 깨닫지 못하는 것에 대한 우려가있는 경우 강하게 양식을 다시 디자인 (가능한 경우 병합)하는 것이 좋습니다. 이것은 사용자 인터페이스 문제입니다.

(문제에서 논의한 바와 같이) 플래그를 사용하면 이것이 발생하는지 식별하는 데 도움이 될 수 있지만 사용자 오류로 인해 발생했는지 또는 단순히 사용자가 관심을 잃었 기 때문에 (어떤 종류의 포로가 아닌 경우) 알려지지 않습니다.

대안으로, 사용자 세션이 만료 될 때 연결될 수있는 경우 (이것은 Java 사이트에서는 매우 간단하지만 다른 서버 측 기술에서는이 기능에 익숙하지 않습니다) 불완전한 트랜잭션을 확인할 수 있습니다. 포인트.

1
Kris

설명했듯이 완료된 단계를 식별하기 위해 데이터베이스에 state 프로세스가 있어야합니다.

이제 다음 단계는 사용 된 기술에 따라 다릅니다.

ASP/ASP.NET의 경우 세션이 만료 될 때 트리거되는 이벤트 ( server-side )가 있습니다. 절차의 정리/자동 완성을 수행하십시오.

이것이 PHP 환경에서 가능한지 확실하지 않습니다 .. 1 단계가 완료되고 cron 작업이 주기적으로 실행되면 타임 스탬프를 저장할 수 있다고 가정합니다 그러나 먼저 타임 스탬프와 비교하여 확인 = 자동 완성 전에 설정된 시간이 지 났는지 확인합니다 ..

0
Gabriele Petrioli