Следующий код должен работать:
<?php
$values = [
'orderperson',
'address',
'postnumber',
'city',
'phone',
'email'
];
$shipvalues = [
'recipient',
'address1',
'postnumber1',
'city1',
'phone1',
'email1'
];
foreach($values as $value) {
if(empty($_POST[$value])) {
header("Location: http://example.com?errors=true");
exit;
}
}
if (array_key_exists("checkbox", $_POST) && !empty($_POST['checkbox'])) {
foreach ($shipvalues as $shipvalue) {
if(empty($_POST[$shipvalue])) {
header("Location: http://example.com?errors=true");
exit;
}
}
}
header("Location: http://example.com");
exit;
Причина, по которой это было бы лучше и эффективнее, заключается в том, что вы останавливаете все операции после обнаружения ошибки, что приводит к отсутствию ненужной обработки.
Это также рекомендуется, так как если сервер работает быстрее, чем сетевое соединение, тогда ваш сервер будет продолжать работу с кодом, перезаписывающим функцию заголовка. Это случилось со мной однажды, когда я тестировал его в другой сети.
Если вы хотите знать все ошибки, тогда я предлагаю вам создать массив ошибок и заполнить его ошибками, а затем проверить, пусто ли оно, и соответственно перенаправить.