zend框架2随机数和会话

时间:2014-04-28 14:56:29

标签: php security session zend-framework2

我正在使用zend框架2,我遇到的问题是我生成一个随机整数(将其保存在变量中)然后存储在会话中(作为数组中的键,在数组的值中)从数据库中分配一个值),这是在GET方法中完成的。 然后我返回一个使用此随机值的表单。 我在视图上使用表单输入一些值,然后用户使用POST方法提交表单。 我遇到的问题是会话中设置的随机值在POST发生时会改变其值,但与该键对应的值不会改变。

我这样做是为了避免直接引用对象。

我不明白为什么值会发生变化,这与zend中的安全性有关吗?

感谢您的帮助,对不起我的英语, 胡

1 个答案:

答案 0 :(得分:0)

您是否在同一个控制器动作中创建随机整数,该动作也会加载表单(填写并通过POST提交的表单)?

如果是,那么这就是发生的事情 -

  1. 创建随机整数。
  2. 此整数作为“密钥”存储在会话数组中。
  3. 将数据库中的值设置为此“array-key”的“值”。
  4. 表格加载,表格填写并提交。
  5. 表单的操作属性与controller-action相同。
  6. 因此,在表单提交后,代码会再次生成随机整数(此时为new),但从数据库中获取的值是相同的。
  7. 这就是为什么只更改随机整数而不是数据库值。

    现在如果上述情况不是这样,那么,  please do check whether the random integer generation code is called after form submit or not. If yes then that's the reason for your new integer

    我希望它有所帮助。