在这里,我对复选框进行了验证。首先,当我选择提交按钮时,它显示验证错误。之后,当我点击"全选"按钮时,它会进入提交按钮上的更新查询。这意味着设置了$_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。