У меня есть приложение, которое использует несколько различных форм для выполнения различных действий. Некоторые из форм получают доступ к данным из представлений в других формах.Как управлять несколькими вкладками с помощью PHP
Например: пользователь размещает новый заказ в одной форме и добавляет новый элемент в другой, элементы могут быть добавлены в заказы.
Таким образом, это приводит к тому, что пользователь может добавлять заказ и понимать, что элемент должен быть добавлен первым. Поэтому, естественно, будет открыта новая вкладка, вместо того чтобы потерять информацию, добавленную в заказ.
В настоящее время у меня есть переменная $_SESSION['form']
, позволяющая скрипту обработки формы знать, какую функцию использовать после отправки формы. Проблема в том, что при открытии нескольких вкладок это значение будет перезаписано последней открытой вкладкой. У меня было несколько идей о том, как справиться с этим, но пока ничего не идеального.
Идея одна: использовать хэш-значение для определения различных загрузки страницы и отправить хэш как скрытое поле
$hash = $_POST['hash'];
$form = $_SESSION[$hash]['form'];
Издание: сессия перегрузки. Этот метод будет создавать новое значение сеанса каждый раз, когда форма загружается, чтобы однозначно идентифицировать отправку формы. Я могу отключить значение при отправке, но что делать, если страница формы загружена и никогда не отправляется, или если страница обновлена. Я бы предпочел сохранить сессию как можно более легкую.
Идея два: использовать AJAX, чтобы установить значение $_SESSION['form']
при нажатии отправить
Issue: пользователи, которые не используют JS. Я хотел бы иметь возможность продолжать оказывать поддержку пользователям, которые предпочитают отключать JS, если это возможно, хотя этот метод кажется, что он может быть немного лучше. Однако я не уверен, что здесь могут быть проблемы с совместимостью с браузером.
Идея три: создать хэш-идентификатор для каждого окна
Проблемы: PHP не может различать между вкладками браузера. Это было бы самым идеальным на сегодняшний день.
Idea four: разделите скрипт обработки формы на несколько файлов, тем самым устраняя необходимость в значении, чтобы выбрать, какую функцию использовать.
Проблема: неудобно, но я открыт для этой идеи, если она окажется единственным реальным методом для решения этой проблемы. Однако для этого потребуется справедливая реструктуризация.
Любые идеи о том, как безопасно управлять различными вкладками и информацией о сеансах в PHP?
мне нравится идея ограничения до ~ 100, что, скорее всего, позволит приложению масштабироваться довольно хорошо. Моя забота заключалась не столько в размере одной сессии (хотя это отличная точка), а в сумме всех сеансов пользователей (то есть, что, если пользователи 10k вошли в систему). – foochow