Перенаправление страницы PHP
Может ли PHP выполнить перенаправление после выполнения функции? Я создаю функцию, по завершении которой я хочу, чтобы она перенаправляла файл, расположенный в той же корневой папке. Это можно сделать?
if {
//i am using echo here
}
else if ($_SESSION['qnum'] > 10) {
session_destroy();
echo "Some error occured.";
//redirect to user.php
}
Ответы
Ответ 1
Да, вы бы использовали функцию заголовка.
/* Redirect browser */
header("Location: http://www.yourwebsite.com/user.php");
exit();
Рекомендуется вызывать exit()
сразу после него, чтобы код ниже не выполнялся.
Также из документации:
Помните, что header() должна вызываться перед отправкой любого фактического вывода, либо обычными тегами HTML, пустыми строками в файле, либо из PHP. Это очень распространенная ошибка при чтении кода с помощью функций include() или require(), или другой функции доступа к файлу, с пробелами или пустыми строками, которые выводятся до вызова header(). Та же проблема существует при использовании одного файла PHP/HTML.
Это означает, что вы не должны ничего выводить прямо перед функцией header()
, так как это, скорее всего, приведет к ошибке. Кроме того, вам нужно будет убедиться, что этот код запускается перед любым другим выводом.
Ответ 2
Использование 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();
}
}
Если вам нужно правильно обрабатывать относительные пути, я написал функцию для этого (но это выходит за рамки вопроса).
Ответ 3
Простым способом является использование:
echo '<script>window.location.href = "the-target-page.php";</script>';
Ответ 4
$url='the/url/you/want/to/go';
echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$url.'">';
это работает для меня отлично.
Ответ 5
header( "Location: http://www.domain.com/user.php" );
Но вы не можете сначала выполнить эхо, а затем перенаправить.
Ответ 6
<?php
http_redirect("relpath", array("name" => "value"), true, HTTP_REDIRECT_PERM);
?>
Ответ 7
Как отмечено nixxx добавлением ob_start()
перед добавлением какого-либо php-кода, это предотвратит отправку заголовков.
Это сработало для меня
Также приведен код ниже. Но он сначала загружает страницу, а затем перенаправляет, когда я ее использую.
echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$redirect_url.'">';
Ответ 8
Да.
По сути, пока ничего не выводится, вы можете делать все, что хотите (убить сеанс, удалить файлы cookie пользователя, вычислить цифры Pi до 'n' и т.д.) до выпуска заголовка местоположения.
Ответ 9
Я бы, скорее всего, установил сообщение как переменную сеанса, перенаправил пользователя на другую страницу, которая отображает сообщение и уничтожает сеанс.
Ответ 10
Функция header()
в PHP делает это, но убедитесь, что вы вызываете ее, прежде чем любое другое содержимое файла будет отправлено в браузер, иначе вы получите сообщение об ошибке.
JavaScript является альтернативой, если вы уже отправили содержимое файла.
Ответ 11
На самом деле, я нашел это в коде php на основе cms.
redirect ('? module = blog', 0);
так что это возможно. В этом случае вы вошли в систему на уровне администратора, поэтому никакого вреда не фол (я полагаю). первая часть - это URL, а вторая? Я не могу найти какую-либо документацию для целого числа, но я предполагаю, что это либо время, либо данные, поскольку они привязаны к форме.
Я тоже хотел обновить страницу после события, и это было лучше в хорошем месте.
Ответ 12
Вы можете использовать этот код для перенаправления в php
<?php
/* Redirect browser */
header("Location: http://example.com/");
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
Ответ 13
если вы хотите включить перенаправление в свой 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
Ответ 14
Функция header() выполняет следующее:
header("Location: user.php");
Ответ 15
Я прошу об этом, и я нашел ответ на этот вопрос в
https://stackoverflow.com/info/13539752/redirect-function/13539808
function redirect_url($path)
{
header("location:".$path);
exit;
}