Нужно ли что-то конкретное, чтобы функция местоположения заголовка работала правильно? - PullRequest
0 голосов
/ 21 января 2019

По какой-то причине мой код пропускает несколько частей, даже если они кажутся правильными.Код просто выполняет последнюю функцию заголовка.Кажется, проблема в этих заголовках.Как заставить это работать?

<?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");
 }
}

if (array_key_exists("checkbox", $_POST) && !empty($_POST['checkbox'])) {
  foreach ($shipvalues as $shipvalue) {
    if(empty($_POST[$shipvalue])) {
     header("Location: http://example.com?errors=true");
    }
   }
 }

header("Location: http://example.com");
exit;

1 Ответ

0 голосов
/ 21 января 2019

Следующий код должен работать:

<?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;

Причина, по которой это было бы лучше и эффективнее, заключается в том, что вы останавливаете все операции после обнаружения ошибки, что приводит к отсутствию ненужной обработки.

Это также рекомендуется, так как если сервер работает быстрее, чем сетевое соединение, тогда ваш сервер будет продолжать работу с кодом, перезаписывающим функцию заголовка. Это случилось со мной однажды, когда я тестировал его в другой сети.

Если вы хотите знать все ошибки, тогда я предлагаю вам создать массив ошибок и заполнить его ошибками, а затем проверить, пусто ли оно, и соответственно перенаправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...