0

我花了最后几个小时试图让我的会话正常工作,我遇到的问题是我有这个会话检查,它在页面打开时运行,一切正常等等......
但是,当用户点击提交时在页面上,它也运行相同的会话检查,导致页面抛出错误。

这是会话检查:

$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原样执行。

有什么理由这样做吗?

谢谢

4

2 回答 2

1

我假设您的后期处理代码低于会话检查。如果您将 post check 移到上面,然后确保代码实际上正在设置,$_SESSION['addon_estate_id']那么它就不会出错。

假设这是您的目标。我会假设您会$_SESSION['addon_estate_id']在示例中设置,但谁能告诉?

于 2012-11-20T00:23:34.710 回答
0

第一次访问页面(假设用户已经$_SESSION['addon_estate_id']设置,将清除该变量并将其存储在 中$estate_id。第二次访问(提交表单后)看到$_SESSION['addon_estate_id']未设置,因此会引发错误。

您没有$estate_id在第二个块中引用,所以也许您不需要它?您在第一页访问时取消设置它有什么原因吗?

于 2012-11-20T00:23:21.167 回答