Перенаправить на указанный URL после завершения скрипта PHP?

Как я могу заставить функцию PHP перейти на определенный веб-сайт, когда она будет запущена?

Например:

<?php
  //SOMETHING DONE
  GOTO(http://example.com/thankyou.php);
?>

Очень хотелось бы следующего ...

<?php
  //SOMETHING DONE
  GOTO($url);
?>

Я хочу сделать что-то вроде этого:

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
37
0
265 075
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Если «ЧТО-ТО СДЕЛАНО» не связано с выводом через echo / print / и т. д., То:

<?php
   // SOMETHING DONE

   header('Location: http://stackoverflow.com');
?>
<?php

// do something here

header("Location: http://example.com/thankyou.php");
?>
Ответ принят как подходящий
<?
ob_start(); // ensures anything dumped out will be caught

// do stuff here
$url = 'http://example.com/thankyou.php'; // this can be set based on whatever

// clear out the output buffer
while (ob_get_status()) 
{
    ob_end_clean();
}

// no redirect
header( "Location: $url" );
?>

Ты подтолкнул меня на это. Возможно, стоит упомянуть, что, поскольку заголовки могут быть отправлены только в том случае, если вывод не был сгенерирован, всю страницу / приложение может потребоваться обернуть в ob_start ().

Sean McSomething 09.12.2008 22:08

Когда я попробовал это, я получил следующую ошибку: «Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с example.php: 1)» Вы знаете, почему это происходит?

JoshFinnie 10.12.2008 01:07

Это означает, что вы выводите что-то до ob_start () или после блока ob_end_clean (). Буферизация вывода (функции ob_ *) заботятся о буферизации любого вывода, позволяя вам использовать его или (как в этом случае) отбросить его позже. Поместите свой код в // делать что-нибудь здесь

Patrick Hogan 10.12.2008 01:27

Обратите внимание, что это не сработает:

header('Location: $url');

Вам нужно сделать это (для расширения переменных):

header("Location: $url");

Вы всегда можете просто использовать тег для обновления страницы - или, может быть, просто перетащите необходимый javascript на страницу в конце, что вызовет перенаправление страницы. Вы даже можете добавить это в функцию загрузки, чтобы после ее завершения страница перенаправлялась

<?php

  echo $htmlHeader;
  while($stuff){
    echo $stuff;
  }
  echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>

Это хорошо сработало для меня - заголовки уже были отправлены из-за большого количества событий в области CMS, это было идеально

Simon 29.11.2011 20:05

Просто и гениально, спасибо за полезный ответ!

SuN 20.03.2015 01:41

не забудьте поставить "кубик" после вашего вызова, чтобы перенаправление произошло до того, как остальная часть кода на странице будет запущена. а. если у вас есть функции заголовка ниже по странице, они переопределят те, которые находятся выше по коду.

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

пример:

<?php

// do something here

header("Location: http://example.com/thankyou.php");
die();

//code down here now wont get run

?>

Вот решение проблемы «заголовки уже отправлены». Предположим, вы проверяете и отправляете форму по электронной почте. Убедитесь, что php-код - это первое, что есть на вашей странице ... перед любыми тегами doctype, head и всем прочим. Затем, когда POST вернется на страницу, сначала появится php-код и не встретит проблему с уже отправленными заголовками.

Другие вопросы по теме