我花了最后几个小时试图让我的会话工作,我遇到的问题是我有这个会话检查,它在页面打开时运行,一切正常等等...
但是,当用户单击页面上的提交时,它也会运行相同的会话检查,从而导致页面出错。
以下是会话检查:
$estate_id="";
if (isset($_SESSION['addon_estate_id'])) {
$estate_id = $_SESSION['addon_estate_id'];
unset($_SESSION['addon_estate_id']);
} else {
$reg_error = "You need to select a house first.";
$_SESSION['error'] = $reg_error;
header("Location: addons.php");
exit;
}
以下是用户点击提交按钮时运行的代码:
if (isset($_POST['add_browse_submit'])) {
$addon_selected_id = $_POST['addon_hidden_id'];
$addon_hidden_estate_id = $_POST['addon_hidden_estate_id'];
$_SESSION['addon_sess_id'] = $addon_selected_id;
$_SESSION['addon_estate_detail_id'] = $addon_hidden_estate_id;
header('Location: addon_detail.php');
exit;
}
基本上发生的事情是当用户点击提交按钮时,它还会运行session check
代码,从而导致reg_error
。如果我在会话检查else
中注释掉代码,那么一切都很好,脚本将按原样转到addon_detail.php
。
为什么会这样做?
由于
答案 0 :(得分:1)
我认为你的邮政处理代码低于会话检查。如果您移动上面的帖子检查,然后确保代码实际设置$_SESSION['addon_estate_id']
,那么它不会出错。
这假设这是你的目标。我原以为你会在示例中设置$_SESSION['addon_estate_id']
,但谁可以告诉?
答案 1 :(得分:0)
第一次访问该页面(假设用户已设置$_SESSION['addon_estate_id']
)将清除该变量并将其存储在$estate_id
中。第二次访问(在提交表单后)看到{{1没有设置,所以它会抛出一个错误。
你没有在第二个区块中引用$_SESSION['addon_estate_id']
,所以也许你不需要它?你有没有理由在第一页访问时取消它?