Был старый-старый хак, думаю, что он работает и сейчас
<input type = hidden name = cbx value = 0>
<input type = checkbox name = cbx value = 1>
Работает, как я понимаю, за счет того, что последующее значение затирает предыдущее.
То есть, запрос выглядит как
..&cbx=0&cbx=1&...
в итоге в скрипте получается что-то вроде идущих подряд
$_GET['cbx'] = 0;
$_GET['cbx'] = 1;
И в итоге остается только один.
Отсюда становится понятно, что важно соблюдать порядок - хидден должен идти всегда первым.