#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.'/');
}
}