Чистая передача значений между запросами (в сеансе, как параметры GET / POST ...?) - PullRequest
0 голосов
/ 20 марта 2011

Мне не нравится явно управлять значениями в сеансе, и я не могу себе представить, что я один в этом ... поэтому я хотел получить обратную связь:

  1. Как другие программисты / платформы / фреймворки справляются с этим
  2. Метод, который я использую (объяснено ниже)

Метод, который я использую, включает скрипт типа контроллера, который поддерживает добавление переменной в сеанс, когда я знаю, что она может понадобиться в следующем запросе ... и автоматически удаляет ее впоследствии (TTL контролируется с помощью счетчика).

Например,

  • Запрос 1 - скрипт добавляет значение в сеанс с ключом selectedValue
  • Запрос 2 - скрипт читает selectedValue из сеанса
  • Запрос 3 - selectedValue ушел из сеанса (это нормально, потому что он больше не нужен)

Это самый чистый способ восприятия передачи значений через различные запросы, в отличие от хранения глобальных переменных в сеансе (например, идентифицированного идентификатора пользователя).

В этом сценарии обновление страницы игнорируется, и если значение должно быть передано для дальнейших запросов, его необходимо установить снова.

Ответы [ 2 ]

1 голос
/ 20 марта 2011

Я пошел по скрытому полевому маршруту после неудачного опыта отладки проблем, связанных с $ _SESSION, однако теперь, когда я стал более опытным, я думаю, что переменные сеанса - лучший путь. Я бы предпочел явно управлять значениями в $ _SESSION, чем делать по существу то же самое со скрытыми полями, где вам придется перекодировать эту информацию при каждой загрузке страницы, если вы хотите сохранить ее при многократном обновлении.

1 голос
/ 20 марта 2011

Вместо того, чтобы хранить его в сеансе, вы также можете просто передать его в качестве параметра запроса для последующего запроса. Предполагая, что вы используете формы для этого, <input type="hidden"> полезно для этого.

Е.Г.

<form action="confirm.php" method="post">
    <input type="submit" name="confirm" value="Confirm" />
    <input type="hidden" name="foo" value="<?=htmlspecialchars($foo)?>" />
</form>

Вы можете сохранить его на $_POST['foo'].

...