Для этого у вас должна быть какая-то причина, чтобы решить при отображении формы, установлен ли флажок или нет. Это ваше начальное состояние.
Поскольку мы не знаем, как вы решаете это, почему бы не добавить скрытое поле со значением, подобным этому, установив значение для соответствия, если флажок установлен (т. Е. Установлен / не установлен):
<input type="hidden" name="cb_hidden" value="<?php print $checkedOrNot; ?>" />
Мы не знаем, в каком состоянии установлен флажок, однако это должно решить простую идею абстрактно
<?php
$checkedOrNot = '';
if(/* the condition that decides if things are checked */) {
$checkedOrNot = 'checked';
}
?><input type="checkbox" name="cb_name" checked="<?php print $checkedOrNot; ?>" />
<input type="hidden" name="cb_hidden" value="<?php print $checkedOrNot; ?>" />
Тогда, когда вы получите ваши данные
<?php
if(isset($_POST['cb_name']) && $_POST['cb_hidden'] != 'checked') {
//if the checkbox was changed to checked
} elseif(!isset($_POST['cb_name']) && $_POST['cb_hidden'] == 'checked') {
//if the checkbox was changed to unchecked
}
Это решение без необходимости в предыдущем состоянии