【问题标题】:zend framework 2 random numbers and sessionsZend 框架 2 随机数和会话
【发布时间】:2014-04-28 14:56:28
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php security session zend-framework2


    【解决方案1】:

    您是否在加载表单(通过 POST 填写和提交的表单)的同一控制器操作中创建随机整数?

    如果是,那么会发生这种情况-

    1. 随机整数已创建。
    2. 此整数作为“键”存储在会话数组中。
    3. 数据库中的值被设置为此“数组键”的“值”。
    4. 表单加载,表单已填写并提交。
    5. 表单的action属性与controller-action相同。
    6. 所以在表单提交后,代码再次开始生成随机整数(这次是新的),但从数据库中获取的值是相同的。

    这就是为什么只改变随机整数而不改变数据库值的原因。

    现在如果上述情况不是这样的话, 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.

    希望对你有帮助。

    【讨论】:

    • 是的,我在同一个控制器动作中创建了随机整数,但我有点像:SomeAcion{ If (isPost()){ getSessionValue() } else { setSessionValue() } } 我不明白第二种情况。感谢您的回复!
    • 我的意思是提交后是否再次调用setSessionValue()。但是没关系。如果您可以在提交之前和提交之后 print_r() 会话变量,这可能会有所帮助。如果可能,请在问题中包含数组。
    猜你喜欢
    • 2011-05-26
    • 1970-01-01
    • 2017-09-15
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多