Przekierowanie do określonego adresu URL po zakończeniu skryptu PHP?

głosy
31

Jak mogę uzyskać funkcją PHP przejść do konkretnej strony internetowej, kiedy to odbywa się z systemem?

Na przykład:

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

Naprawdę chciałbym Po ...

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

Chcę zrobić coś takiego:

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>
Utwórz 09/12/2008 o 19:50
źródło użytkownik
W innych językach...                            


7 odpowiedzi

głosy
13

Jeśli „coś zrobić” nie invovle dowolne wyjście poprzez echo / print / etc, a następnie:

<?php
   // SOMETHING DONE

   header('Location: http://stackoverflow.com');
?>
Odpowiedział 09/12/2008 o 20:02
źródło użytkownik

głosy
3
<?php

// do something here

header("Location: http://example.com/thankyou.php");
?>
Odpowiedział 09/12/2008 o 20:03
źródło użytkownik

głosy
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" );
?>
Odpowiedział 09/12/2008 o 20:05
źródło użytkownik

głosy
5

Zauważ, że to nie będzie działać:

header('Location: $url');

Trzeba to zrobić (dla zmiennej ekspansji):

header("Location: $url");
Odpowiedział 09/12/2008 o 20:40
źródło użytkownik

głosy
28

Zawsze można po prostu użyć tagu, aby odświeżyć stronę - a może po prostu spaść niezbędną JavaScript do strony na końcu, który mógłby spowodować strona przekierować. Można nawet rzucić, że w funkcji onload, więc po jej zakończeniu, gdy strona jest przekierowywany

<?php

  echo $htmlHeader;
  while($stuff){
    echo $stuff;
  }
  echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>
Odpowiedział 10/12/2008 o 05:44
źródło użytkownik

głosy
0

nie zapomnij umieścić „die” po wywołaniu aby przekierowanie nastąpi przed reszta kodu na stronie prowadzony jest wyrzucił. za. jeśli nagłówek funkcji dalej w dół strony będą one zastąpić te dalej na kodzie.

b: im zakładając, że nie chcesz resztę kodu na stronie, aby uruchomić i dlatego swoje oddanie w ten przekierować na pierwszym miejscu [może].

przykład:

<?php

// do something here

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

//code down here now wont get run

?>
Odpowiedział 11/06/2013 o 15:22
źródło użytkownik

głosy
0

Oto rozwiązanie dla „nagłówki zostały już wysłane” problem. Załóżmy, że sprawdzanie i wysyłając formularz. Upewnij się, że kod php jest pierwszą rzeczą, na swojej stronie ... zanim którykolwiek z DOCTYPE i szef tagów i wszystko, jazz. Wtedy, gdy POST wraca na stronie kod php przyjdzie najpierw i nie spotkać nagłówki już wysłane problem.

Odpowiedział 21/05/2014 o 10:43
źródło użytkownik

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