• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Includieren per Link

  • Ersteller Ersteller Plankton
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
P

Plankton

Guest
Hallo, ich habe eine Frage zum Thema includieren:

Kann man folgendes realisieren:

Ich habe eine Naviagtionsleiste (über dem Contentcontainer) die includiert wurde. Nun habe ich es so gelöst, dass ich einfach alle Dateien meines Webprojekts nach dem Muster der index-Seite aufbaue. Ändere ich aber das Design oder einige andere Sachen daran, muss ich die anderen auch alle ändern. Kann man nicht auch per Klick auf einen Link names "Home" die Datei "Home.html" in einem DIV-Container namens "content" includieren, der 70% der Bildschrimauflösung des Besuchers als Wert für die Breite hat?

mfg Plankton
 
index.php:
PHP:
<div id="navigation">
  <!-- Links mit href="index.php?q=home -->
</div>
<div id="content">
<?php require 'sites/'.$_GET['q'].'.php'; ?>
</div>
So zum Beispiel.
Das bindet zum Beispiel die Seite sites/about.php ein wenn ich index.php?q=about aufrufe.
Das ganze sollte dann noch verbessert werden, mit einer Abfrage ob überhaupt etwas übergeben wurde und ob es die Datei überhaupt gibt. Am sichersten ist hier eine Whitelist oder eine Ordnerbeschränkung (wie oben schon eingebaut).
 
Danke Artemis. Wie erstelle ich denn eine solche Abfrage (ich bin leider ein absoluter Anfänger in PHP, sonst würde ich nicht fragen)? Und was ist eine Whitelist?

mfg Plankton
 
Eine Abfrage plus Whitelist sieht dann ungefähr so aus:
PHP:
<?php
  // überprüfen, ob die GET-Variable "q" überhaupt angegeben ist
  if (isset($_GET['q'])) {
    $site = $_GET['q'];
    // Whitelist-Array definieren, das heißt es werden die Seiten definiert, die abgerufen werden können
    $whitelist = array('about', 'downloads', 'start', 'other');
    // überprüfen, ob die abgefragte Seite abgerufen werden darf
    if (in_array($site, $whitelist)) {
      // Seite einbinden
      require 'sites/'.$site.'.php';
    } else {
      // Standard-Seite einbinden
      require 'sites/start.php';
    }
  } else {
    // Standard-Seite einbinden
    require 'sites/start.php';
  }
?>

http://de.wikipedia.org/wiki/Whitelist
 
Danke, aber mir hat sich eben ein Problem offenbart: Wenn ich nun folgenden Code
<a href="impressum.php?q=impressum">Impressum</a>
habe,

lädt er die Datei impressum.php. Leider verlässt der Browser dann index.php, wodurch die Seite impressum.php kein Navigationsmenü und nichts ausser ihrem Inhalt hat. Ich hätte es aber gerne so, dass das wie in einem IFrame funktioniert...

Bis jetzt hab ich immer eine datei TEMPLATE.PHP gehabt, aus der ich den aufbau herauskopiert habe, um alle Seiten eines Projektes so zu ertsellen. Nun will ich aber nur noch index.php mit Navigation, footer und content haben. Im content soll dann das includiert werden, was im Naviagtionsmenü angeklickt wurde.

mfg Plankton
 
Da hast du das ein bisschen falsch verstanden.

Du darfst natürlich nicht impressum.php?q=impressum schreiben, sondern musst entweder index.php?q=impressum oder einfach ?q=impressum als Link-Ziel schreiben.

Deine Ordnerstruktur sollte so aussehen:
Code:
index.php
sites [I](Ordner)[/I]
 - impressum.php
 - about.php
 ...
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben