Probleme mit zusammenführen zweier Phpscripte

xlanhackerx

Mitglied
Hallöchen
Ich kenne mich ein wenig im bereich Php aus, aber bekomme trotzdem nicht folgendes hin !!

Ich habe diese zwei Scripte zusammengeführt:
php-templatesl
navigation-ueber-die-url-index-php-section-index.html

Ich habe also eine index.php erstellt mit folgendem Inhalt:
Code:
<?php
//index.php
include('config.php');

if(isset($_GET['section']) AND isset($dateien[$_GET['section']]))
{
 
 if(!file_exists($dateien[$_GET['section']])) echo "Die Datei ist nicht vorhanden.";

 include $dateien[$_GET['section']]; 
}
else
{
 include $dateien['error']; 
}
function gettemplate($template,$endung="html") {
$templatefolder = "templates";
return str_replace("\"","\\\"",implode("",file($templatefolder."/".$template.".".$endung)));
$title = "Test";
$inhalt = "Test";
eval("dooutput(\"".gettemplate("templates/layout")."\");");
 }
?>
Dann die config.php
Code:
<?php
//config.php

$dateien = array(); //Erstellt einen neuen Array $dateien
$dateien['home'] = "home.php"; //für jede Section ein neue Variable
$dateien['news'] = "news.php";  //usw.
$dateien['downloads'] = "downloads.php";
$dateien['error'] = "error.php";
?>
Die einzelnen php seiten habe ich bereits erstellt.

Im Ordner templates habe ich die layout.htm liegen.
Ansonsten ist nicht viel mehr dabei außer einer css datei welche das Design angibt, aber das gehört zum layout.htm

Vielleicht könnt ihr mir ja weiterhelfen. Ich möchte beide Codes zusammenbringen um so eine Dynamische Seite erstellen zu können. Es soll ja immer das gleiche Design auf den einzelnen Seiten gelegt werden.

Hoffe auf schnellen positiven Bescheid

Mfg. Oliver
 
Es passiert garnix, dass ist es ja.
Eigentlich müsste ich ja den Quelltext anschauen können sobald ich die index.php im Browser geöffnet habe, aber selbst da steht nix !!

Also vielleicht sollte ich etwas genauer beschreiben was ich vor habe.
Ich möchte eine Dynamische Website bauen, bei der jede Seite das gleiche Design hat. Also ein Grundgerüst ( layout.htm) Desweiteren möchte ich ja die verschiedenen Seiten per inhalt.php?section= laden. Ich weiß nicht warum nichts passiert. Ich habe schon versucht mit dem Dreamwaver nach fehlern zu suche, doch anscheinend ist das alles richtig.
Vielleicht habe ich nur einen kleinen fehler gemacht, dass ist ja das problem mit php, da muss man nur einen klammer oder einen backslash vergessen und schon ist alles im eimer.

Mfg. Oliver
 
Stell doch mal [phpf]error_reporting[/phpf] auf E_ALL, damit alle PHP Fehler angezeigt werden.
Prüfe auch nach ob display_errors auf "on" steht (php.ini oder [phpf]phpinfo[/phpf]).
Dies kannst du ggf. mit [phpf]ini_set[/phpf] auf on stellen, falls es nicht so ist.


Weiterhin deklarierst du zwar die Funktion gettemplate(), aber du führst sie nicht aus. Oder man sieht in den beiden Skripten nur nicht, wo du sie ausführst.
 
also die einstellungen sind gegeben und er gibt tatsächlich eine fehlermeldung bei der gettemplate function aus. Oh mir ist gerade ein Fehler aufgefallen. Ich habe ja die Funktion $templatefolder bereits angegeben und gebe aber den ordner templates ein weiteres mal aus in eval("dooutput(\"".gettemplate("templates/layout")."\");"); . das brauche ich doch garnicht, er holt doch das layout.html bereits aus dem Ordner templates.

Ich werde es weiterprobieren. Muss doch irgentwie laufen :confused:

Oliver
 
ok ich habe es hinbekommen
meine index.php
Code:
<?php

//index.php
include('config/config.php');

