我正在构建一个结合 ajax 和 PHP 的站点,以创建在页面内加载/验证/提交的动态表单。我正在使用 PHP 会话变量与自定义处理程序、$.post 和 $().load 的组合来完成此操作。我在单独的 php 页面中构建表单(它们非常大),然后将它们加载到我的主页的一部分中。
在我的主页顶部,我开始一个这样的会话:
<?php
require("inc/SecureSession.php"); // Custom handlers
session_save_path($_SERVER['TEMP']); session_start();
?>
然后在每个表单页面中,我启动一个会话并生成一个令牌变量,如下所示:
<?php
require("inc/SecureSession.php"); // Custom handlers
session_save_path($_SERVER['TEMP']); session_start();
$_SESSION['token'] = rand();
?>
此令牌变量作为隐藏字段插入表单页面底部,并应写入会话。
但是,我发现在动态加载(或发布)的页面中设置的会话变量似乎并没有始终保持设置。它们在表单页面的范围内工作,但并不总是返回到主页。我认为这可能是因为他们实际上并没有访问正确的会话,但似乎表单页面之外的所有会话变量都可以在表单页面中访问。
所以我很难过。我正在使用的 PHP 处理程序是这里的一个:http ://www.zimuel.it/en/encrypt-php-session-data/
编辑:当我直接加载其中一个表单页面时,它会写入 100% 的时间。只有当我通过 jQuery 加载表单时,它才会变得不稳定。
Edit2:问题不在于我以错误的顺序声明代码。我做了一些研究,发现我应该在开始会话之前声明保存路径和处理函数。问题似乎是我用“