Перенаправить на указанный URL при завершении PHP-скрипта - PullRequest
34 голосов
/ 09 декабря 2008

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

Например:

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

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

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

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

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>

Ответы [ 7 ]

63 голосов
/ 09 декабря 2008
<?
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" );
?>
31 голосов
/ 10 декабря 2008

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

<?php

  echo $htmlHeader;
  while($stuff){
    echo $stuff;
  }
  echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>
14 голосов
/ 09 декабря 2008

Если «SOMETHING DONE» не задействует какой-либо вывод через echo / print / etc, тогда:

<?php
   // SOMETHING DONE

   header('Location: http://stackoverflow.com');
?>
5 голосов
/ 09 декабря 2008

Обратите внимание, что это не будет работать:

header('Location: $url');

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

header("Location: $url");
3 голосов
/ 09 декабря 2008
<?php

// do something here

header("Location: http://example.com/thankyou.php");
?>
2 голосов
/ 11 июня 2013

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

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

пример:

<?php

// do something here

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

//code down here now wont get run

?>
0 голосов
/ 21 мая 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...