在请求之间干净地传递值(在会话中,作为GET / POST参数......?)

时间:2011-03-20 14:18:18

标签: php frameworks session-variables web-frameworks

我不喜欢在会话中明确管理值,我无法想象我是独自一人......所以我想得到反馈:

  1. 其他程序员/平台/框架如何处理此问题
  2. 我使用的方法(下面解释)
  3. 我使用的方法涉及一个控制器类型的脚本,当我知道在下一个请求中可能需要它时,它支持在会话中添加变量......然后自动删除它(通过计数器控制TTL)。 / p>

    例如,

    • 请求1 - 脚本使用键selectedValue
    • 为会话添加值
    • 请求2 - 脚本从会话中读取selectedValue
    • 请求3 - selectedValue已从会话中消失(这是可以的,因为不再需要它)

    这是我能够通过不同请求想到传递值的最简洁方法,而不是在会话中存储全局变量(例如,经过身份验证的用户ID)。 / p>

    在这种情况下,页面刷新被忽略,如果需要将值传递给其他请求,则需要再次设置它。

2 个答案:

答案 0 :(得分:1)

您也可以将其作为请求参数传递给后续请求,而不是将其存储在会话中。假设您正在使用表单,<input type="hidden">对此有用。

E.g。

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

您可以按$_POST['foo']保留它。

答案 1 :(得分:1)

我在调试$ _SESSION相关问题后经历了隐藏的现场路线,但是现在我更有经验我认为会话变量是更好的方法。我宁愿显式管理$ _SESSION中的值,而不是基本上与隐藏字段相同的事情,如果你想在多次刷新时保留它,你必须在每个页面加载时重新编码该信息。