Перенаправление страницы PHP [дубликат]


На этот вопрос уже есть ответ здесь:

Может ли PHP выполнить перенаправляющий вызов после выполнения функции? Я создаю функцию, по завершении которой я хочу, чтобы она перенаправлялась в файл, расположенный в той же корневой папке. Можно ли это сделать?

 if {
      //i am using echo here
 }

 else if ($_SESSION['qnum'] > 10) { 
            session_destroy();
            echo "Some error occured.";
            //redirect to user.php
        }
Author: Lance Roberts, 2010-01-21

15 answers

Да, вы бы использовали функцию заголовка .

header("Location: http://www.yourwebsite.com/user.php"); /* Redirect browser */
exit();

Рекомендуется вызывать exit() сразу после слов, чтобы код под ним не выполнялся.

Также, из документации:

Помните, что заголовок() должен быть вызван перед отправкой любого фактического вывода, либо обычными тегами HTML, пустыми строками в файле, либо из PHP. Это очень распространенная ошибка - читать код с помощью функций include() или require() или другой функции доступа к файлам и иметь пробелы или пустые строки, которые выводятся перед вызовом функции header(). Та же проблема возникает при использовании одного файла PHP/HTML.

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

 242
Author: bkildow, 2010-01-21 20:17:58

Использование javascript в качестве надежного средства обеспечит перенаправление пользователя (даже если заголовки уже отправлены). Вот, пожалуйста:

// $url should be an absolute url
function redirect($url){
    if (headers_sent()){
      die('<script type="text/javascript">window.location=\''.$url.'\';</script‌​>');
    }else{
      header('Location: ' . $url);
      die();
    }    
}

Если вам нужно правильно обрабатывать относительные пути, я написал для этого функцию (но это выходит за рамки вопроса).

 45
Author: brianreavis, 2018-01-22 20:00:11

Простой способ заключается в использовании:

  echo '<script>window.location.href = "the-target-page.php";</script>';
 11
Author: CrownFord, 2015-07-04 14:18:57
   $url='the/url/you/want/to/go';
   echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$url.'">';

Это прекрасно работает для меня.

 10
Author: Thusitha Sumanadasa, 2013-06-12 05:32:43
header( "Location: http://www.domain.com/user.php" );

Но вы не можете сначала сделать эхо, а затем перенаправить.

 7
Author: code-zoop, 2010-01-21 20:57:33
<?php

    http_redirect("relpath", array("name" => "value"), true, HTTP_REDIRECT_PERM);

?>
 3
Author: user3164291, 2015-08-04 12:35:54

Да.

По сути, пока ничего не выводится, вы можете делать все, что захотите (прервать сеанс, удалить пользовательские файлы cookie, вычислить число Pi до "n" цифр и т.д.) До выдачи заголовка местоположения.

 0
Author: John Parker, 2010-01-21 19:56:06

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

 0
Author: Leprosy, 2010-01-21 20:46:41

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

JavaScript является альтернативой, если вы уже отправили содержимое файла.

 0
Author: ServAce85, 2011-11-22 11:44:56

На самом деле, я нашел это в коде cms на основе php.

Перенаправление ('?модуль=блог', 0);

Так что это возможно. В этом случае вы вошли в систему на уровне администратора, так что никакого вреда, никакого фола (я полагаю). первая часть - это URL-адрес, а вторая? Я не могу найти никакой документации о том, для чего предназначено целое число, но я предполагаю, что это либо время, либо данные, поскольку они прикреплены к форме.

Я тоже хотел обновить страницу после события, и размещение этого в лучшем месте сработало вышел хорошо.

 0
Author: llothcat, 2013-07-13 08:15:17

Вы можете использовать этот код для перенаправления в php

<?php
/* Redirect browser */
header("Location: http://example.com/");
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
 0
Author: Mahdiyah Al-kaff, 2013-12-15 11:55:52

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

 <?php
 ob_start(); //first line
 ... do some work here
 ... do some more
 header("Location: http://www.yourwebsite.com/user.php"); 
 exit();
 ... do some work here
 ... do some more
 0
Author: nixxx, 2016-05-26 17:31:37

Как указано в nixxx добавление ob_start() перед добавлением любого кода php предотвратит ошибку уже отправленных заголовков.

Это сработало для меня

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

echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$redirect_url.'">';
 0
Author: user2634873, 2017-08-08 09:21:44

Функция заголовка() выполняет следующее:

header("Location: user.php");
 -1
Author: , 2010-01-21 19:55:52

Я спрашиваю об этом и нахожу соответствующий ответ в

Https://stackoverflow.com/questions/13539752/redirect-function/13539808

function redirect_url($path)
{
  header("location:".$path);
  exit;
}
 -3
Author: user1972007, 2017-05-23 12:02:48