if(isset($_GET['section']) AND isset($dateien[$_GET['section']]))
{
 //Ist eine $_GET Variable vorhanden wird PHP angewiesen 
 //zu prüfen ob die Datei existiert und diese dann zu laden
 
 if(!file_exists($dateien[$_GET['section']])) echo "Die Datei ist nicht vorhanden.";

 include $dateien[$_GET['section']]; 
}
else
{
 //Wenn keine Variable oder Definition vorhanden ist
 //lade die Fehlerseite bzw. die Indexseite
 include $dateien['error']; 
}
function gettemplate($template,$endung="html") {
$templatefolder = "templates";
return str_replace("\"","\\\"",implode("",file($templatefolder."/".$template.".".$endung)));
}
function dooutput($template) {
echo $template;
}
$title = "Test";
//Der Inhalt wird z.B. aus einer Datenbank geholt
$inhalt = "test";
//jetzt der Aufruf, wo das Template geholt wird und die Platzhalter ersetzt werden.
eval("dooutput(\"".gettemplate("layout")."\");");
//Bei eval() muss beachtet werden, dass alle Hochkommas und Variablenzeichen ($) durch ein Backslash markiert werden

?>
und die layout.html
Code:
<html>
<head>
$site_metatags
$site_design
<title>$config[site_name] $config[site_title]</title>
<link rel="shortcut icon" href="images/favicon.ico">
</head>

<body>
<table border="0" cellspacing="0" cellpadding="0" width="100%" align="center">
 <tr>
  <td valign="top">
	<table border="0" cellspacing="0" cellpadding="0" width="$config[site_width]" align="center">
	 <tr>
	  <td align="center" valign="top">$site_kopf</td>
	 </tr>
	 <tr>
	  <td align="center" valign="top">$navigation_top</td>
	 </tr>
	 <tr>
	  <td align="center" valign="top">$inhalt</td>
	 </tr>
	 <tr>
	  <td align="center" valign="top">$navigation_bottom</td>
	 </tr>
	 <tr>
	  <td align="center" valign="top">$site_fuss</td>
	 </tr>
	</table>
  </td>
 </tr>
</table>

</body>


</html>

PS: das ist eigentlich die site.htm vom phpkit :suspekt:

Naja, jetzt bin ich auf jeden fall ein bischen schlauer geworden.
Nun muss ich es noch hinbekommen dass die error.php ein anderes Template läd als die anderen Seiten, denn bisher läd jede Seite das gleiche Design !! Vielleich kann mir ja jemand helfen :confused: :)

Mfg. Oliver
 
<?php

//index.php
include('config/config.php');

if(isset($_GET['section']) AND isset($dateien[$_GET['section']]))
{
//Ist eine $_GET Variable vorhanden wird PHP angewiesen
//zu prüfen ob die Datei existiert und diese dann zu laden

if(!file_exists($dateien[$_GET['section']])) echo "Die Datei ist nicht vorhanden.";

include $dateien[$_GET['section']];
}
else
{
//Wenn keine Variable oder Definition vorhanden ist
//lade die Fehlerseite bzw. die Indexseite
include $dateien['error'];
}

function gettemplate($template,$endung="html") {
$templatefolder = "templates";
return str_replace("\"","\\\"",implode("",file($templatefolder."/".$template.".".$endung)));
}
function dooutput($template) {
echo $template;
}
$title = "Test";
//Der Inhalt wird z.B. aus einer Datenbank geholt
$inhalt = "test";
//jetzt der Aufruf, wo das Template geholt wird und die Platzhalter ersetzt werden.
eval("dooutput(\"".gettemplate("layout")."\");");
//Bei eval() muss beachtet werden, dass alle Hochkommas und Variablenzeichen ($) durch ein Backslash markiert werden

?>

Kommentar zum Rotgefärbten:

Wieso bindest du denn ein phpscript ein wenn diese garnicht existiert Du gibst ja dann aus ->Die Datei ist nicht vorhanden. aber danach will das script trotzdem es includen obwohl diese datei nicht existiert! Und außerdem kann da keine Remote File Inclusion stattfinden was das Script unsicher macht!

MfG
KD3
 
öhm also dies rotmarkierte gehört zu dem navigationsscript. Und die fehlenden Elemente von denen du redest, diese sind in der config/config.php vorhanden.
Code:
<?php
//config.php

$dateien = array(); //Erstellt einen neuen Array $dateien
$dateien['home'] = "home.php"; //Startseite
$dateien['news'] = "news.php";  //Newsseite
$dateien['downloads'] = "downloads.php"; //Downloadseite
$dateien['error'] = "error.php"; //Errorseite (Fehlerseite)
include('inc.dbtabs.php');
?>

Es funktioniert ja nun mit den Template laden für die Seiten, bloß läd er für jede Section das gleiche template und das möchte ich ja nicht.

Hat jemand vielleicht eine Idee wie man ein Grunddesign für jede Seite herrichten kann, aber jede Section soll natürlich auf seinen Bereich abgestimmt werden, also News bei News, Downloads bei Downloads. Ich hoffe ihr wisst was ich meine


Mfg. Oliver
 
Zurück