Подтвердить что ты не робот

Как перенаправить на ту же страницу в PHP

Как я могу перенаправить на ту же страницу с помощью PHP?

Например, локально мой веб-адрес:

http://localhost/myweb/index.php

Как я могу перенаправить на своем сайте на другую страницу, скажем:

header("Location: clients.php");

Я знаю, что это может быть неправильно, но мне действительно нужно поставить все это? Что, если позже это не http://localhost/?

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

4b9b3361

Ответ 1

Существует несколько различных $_SERVER (docs), которые возвращают информацию о текущей странице, но мой предпочтительный метод - использовать $_SERVER['HTTP_HOST']:

header("Location: " . "http://" . $_SERVER['HTTP_HOST'] . $location);

где $location - путь после домена, начиная с /.

Ответ 2

Мой предпочтительный метод для перезагрузки одной и той же страницы - $_SERVER ['PHP_SELF']

header('Location: '.$_SERVER['PHP_SELF']);
die;

Не забывайте умирать или выходить после своего заголовка();

Изменить: (Спасибо @RafaelBarros)

Если строка запроса также необходима, используйте

header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);
die;

Ответ 3

Еще один элегантный -

header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
exit;

Ответ 4

Чтобы быть универсальным, я использую это:

$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' 
    || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
header('Location: '.$protocol.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]);
exit;

Мне нравится $_SERVER[REQUEST_URI], потому что он обновляет mod_rewrite и/или любые переменные GET.

обнаружение https из fooobar.com/questions/8219/...

Ответ 5

header('Location: '.$_SERVER['PHP_SELF']);  

также будет работать

Ответ 6

Я использую правильно в localhost:

header('0');