PHP sayfa yönlendirme

12 Cevap php

PHP işlevi yürüttükten sonra bir yönlendirme arama yapabilir miyim? Ben bunu aynı kök klasöründe bulunan bir dosyaya yeniden yönlendirmek istediğiniz tamamlanması üzerine bir işlevi oluşturma. Bu yapılabilir mi?

 if {
      //i am using echo here
 }

 else if ($_SESSION['qnum'] > 10) { 
            session_destroy();
            echo "Some error occured.";
            //redirect to user.php
        }

12 Cevap

Evet, header işlevini kullanın.

header("Location: http://www.yourwebsite.com/user.php"); /* Redirect browser */
exit();

Bunun altında bu kod idam almaz böylece exit() sağ afterwords aramak için iyi bir uygulamadır.

Ayrıca, belgelerine:

Herhangi bir gerçek çıktı gönderilmeden önce () normal HTML etiketleri, bir dosyada boş satırlar, ya da PHP ya denilen gerektiğini başlığını hatırlıyorum. It) () dahil, ya da (ihtiyaç ile kod okumak için çok yaygın bir hatadır, fonksiyonlar veya başka bir dosya erişim fonksiyonu, ve boşluk veya (başlıktan önce çıkış olan boş satırları) sahip denir. Tek bir PHP / HTML dosyasını kullanırken aynı sorun var.

Bu daha büyük olasılıkla bir hata atar yapıyor gibi, sağ header() işlevi önce bir şey yankı gerektiği anlamına gelir. Ayrıca, bu kodu da diğer herhangi bir çıkıştan önce çalıştırmak alır doğrulamak gerekir.

Bir hata korumalı olarak bir javascript kullanarak kullanıcı (başlıklar zaten gönderilmiş olsa bile) yönlendirilir sağlayacaktır. Buyrun:

// $url should be an absolute url
function redirect($url){
    if (headers_sent()){
      die('<script type="text/javascript">window.location.href="' . $url . '";</script>');
    }else{
      header('Location: ' . $url);
      die();
    }    
}

Düzgün göreli yolları ele gerekiyorsa, bunun için bir fonksiyon yazdım (ama bu sorunun kapsamı dışındadır).

header( "Location: http://www.domain.com/user.php" );

Ama önce bir yankı yapmak ve sonra yeniden yönlendiremez.

Kullan http_redirect

header() fonksiyonu yapar:

header("Location: user.php");

Evet.

Özünde, sürece bir şey çıktı olduğu gibi, size (bir oturumu öldürmeye kullanıcı çerezleri kaldırmak, Pi 'n' basamaklı, vb hesaplamak) önce bir konum başlığını veren istersen yapabilirsin.

Herhalde, bir oturum değişkeni olarak mesajı ayarlayabilirsiniz iletiyi görüntüler başka bir sayfaya kullanıcıyı yönlendirmek ve oturumu yok olacaktır.

PHP header() işlevi yapar, ancak herhangi bir diğer dosya içeriğini tarayıcıya gönderilen ya da başka bir hata alırsınız önce onu aramak emin olun.

Zaten dosya içeriğini gönderdiğiniz adres Javascript bir alternatiftir.

   $url='the/url/you/want/to/go';
   echo '<META HTTP-EQUIV=REFRESH CONTENT="1; '.$url.'">';

bu iyi benim için çalışıyor.

Aslında, ben bir php tabanlı CMS kodu buldum.

redirect ('modülü = blog?', 0);

bu nedenle mümkündür. Bu durumda, hiçbir zarar yok faul (herhalde) yönetici düzeyinde kaydedilir, böylece vardır. ilk bölümü url, ve ikinci? Ben tamsayı için ne için herhangi bir belge bulamıyor, ama bir forma bağlı olduğundan o zaman, ya da veriler sanırım.

Ben de, bir olaydan sonra sayfayı yenilemek istedim, ve daha iyi bir noktada bu yerleştirerek iyi çalıştı.

Sen yönlendirmek için bu kodu kullanabilirsiniz php

<?php
/* Redirect browser */
header("Location: http://example.com/");
/* Make sure that code below does not get executed when we redirect. */
exit;
?>

Ben bu konuda Serach ve ben bu cevabı bulmak ile ilgili

Redirect function

function redirect_url($path)
{
  header("location:".$path);
  exit;
}