我取消设置后设置$ _POST

时间:2015-11-10 07:34:38

标签: php post

在这里,我已经对复选框进行了验证。 首先,当我选择提交按钮时,它显示验证错误。 之后,当我点击“selectall”按钮时,它会进入提交按钮上的更新查询。 这意味着,$ _POST被设置。 虽然它通过“selectall”按钮进入更新查询,但我已经取消了该提交按钮。 为什么会这样?

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[]">

2 个答案:

答案 0 :(得分:0)

如果您想取消设置所有$_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)
}

答案 1 :(得分:0)

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

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