脚本运行其他代码不应该

时间:2012-11-20 00:17:16

标签: php

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

以下是会话检查:

$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

为什么会这样做?

由于

2 个答案:

答案 0 :(得分:1)

我认为你的邮政处理代码低于会话检查。如果您移动上面的帖子检查,然后确保代码实际设置$_SESSION['addon_estate_id'],那么它不会出错。

这假设这是你的目标。我原以为你会在示例中设置$_SESSION['addon_estate_id'],但谁可以告诉?

答案 1 :(得分:0)

第一次访问该页面(假设用户已设置$_SESSION['addon_estate_id'])将清除该变量并将其存储在$estate_id中。第二次访问(在提交表单后)看到{{1没有设置,所以它会抛出一个错误。

你没有在第二个区块中引用$_SESSION['addon_estate_id'],所以也许你不需要它?你有没有理由在第一页访问时取消它?