Перенаправление страницы PHP

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

if { //i am using echo here } else if ($_SESSION['qnum'] > 10) { session_destroy(); echo "Some error occured."; //redirect to user.php } 

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

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

Хорошей практикой является вызов exit() сразу после того, как код не будет выполнен.

Кроме того, из документации:

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

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

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

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

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

  $url='the/url/you/want/to/go'; echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$url.'">'; 

это работает для меня хорошо.

Простым способом является использование:

  echo '<script>window.location.href = "the-target-page.php";</script>'; 
 header( "Location: http://www.domain.com/user.php" ); 

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

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

Да.

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

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

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

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

Фактически, я нашел это в коде php на основе cms.

redirect ('? module = blog', 0);

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

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

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

 <?php /* Redirect browser */ header("Location: http://example.com/"); /* Make sure that code below does not get executed when we redirect. */ exit; ?> 

если вы хотите включить перенаправление в ваш 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 

Как и было отмечено nixxx, добавление ob_start ob_start() перед добавлением какого-либо php-кода предотвратит отправку заголовков.

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

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

 echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$redirect_url.'">'; 

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

 header ("Location: user.php");

Я серач об этом, и я нашел ответ на этот ответ в

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

 function redirect_url($path) { header("location:".$path); exit; }