Sayfaya yönlendirmek için PHP header

4 Cevap php

Ben başlığındaki etiketini kullanarak bir sayfaya yönlendirmek istiyorum, ama işe yaramıyor.

4 Cevap

Bu çoğu zamanki neden hata "başlıklar zaten gönderildi" dir. Böylece, size çözmek için 2. sorunları var.

  1. Sorunuzu hata mesajı metninin yokluğu, ben bu metni yok varsayabiliriz. Programcı her hata mesajı oluştu görmek için ama gereklidir. Sen display_errors üretimi geliştirici ortam veya gözetleme günlükleri on ayarını çevirmek zorunda. Ayrıca, error_reporting() düzeyi E_ALL ayarlanmış olmalıdır.

  2. Uygulama tasarımı. Iş mantığı ve sunum mantığı: Başvurunuz 2 bölüme ayrılmıştır olmalıdır. Birincisi etc.etc, veritabanından, kullanıcıdan veri alma. Ikinci bir veri görüntüler toplandı. Değil tek bir bayt çalıştırmak için sunum mantığı parçası get önce tarayıcıya gönderilmesi gerekir. Bu durumda böyle bir hata var asla.

Bir istisna BOM olduğunu - Byte Order Mark, bazı editörler tarafından sessizce dosyalarının içine konduğunu bir sembol. Sadece özelliği "BOM olmadan Kaydet" kullanın.

İhtiyacınız olanlar:

header('Location: http://google.com');

Başlık emin boş boşluk veya herhangi bir karakter, ya da başlıkları işlevi önce outputted yankılanırken orada yapmadan önce bazı php çıkışı var çünkü işe yaramayabilir. Genellikle bir hata verecek ve "zaten index.php 1. satırda sayfası tarafından gönderilen Başlıkları" gibi bu ekstra alan bir şey var nerede yer olabilir

Bazı belirttiği gibi, sen içeriğinden önce çıkış başlıklarına gerekiyor. Bu yapmak için ideal bir yoldur farklı bölüme iş mantığı ve sunum mantığı ayırmak için, ama bazen bu yapmaz eski kod ile sıkışmış konum olduğunu.

Bu durumda, PHP output control işlevleri yararlı olabilir; Lütfen çıkış yakalamak () ve ob_end_flush () ob_start sonra kullanmak sonunda yıkayın. Bu sayede kod kullanımı header () daha fazla veya daha az yerde, örneğin

<?php

function doSomeStuff() {
  echo 'look, outputting stuff here';
  header('Location: /');
}

doSomeStuff();
?>

Yukarıdaki kod, zaten gönderilen başlıklarıyla ilgili hata verecektir, ancak aşağıdaki kod çalışacaktır.

<?php
function doSomeStuff() {
  echo 'look, outputting stuff here';
  header('Location: /');
}

ob_start();
doSomeStuff();
ob_end_flush();
?>

Bu durumda, echo () dan çıkış ob_end_flush () kadar gönderilen, yani başlık () çağrısı düzgün çalıştığı değildir. Bu yaklaşım doğru iş ve sunum mantığı ayırmak değil eski kod sarmak için kullanılabilir.

Sayfanın üst kısmında (herhangi bir html veya php önce) aşağıdakileri ekleyin:

<?php
header('Location: http://stackoverflow.com/users/300204/zaf');
exit();
?>

O (müthiş bir programcı ana kadar) sizi yönlendirir, o zaman çıktı da bu header () fonksiyonu kullanmadan önce herhangi bir içeriği yok olduğunu kontrol etmek gerekir. Header () işlevi HERHANGİ içeriği kullanıcıya gönderilmeden önce çağrılması gerekir.