我早些时候写了一篇关于这个的帖子,并得到了很好的回复,纠正了我的一个错误,我认为这解决了问题。不幸的是它没有,而且我的旧帖子很混乱,我将重新发布这个问题,但是有了额外的视角,我已经在这个问题上挣扎了好一阵子。
代码(简化):
<?php
session_start();
if (!$_SESSION["companyid"]) {
header("location: http://www.somepage.com");
}
mysql_connect("localhost", "name", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$companyid = $_SESSION["companyid"];
$_SESSION["youtubeurl"] = mysql_real_escape_string($_POST["youtubeurl"]);
$_SESSION["logourl"] = mysql_real_escape_string($_POST["logourl"]);
$_SESSION["plan1head"] = mysql_real_escape_string($_POST["plan1head"]);
$_SESSION["plan1description"] = mysql_real_escape_string($_POST["plan1description"]);
$_SESSION["plan1headline1"] = mysql_real_escape_string($_POST["plan1headline1"]);
$_SESSION["plan1price1"] = mysql_real_escape_string($_POST["plan1price1"]);
$_SESSION["plan1headline2"] = mysql_real_escape_string($_POST["plan1headline2"]);
$_SESSION["plan1price2"] = mysql_real_escape_string($_POST["plan1price2"]);
$_SESSION["plan1price1type"] = mysql_real_escape_string($_POST["plan1price1type"]);
$_SESSION["plan1price2type"] = mysql_real_escape_string($_POST["plan1price2type"]);
if(isset($_POST["submitpreview"])) {
$companyid = $_SESSION["companyid"];
$youtubeurl = $_SESSION["youtubeurl"];
$logourl = $_SESSION["logourl"];
$plan1head = $_SESSION["plan1head"];
$plan1description = $_SESSION["plan1description"];
$plan1headline1 = $_SESSION["plan1headline1"];
$plan1price1 = $_SESSION["plan1price1"];
$plan1headline2 = $_SESSION["plan1headline2"];
$plan1price2 = $_SESSION["plan1price2"];
$plan1price1type = $_SESSION["plan1price1type"];
$plan1price2type = $_SESSION["plan1price2type"];
}
?>
现在,涉及到三个页面/实例:
- 带有将变量传递到预览页面的表单的页面
- 预览页面
- 提交的预览页面(意思是页面被刷新)
一个人有自己的页面,其中包含各种文本字段和下拉菜单(第 1 页)。他们可以更新此页面,当他们填写表单并提交时,这些变量将传递到预览页面。如果他们喜欢预览页面,则确认(提交执行“submitpreview”的表单)。
这是我的问题:表单填写的所有会话变量(除了公司 ID 之外的所有变量,当他们第一次登录时存储在会话中)会立即转储到会话变量中。我已经在预览页面的底部回显了这些会话变量(只是为了确认它们此时不是空的),当我到达预览页面时,它们的内容会被适当地回显。但是,当用户确认更改并设置了提交预览时,突然这些会话变量为空。也就是说,表单变量填充的所有会话变量都是空的。除了 companyid 变量之外,在页面刷新之前很好地回显的会话变量都消失了。由于 companyid 会话变量仍然很好,所以我知道(1)我的服务器上的会话必须正常工作,(2)问题在于将表单变量转储到会话中或检索这些变量的代码。关于为什么会发生这种情况的任何理论?
这让我很沮丧。感谢您在这个问题上对我的耐心,并感谢您提供的任何帮助。