我有一个奇怪的问题。
我有一个我管理的车展网站的注册脚本,但旧代码无缘无故被破坏。我知道它以前有效,但现在不行。
我正在正确设置会话变量。我将整个变量数组保存到会话中,并且我知道一旦表单被提交,会话就会工作,因为表单会重新加载到新页面,并且我会显示注册信息以进行确认。但是,该脚本随后会继续到 PayPal 页面,在该页面中它会引导用户完成付款流程。然后,它会在付款过程完成后重定向回将注册信息提交到 MySQL 数据库的站点。
但是,当用户返回到提交数据的确认页面时,会话变量是完全空白的。我已经回显了所有变量,但那里什么都没有。
为了测试它的中断位置,我在填写表单后在您被带到的页面上放置了一个链接,该链接直接链接到信息被转储到 SQL 服务器的确认页面。当您链接链接时,信息仍然存在。但是,如果您要使用相同的 URL 并将其粘贴到地址栏中(也就是不使用链接),则变量为空白。
所以在这一点上,我不知道为什么当您链接并单击页面时变量很好,但当您将相同的 url 传递到地址栏中而不单击链接时却没有。会话在每个页面上开始,并且都在同一个域名上。
有什么帮助吗?!
===== 编辑 ===== 测试代码(给出一个粗略的想法)
我如何设置会话变量。session_start(); 在加载此站点上的每个页面时调用该函数,以便在其他页面之间保持连续性:
$storedVars = array(1 => $name, $email, $state, $year, $make, $model, $generation, $color, $now, $paymentType);
$_SESSION['registration']=$storedVars;
在将信息发送到数据库的 PayPal 之后的确认页面上,运行以下代码(同样,session_start();已调用):
$storedVars = $_SESSION['registration'];
$name = $storedVars[1];
$email = $storedVars[2];
$state = $storedVars[3];
$year = $storedVars[4];
$make = $storedVars[5];
$model = $storedVars[6];
$generation = $storedVars[7];
$color = $storedVars[8];
$now = $storedVars[9];
第 10 个数组变量,paymentType,此时不需要,因为它只用于表单提交后的页面)
在按照贝宝上的步骤或在填写表格后将正确的 URL 粘贴到地址栏中后,在确认页面上回显这些变量时,什么都没有。但是.. 当您在提交表单后单击数据验证页面上的链接时,变量仍然存在。