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

голоса
31

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

Например:

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

Я бы очень хотел ... Далее

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

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

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>
Задан 09/12/2008 в 19:50
источник пользователем
На других языках...                            


7 ответов

голоса
61

<?
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" );
?>
Ответил 09/12/2008 в 20:05
источник пользователем

голоса
28

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

<?php

  echo $htmlHeader;
  while($stuff){
    echo $stuff;
  }
  echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>
Ответил 10/12/2008 в 05:44
источник пользователем

голоса
13

Если «НЕЧТО DONE» не invovle любого выхода через эхо / печать / и т.д., то:

<?php
   // SOMETHING DONE

   header('Location: http://stackoverflow.com');
?>
Ответил 09/12/2008 в 20:02
источник пользователем

голоса
5

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

header('Location: $url');

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

header("Location: $url");
Ответил 09/12/2008 в 20:40
источник пользователем

голоса
3
<?php

// do something here

header("Location: http://example.com/thankyou.php");
?>
Ответил 09/12/2008 в 20:03
источник пользователем

голоса
0

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

Ответил 21/05/2014 в 10:43
источник пользователем

голоса
0

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

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

пример:

<?php

// do something here

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

//code down here now wont get run

?>
Ответил 11/06/2013 в 15:22
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more