Redirecionar para URL especificado em PHP conclusão script?

votos
31

Como posso obter uma função PHP ir a um site específico quando é feito a correr?

Por exemplo:

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

Eu gostaria realmente o seguinte ...

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

Eu quero fazer algo parecido com isto:

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>
Publicado 09/12/2008 em 19:50
fonte usuário
Em outras línguas...                            


7 respostas

votos
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" );
?>
Respondeu 09/12/2008 em 20:05
fonte usuário

votos
28

Você sempre pode apenas usar a tag para atualizar a página - ou talvez apenas deixar cair o javascript necessário para a página no final que faria com que a página para redirecionar. Você pode até mesmo jogar isso em uma função onload, então quando seu acabado, a página é redirecionada

<?php

  echo $htmlHeader;
  while($stuff){
    echo $stuff;
  }
  echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>
Respondeu 10/12/2008 em 05:44
fonte usuário

votos
13

Se "algo feito" não invovle qualquer saída via eco / impressão / etc, então:

<?php
   // SOMETHING DONE

   header('Location: http://stackoverflow.com');
?>
Respondeu 09/12/2008 em 20:02
fonte usuário

votos
5

Note que isso não vai funcionar:

header('Location: $url');

Você precisa fazer isso (para expansão de variáveis):

header("Location: $url");
Respondeu 09/12/2008 em 20:40
fonte usuário

votos
3
<?php

// do something here

header("Location: http://example.com/thankyou.php");
?>
Respondeu 09/12/2008 em 20:03
fonte usuário

votos
0

Aqui está uma solução para os "cabeçalhos já foram enviados" problema. Suponha que você está validando e enviando um formulário. Verifique se o código PHP é a primeira coisa em sua página ... antes de qualquer uma das marcas doctype e na cabeça e todo esse jazz. Então, quando o POST chega de volta na página de código php vai vir em primeiro lugar e não encontrar os cabeçalhos já enviados problema.

Respondeu 21/05/2014 em 10:43
fonte usuário

votos
0

não se esqueça de colocar um 'die' após a sua chamada para fazer o redirecionamento acontecer antes do resto do código na página é executado jogou. uma. se tiver cabeçalho funções parte inferior da página que irá substituir os mais acima do código.

b: im supondo que você não quer que o resto do código na página para ser executado e que por isso a sua colocação neste redirecionar em em primeiro lugar [talvez].

exemplo:

<?php

// do something here

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

//code down here now wont get run

?>
Respondeu 11/06/2013 em 15:22
fonte usuário

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