Nasıl başlık hataları olmadan PHP yönlendirebilirsiniz?

7 Cevap php

Ben başlık çıkış hataları almadan Aşağıda bu kurulum PHP ile yönlendirebilirsiniz nasıl bir başlık ayarlanır önce hiçbir tarayıcıya basılabilir anlıyorum, ben bir çözüm, değil mi lütfen olur neden bir açıklama arıyorum.

<?PHP
// include header
include ('header.inc.php');



// In my body section file if this is a page that requires a user be logged in then
// I run a function validlogin($url-of-page-we-are-on); inside of that file
//the function is below, it outputs a redirect to login page if not logged in

// include body of page we want
include ('SOME-FILE-HERE.php');



// include footer
include ('footer.inc.php');



// here is the function that is in the body pages, it is only called on a page that we require a logged in user so there are hundreds of pages that do have this and a bunch that don't, it's on a page to page basis
function validlogin($url) {
    if ($_SESSION['auto_id'] == '') {
    	$msg = 'Please login';
    	$_SESSION['sess_login_msg'] = $msg;
    	$_SESSION['backurl'] = $url;
    	$temp = '';
    	header("Location: /");
    	exit();
    }
}
?>

Ben kullanıcı PHP'nin header fonksiyonu ve bir meta ya da javascript yönlendirme istiyorum

Ayrıca giriş gerektiren sayfaların listesini maintainning ya burada bir seçenek değildir eğer mümkünse

7 Cevap

Sadece bunu yapamam:

<?php
validlogin($url); // call the function here
include ('header.inc.php');
include ('SOME-FILE-HERE.php');
include ('footer.inc.php');
?>

Veya, ile sonuna kadar böylece, mümkün ise, "BAZI-DOSYA-HERE" tipi dosyaları her birinde dosyaları içerir koydu:

<?php
validlogin($url); // call the function here
include ('header.inc.php');
?>

<h1>Page heading</h1>
...page content etc...

<?php
include ('footer.inc.php');
?>

Dahil bile befor ilk satırında () ob_start kullanın. böylece istediğiniz zaman başlıkları ayarlayabilirsiniz.

kullanmak { echo '<META HTTP-EQUIV="Refresh" Content="0; URL=process.php">';}

Sürece header () fonksiyonundan önce hiçbir komut çıktısı gibi ince olmalıdır. Hiçbir yankı ya da boşluk vardır kontrol edin. Ayrıca başında yardımcı olabilir de () ob_start koyarak. bazen görünmez boşluk var - ANSI veya Unicode belgenizin biçimini yardımcı olabilir değişiyor!

(Ben zaten biliyorum düşünüyorum rağmen) bir not olarak başlık böylece çıkış () (var olan) kesin bir gerekliliktir senaryoyu sonlandırmak değil.

Footer.inc.php ve BAZI-DOSYA-HERE.php hemen yanıt akışı yazmak mı? Böylece eğer başlıklarını gönderilmiş önce zaten bir şey yazdım gibi, bu işe yaramaz çünkü.

Zaten çıkışını tampon ob_start() veya output_buffer ayarı kullanmak başkaları tarafından bahsetti. Bunun dışında işlevsel kod ortasında çıkış içerik benim açımdan iyi bir muayenehanesi var ama bu başka bir konudur.

Google'da veya this Article about Output Buffering in PHP daha fazla bilgi bulabilirsiniz.