我有一个PHP脚本(脚本a ),它对数据库进行查询,将结果存储在会话变量中,并生成一个HTML页面,其中包含允许用户发布提交的表单(可选)。提交后,存储在会话变量中的结果用于在另一个脚本(脚本B)中进行处理。
由于HTML页面不是唯一的,用户可能会打开多个选项卡,显示由脚本A生成的不同页面。由于session变量只能保存最新生成的页面的数据,因此当用户单击前面的任何选项卡并进行提交时,将使用错误的会话数据集。
防止这种情况发生的一种方法是强制页面在提交之前自动重新加载。在脚本B中重新查询数据库之外,是否有更好的和安全的方法来做到这一点?生成一个秘密令牌及其散列
将秘密令牌添加到您的$_SESSION
。
将哈希值作为隐藏的输入元素添加到表单中。
在提交时,从$_SESSION
中的秘密令牌创建哈希。
将其与提交的哈希值进行比较。如果不匹配,您就知道该表单不适合您的会话。
你可以扩展它,通过在你的$_SESSION
中的哈希键的数据:
$_SESSION[$hash] = your form data
对数据库进行查询的PHP脚本(脚本a),将结果存储在会话变量
中
为什么?存储已经拥有的数据有什么意义?
提交后,存储在会话变量中的结果用于在另一个脚本(脚本B)中进行处理
为什么?为什么你不能直接提交表格给B?
我认为在这里使用会话没有任何意义。或者至少根据你目前的描述。