Page 1 of 1
System: header.inc.php / footer.inc.php
Posted: 2003-05-18 16:06
by [ djthesound ]
Hi Leuts,
wollte eben was coden, wo ich nicht immer wieder in jeder HTML-Seite header und footer eintragen muss. Es soll folgendes Schema mittels PHP dabei rauskommen:
Code: Select all
index.php
<?
include (header.inc.php;
include (parameter);
include (footer.inc.php);
?>
Allerdings möchte ich nicht in jeder Datei header und footer "includen", sondern durch einen Parameter aufrufen lassen. Beispiel:
Code: Select all
http://www.domain.com/index.php?content=startseite
http://www.domain.com/index.php?content=news
...
Wie kann ich sowas realisieren bzw. wie ist das System dann auch sicher, da ich schon Bemerkungen im WWW gelesen habe, das dies _NICHT_ allzu sicher sein sollte, da der User somit in Unerverzeichnisse rein kommt.
Wer hat passende Infos, Links oder fertige (Mini)skripte? Ich bin leider nicht wirklich für das Passende fündig geworden. Vielen Dank für eure Hilfe!
Re: System: header.inc.php / footer.inc.php
Posted: 2003-05-18 16:42
by oxygen
Normalerweise würde man das dann so machen:
Code: Select all
<?php
include (header.inc.php);
if(isset($_GET['content'])) include ("$content.php");
else include ("start.php");
}
include (footer.inc.php);
?>
Das ist in der Tat ziemlich unsicher weil so jedes .php file includiert werden kann.[/code]
Re: System: header.inc.php / footer.inc.php
Posted: 2003-05-18 16:45
by dodolin
Das ist in der Tat ziemlich unsicher weil so jedes .php file includiert werden kann.
Nö, include_path richtig setzen hilft.
http://de.php.net/manual/en/function.include.php
http://de.php.net/manual/en/configurati ... clude-path
Re: System: header.inc.php / footer.inc.php
Posted: 2003-05-18 16:53
by [ djthesound ]
øxygen wrote:Normalerweise würde man das dann so machen:
Code: Select all
<?php
include (header.inc.php);
if(isset($_GET['content'])) include ("$content.php");
else include ("start.php");
}
include (footer.inc.php);
?>
Das ist in der Tat ziemlich unsicher weil so jedes .php file includiert werden kann.[/code]
Hallo, ja danke. Das habe ich schonmal so gesehen, aber:
Code: Select all
Parse error: parse error in /var/www/virtual/meinedomain.com/htdocs/index.php on line 6
Re: System: header.inc.php / footer.inc.php
Posted: 2003-05-18 17:03
by oxygen
Hm, keine Ahnung wie sich die Klammer da rein gemogelt hat:
Code: Select all
<?php
include (header.inc.php);
if(isset($_GET['content'])) include ("$content.php");
else include ("start.php");
include (footer.inc.php);
?>
btw: Am besten man nennt das Script index.phtml damit keine Schleife durch ?content=index erzeugt werden kann.
Re: System: header.inc.php / footer.inc.php
Posted: 2003-05-18 17:26
by [ djthesound ]
Hallo,
danke für die Ausbesserung, habe da noch was entdeckt und zwar bei header.inc.php und footer.inc.php habe ich noch Anführungszeichen setzten müssen, sonst habe ich auch einen Parse-Error bekommen:
Code: Select all
<?php
include ("header.inc.php");
if(isset($_GET['content'])) include ("$content.php");
else include ("startseite.php");
include ("footer.inc.php");
?>
btw: Am besten man nennt das Script index.phtml damit keine Schleife durch ?content=index erzeugt werden kann.
Und wo ist der unterschied dann dabei? Wenn ich keine Links zu
index.php?content=index setzte, sollte das eigentlich kein Problem sein? Oder doch?
Re: System: header.inc.php / footer.inc.php
Posted: 2003-05-18 17:32
by oxygen
Sicher kann das Probleme geben. Jeder der etwas php kann, kann sich die Struktur denken und das manuell eingeben.
Re: System: header.inc.php / footer.inc.php
Posted: 2003-05-18 17:37
by [ djthesound ]
Hallo,
oky, dann werd ich es wohl so machen (müssen), bevor mir jemand meinen Server ins Nirvana knallt. Danke dir für den Tip.
Nachdem ich jetzt in einen Unterordner verlinke (mit den Parameter), ist mir nochwas eingefallen... und zwar ein "Failsafe-System"... gibt also jemand einen falschen Link ein (index.php?content=gibtsnicht) möchte ich, dass dieser auf die Startseite geleitet wird.
Ist das für deine Begriffe sicher und sinnvol, denn sonst kommt ja nur einen PHP-Fehlermeldung, die auch nicht so toll aussieht *g* Wie würdest du das machen?
Re: System: header.inc.php / footer.inc.php
Posted: 2003-05-18 17:41
by oxygen
Ist auf jedenfall sinnvoll. Entweder man gibt eine Liste der erlaubten Dateien vor und fragt dann ab ob die aufgerufen Datei im array steht, oder man prüft mit file_exist().
Re: System: header.inc.php / footer.inc.php
Posted: 2003-05-18 18:21
by [ djthesound ]
Hallo, guten Abend!
Ja danke für den Tip mit file_exist(). Ich habe das jetzt so gelöst - also eigentlich gefällt mir das schonmal ganz gut

- hast du noch einen Verbesserungvorschlag?
Code: Select all
<?
// ------ Diverse Konfigurationen ------------------------------
// Content Ordner:
$contdir = "content/";
// Dateiendung im obigen Ordner:
$fileend = ".inc.php";
// Standartdatei, wenn kein Parameter angegeben wird:
$default = "index";
// -----------------------------------------------------------------------------
$file = $contdir.$_GET['content'].$fileend;
$defaultfile = $contdir.$default.$fileend;
// -----------------------------------------------------------------------------
include ("header.inc.php");
if (file_exists($file))
{
include ("$file");
} else {
include ("$defaultfile");
}
// Unsinnig, weil oben überprüft wird:
// if(isset($_GET['content'])) include ("$file");
// else include ("$defaultfile");
include ("footer.inc.php");
// -----------------------------------------------------------------------------
?>