Francamente, está causando demasiada molestia en v1.0 para tener una funcionalidad que requiere tres presentaciones de formularios, con $_SESSION
datos de sesión que contienen todos los elementos intermedios, solo para que un usuario inicie una operación, luego abra una segunda pestaña y realice una segunda operación que realiza un pisoteo sobre los datos de la sesión.¿Cómo restringir mi aplicación a una sola pestaña del navegador?
Dudo que esto sea malicioso (pero no puedo descontarlo). Lo más probable es que el usuario inicie una operación, se interrumpa, olvide que comenzó o no puede encontrar la pestaña original, así que comienza de nuevo (luego encuentra la pestaña original e intenta completar la operación por segunda vez).
Como estoy programando en PHP, puedo detectar la existencia de datos de sesión en el envío del formulario (¿cómo podría hacerlo con JS si el usuario abre otra pestaña? Supongo que necesitaría Ajax, ¿no?) .
Por lo tanto, cada vez que inicio una operación, busco un indicador en los datos de la sesión y si lo configuro lo recargo a "Lo siento, Dave. Me temo que no puedo hacer esa página, de lo contrario configuro la bandera y continúo (recordando borrarla al final de la operación).
Supongo que eso funcionaría, pero:
1) ¿Es aceptable restringir las aplicaciones del navegador a una única pestaña/instancia?
2) ¿Debo intentar permitir varias instancias en v2.0?
¿Algún otro comentario, ayuda o consejo?
Si tiene este problema, probablemente también tenga problemas para que el usuario haga clic en el botón Atrás del navegador y luego interactúe con una página anterior, incluso sin varias pestañas. No puede suponer que '$ _SESSION' siempre está sincronizado con el navegador. – Wyzard