I've done a booking application done using CakePHP which involves a few steps before the checkout page. In between these steps I store the information in the session.
How it works is that Step 1 requires them to fill in their information. When going to Step 2, the information in Step 1 will be saved into the session object. As they proceed in the other steps, the process repeats. At the end when they checkout, all the data is then saved to the database.
Everything works great if the user opens one instance of the application in the browser. But once they have another page or another tab opened for the same application in the same browser, problem happens.
Let's say they have two instance of the application open in Tab A and Tab B. In Tab A they entered the details in Step 1 and proceed to Step 2. Then the user does the same thing in Tab B.
At the last step when the user does a checkout, information in Tab A is the same as in Tab B.
Right now, I can only think the best way is to prevent the user from opening the same application in two browser instance.
Is there a way to detect and prompt the user to complete the booking form in Tab A first when they try to open another instance in Tab B?