$_POST在我取消设置后设置


$_POST setted after I unset it

在这里,我对复选框进行了验证。首先,当我选择提交按钮时,它显示验证错误。之后,当我点击"全选"按钮时,它会进入提交按钮上的更新查询。这意味着设置了$_POST。我已经取消了提交按钮的设置,尽管它是通过"全选"按钮进行更新查询的。为什么会发生这种情况?

if(!empty($_SESSION['id']) && isset($_POST['processorder']))
{
        echo "hello";exit;
        $chk = $_SESSION['id'];
        $query="update order_details set process_order='1' where id IN(".implode(',',$chk).")";
        //mysql_query($query) or die(mysql_error());
    unset($_SESSION['id']);
    unset($_SESSION['on']);
    $_SESSION['flash']['success'] = 'Order processed successfully.';
    header('Location: '.$_SERVER['REQUEST_URI']);
    die();
}
if(empty($_SESSION['id']) && $_POST['processorder'])
{
    print_r($_POST);
    $error = "Please select an Order(s)..!!";
    unset($_POST['processorder']);
    echo "<br>";
    print_r($_POST);
}
<input type="button" name="selectpage" value="Select All Page" onclick="selectall()"/>
<input type="submit" id="processorder" name="processorder" value="Process Order" class="submit-green"/>
<input type="checkbox" name="id[]">

如果要取消设置所有$_POST值,则不应仅取消设置$_POST['processorder']

if (isset($_SESSION['id']) && $_SERVER['REQUEST_METHOD'] == 'POST') {
    // to unset processorder
    unset($_POST['processorder']);
    var_dump($_POST);
    // To unset all $_POST values
    unset($_POST);
    var_dump($_POST); // Will return bool(false)
}

由于您有unset($_SESSION['id']);if(empty($_SESSION['id']))将返回TRUE。

发生这种情况是因为if(empty(unset($var)))将始终返回TRUE。