PHP «Страница не перенаправляется должным образом» после добавления двух функций заголовка

#php #redirect #browser

#php #перенаправление #браузер

Вопрос:

Я пытаюсь проверить URL, и если в нем отсутствует какой-либо из моих параметров get, я пытаюсь перенаправить, и есть вторая функция, которая проверяет, не заканчивается ли параметр папки на «/», и добавляет его. Но по какой-то причине я получаю ошибку «Страница не перенаправляется должным образом» в Firefox и Chrome для главной целевой страницы без параметров. вот мой код

 <?php
//checking if none of the methods are present and assigning them to url
if (!isset($_GET['page']) || !isset($_GET['sort']) || !isset($_GET['type']) || !isset($_GET['folder']) || $_GET['folder']==="/" || $_GET['folder']==="\" || $_GET['folder']==="uploads") {
    header('location:' . URL .'?page=0amp;sort=nameamp;type=ascamp;folder=uploads/');
}
//Checking if core direcotry doesnt exists and creating it
if(!is_dir("uploads")){
  mkdir("uploads");
}

function endsWith($haystack, $needle)
{
    $length = strlen($needle);
    if ($length == 0) {
        return true;
    }
    return (substr($haystack, -$length) === $needle);
}
if (!endsWith($_GET['folder'], "/")) {
    $boom = explode("/", $_GET['folder']);
    $newurl = end($boom);
    header('location:' . URL .$newurl.'/');
}
  

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

Комментарии:

1. Вы должны вызывать exit; после любого изменения направления заголовка. Перенаправление не препятствует завершению текущего кода, иногда с неожиданными побочными эффектами.

Ответ №1:

Изменил вторую функцию на эту. И теперь это работает

 function endsWith($haystack, $needle)
{
    $length = strlen($needle);
    if ($length == 0) {
        return true;
    }
    return (substr($haystack, -$length) === $needle);
}
if (isset($_GET['folder'])) {
  if (!endsWith($_GET['folder'], "/")) {
    $boom = explode("/", $_GET['folder']);
    $newurl = end($boom);
    header('location: ' . URL .$newurl.'/');
  }
}