PHP tamamlanması belirtilen URL'ye yönlendir?

oy
31

Bunu nasıl çalıştığı bittiğinde bir PHP işlevi belirli bir web sitesine gidin alabilirim?

Örneğin:

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

Gerçekten aşağıdaki gibi olur ...

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

Böyle bir şey yapmak istiyorum:

<?php
  //SOMETHING DONE THAT SETS $url
  header('Location: $url');  
?>
Oluştur 09/12/2008 saat 19:50
kaynak kullanıcı
Diğer dillerde...                            


7 cevaplar

oy
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" );
?>
Cevap 09/12/2008 saat 20:05
kaynak kullanıcı

oy
28

Her zaman sadece sayfayı yenilemek için etiket de kullanabilirsiniz - ya da belki sadece yönlendirme sayfası neden olacak sonunda sayfasına gerekli javascript bırakın. Hatta bir yüklendiğinde fonksiyonunda olduğu atmak, bu yüzden onun bitmiş bir kez sayfa yönlendirilir

<?php

  echo $htmlHeader;
  while($stuff){
    echo $stuff;
  }
  echo "<script>window.location = 'http://www.yourdomain.com'</script>";
?>
Cevap 10/12/2008 saat 05:44
kaynak kullanıcı

oy
13

"ŞEY TAMAM" o zaman yankı / yazdırma / vb yoluyla herhangi bir çıktı invovle değildir:

<?php
   // SOMETHING DONE

   header('Location: http://stackoverflow.com');
?>
Cevap 09/12/2008 saat 20:02
kaynak kullanıcı

oy
5

Bu işe unutmayın:

header('Location: $url');

Sen (değişken genişlemesi için) yapmanız gerekir:

header("Location: $url");
Cevap 09/12/2008 saat 20:40
kaynak kullanıcı

oy
3
<?php

// do something here

header("Location: http://example.com/thankyou.php");
?>
Cevap 09/12/2008 saat 20:03
kaynak kullanıcı

oy
0

İşte sorun "zaten gönderildi başlıklarına" bir çözüm. Eğer doğrulama ve formu e-posta gönderiyorsunuz varsayalım. php kod Doctype ve baş etiketleri ve tüm bu caz herhangi önce ... sayfanızda ilk şey olduğundan emin olun. POST tekrar sayfaya geldiğinde ise, php kodu önce gelir ve zaten sorunu gönderilen başlıklarını karşılaşmazsınız.

Cevap 21/05/2014 saat 10:43
kaynak kullanıcı

oy
0

sayfadaki kodun kalan attı çalıştırılır önce yönlendirme gerçekleşmesi için sizin çağrısından sonra bir 'kalıp' koymak unutmayın. a. Eğer Sayfanın altındaki işlevleri başlık varsa onlar kod daha yukarı olanları geçersiz kılar.

b: Eğer yok varsayarak im sayfasındaki kod tamamına istediğine çalıştırılacak ve neden senin koyarak bu ilk etapta [belki] in yönlendirir.

örnek:

<?php

// do something here

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

//code down here now wont get run

?>
Cevap 11/06/2013 saat 15:22
kaynak kullanıcı

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