Jörg Reinholz: Wechselnder Header auf jeder Seite

Beitrag lesen

Dir fehlen Grundlagen.

Step 0: Es ist ganz unmodern, zu senden bevor das "not tut"

<?php ob_start(); ganz! oben! ?>  

Step 1:
Der Name der Seite steht also in $_GET['page']. Nehmen wir mal an, das sei 'FOO'. (http://hostname/?page=FOO) + (GROSS-klein ist wichtig)

Step 2:
Eine gute Idee ist esin dem Fall, die passende Grafik als 'FOO.jpg' bereit zu halten.
Du brauchst auch den Ordner mit den Grafiken (den musst Du selbst anlegen):

define('PicsDir', '/var/www/htdocs/pics/');  

Step 3:
Eine gute Idee ist es, falls was nicht klappt, eine 'DEFAULT.jpg'  bereit zu halten.

define('DefaultHeaderPic', '/var/www/htdocs/pics/DEFAULT.jpg');  

und eine nette Funktion:

function getHeaderPic() {  
  if (  
     (! isset($_GET['page'])      # ?page=FOO fehlt.  
     or $_GET['page'] == '';      # ?page= in URL  
  ) {  
     return(DefaultHeaderPic);  
  }  
  
  # Jetzt musst Du noch "putzen", sonst gibt jemand was wie '?page=cat+/etc/passwd+FOO' an:  
  $arVerboten=array('`', '|', '../', '\\', '/', '<', '>',);  
  $s=str_replace($arVerboten, $_GET['page']);  # Wir ersetzen das Verbotene durch Nichts  
  if ($s != $_GET['page']) {                   # Und schauen ob das eine gute Idee war:  
      # Da hat jemand was versucht und soll belohnt werden:  
      header('HTTP/1.0 404 Not Found'); # "schmeisst" ohne das ob_start() ganz oben eine Notiz oder einen Fehler  
      die ('Netter Versuch!');  
  }  
  
  $filename = PicsDir . $s . '.jpg';  
  if ( (! is_file($filename)) || (! is_readable($filename)) ) {  
    # Wenn es die Grafik nicht gibt oder die nicht lesbar ist:  
     return(DefaultHeaderPic); # Ha! Das Default-Bild!  
  } else {  
     # Jawoll! Die Datei /var/www/htdocs/pics/FOO.pic wurde verlangt, ist vorhanden und lesbar:  
     return ($filename);  
  }  
  
}  

Zur Verwendung: Einfach unter dem irgendwo:

<div id="header">  
  <img src="<?php getHeaderPic(); ?>">  
</div> 

eintippen.

Falls Du ein CMS verwendest kann es sein, dass Du noch ein paar Dinge beachten musst. Wenn Du aber so tief reingreifst, dann solltest Du das nur dann tun, wenn Du es kannst.

Ich empfehle PHP von Grund auf zu lernen, aber da bist Du gerade dabei - oder?

Jörg Reinholz