Kare OLMADAN bir site yapma

5 Cevap php

Ben çerçeveler olmadan, ben sadece index.php benim tasarım bölmek yüzden header.php / footer.php ve sonra sadece her sayfada bunları içermelidir, Anasayfam yapmak istiyorum?

5 Cevap

Yes, you can split your index.php into header.php/footer.php and then just include them on every page. Note that your pages can be not static HTML but php scripts, to show multiple pages with one script.
I'd suggest also to have not a commonplace structure like

include 'header.php';
//do some stuff
include 'footer.php';

ama çok daha yararlı başka yapı:

//do some stuff, retrieve all data.
include 'header.php';
include 'page.php'; //include page template
include 'footer.php';

Ben size bir çerçeve kullanmanızı öneririz. Çoğu çerçeveler (hepsi değilse) basit bir şablon sistemleri var, bu yüzden kod tekrarlamak zorunda değilsiniz.

Sitenizin her sayfasında şeyler de dahil olmak üzere önerilen çözüm ile sorun size başka bir şey eklemek istiyorsanız sitenizin tüm sayfaları güncelleştirmek zorunda olduğunu, bir kenar çubuğu söylüyorlar.

Tüm sayfa bağlantısı - Daha iyi bir fikir, bir komut dosyası sahip değildir. Yani don't göstermek istediğiniz sayfanın başına bir php dosyası yazmak. Bunun yerine, web sitesinin kök, çoğu kullanım index.php bir ön denetleyicisi dosyası kullanabilirsiniz. Ve sonra URL sitenizin esneklik olması için Apache mod_rewrite veya diğer sunucu tekniklerini kullanın. Sonra index.php farklı sayfalara hizmet için farklı URL istekleri Haritayı izin, sonra bir veritabanına veya başka bir yerde sitenizin tüm sayfalarını koyabilirsiniz.

Bu yolu var üstbilgi ve altbilgi için şablonlar içerir sitenize tek bir nokta var, bu yüzden kolayca değiştirilebilir, ve size HTML çıktı ama JSON istemeyeceksiniz hangi AJAX istekleri, hizmet için sitenin kök kullanabilirsiniz Örneğin.

Afaik bu konuda gidiş iyi bir yoludur.

Başka bir fikir GET parametre, örn denir giriş sadece tek bir nokta var olacaktır ?site=about. Sizin index.php bu gibi görünebilir:

<?php
// whitelist of allowed includes
$allowedIncludes = array('home', 'about', 'error404'); // etc.
// what to include if ?site is not set at all / set to an illegal include
$defaultInclude = 'home';
$errorInclude = 'error404';

// if site is not set, include default
$site = (empty($_GET['site'])) ? $defaultInclude : $_GET['site'];
// if site is illegal, include error page
$include = (in_array($site, $allowedIncludes)) ? $site : $errorInclude;

// actual includes
include 'header.php';
include $include.'.php';
include 'footer.php';

Böylece sadece header.php ve footer.php kez ve izin ve ne değildir (dahil dosyaları sadece php erişimi olan bir dizinde olabilir) hakkında tam denetime sahip içermek zorunda . Lütfen index.php isteğini işleme sırasında, home.php, about.php (header.php ve footer.php hakkında bilmek zorunda değilsiniz kolayca) zaman içinde daha sonraki bir noktada onları yerini alabilir.

Eğer beğenmezseniz http://www.example.com/?site=about, sen mod_rewrite ve arkadaşlarınızla içine bakabilirsiniz.

Bunun için bir oturumu ayarlamak isteyebilirsiniz. Bir oturum değişkeni olarak uzun bir ziyaretçi web sitenizde olduğu gibi var:

<?php
    session_start(); // Remember that session_start(); must be the first line of your PHP and HTML-code

    if($add_a_message){
        $_SESSION['message'] = 'Message';
    }

    if($destroy_message){
        $_SESSION['message'] = '';
    }

    // echo this message
    if(isset($_SESSION['message']) && strlen($_SESSION['message']) > 0){
        echo '<strong>' . $_SESSION['message'] . '</strong>';
    }
?>