2016-10-06 5 views
-1

Ich habe mein eigenes CMS in PHP geschrieben. Es ist ziemlich einfach, aber es erlaubt mir nicht, einige Dinge zu tun, wie die Umleitung mit header() von der dynamischen Seite.
Hier ist seine Struktur (sehr vereinfacht):Wie sollte eine dynamische Website strukturiert sein?

<?php 
$db = new PDO... 
try { 
    //getting page info from database (by $_GET['id']) 
    //and put results into $pageInfo 
    $stmt->prepare 
//.. catch etc... 
?> 
<!doctype html> 
<html> 
<head><title><?=$pageInfo['title'];?></title></head> 
<body> 
<?php 
//this file below cannot contain a php redirect, because headers are already sent 
include($pageInfo['content_path']); 
?> 
</body> 
</html> 

Es gibt eine Seite, die dynamisch und andere Seiten, indem den Wert des GET-Parameter-ID angezeigt werden kann.
Der enthaltene Inhalt enthält oft PHP-Skripte.

Ich habe mich im Internet umgeschaut, aber ich weiß nicht, wie ich dieses Problem lösen soll.
Kann ich eine header.html und eine footer.html erstellen und in jede Seite aufnehmen? Aber wenn ich die Header-Datei vor dem Einschließen des Inhalts einschließe, werden Header gesendet? Wie?

Wirklich leid, wenn diese Frage dumm scheint, aber ich weiß nicht, wie es geht. Ich habe niemanden, der mich unterrichtet, also muss ich alles alleine lernen, aber für einige Dinge weiß ich nicht, wo ich hinschauen soll.

Vielen Dank im Voraus.

+1

Sie können ** Header nicht senden, wenn die Ausgabe gestartet wurde, zu diesem Zeitpunkt ist es zu spät. einschließlich anderer PHP-Dateien in Ihren Skripten ist in Ordnung, und überhaupt kein Problem – adeneo

+0

versuchen, @ob_start() am Anfang von ur-Code –

+0

Sie Angeln für Meinungen, die explizit off-topic sind. Es gibt keinen "richtigen Weg", um eine Site zu erstellen. es gibt nur Meinungen. –

Antwort

0

Der bevorzugte Weg besteht darin, die Anwendung in mehrere Teile zu teilen, einen Teil, der Code ausführt (Controller oder Kern) und einen anderen, der etwas anzeigt (Ansicht oder Vorlage). Zum Beispiel würde in MVC (Model/View/Controller) Ihre einzige Seite nur ein Dispatcher sein, der einen Controller aufruft, der Controller PHP-Code ausführt und einige Daten durch Verwendung des zweiten Teils, des Modells und Ruft schließlich eine Vorlage zum Anzeigen der Daten auf.

In Ihrem Beispiel könnten Sie beginnen, indem Sie für jeden Aufruf zwei Dateien einfügen, eine, die nur PHP-Code enthält und alle Daten abruft und danach eine HTML-Vorlage mit Variablen und nur sehr einfachem Code, der benötigt wird um die Daten anzuzeigen. Sie können dann Redirects ausführen und im php-part (controller) beenden.

Verwandte Themen