Seite 1 von 2
content includen geht auf goneo webspace nicht ?!
Verfasst: 01.08.2007 06:57
von Noxxx
hi ich möchte eine php seite in einer andere Includen, bis jetzt nahm ich dazu immer folgenden Code
Code: Alles auswählen
<?php
if (isset($_GET['content']))
{
$content = $_GET['content'];
// Seiten in ein Array packen
$inc_files = explode(',', $content);
foreach ($inc_files as $inc_file)
{
switch (strtolower($inc_file))
{
case news: include('news.php');
break;
case Impressium: include('impr.php');
break;
case Kontakt: include('kontakt.php');
break;
}
}
}
else
{
include('news.php');
}
?>
auf der einen website funktioniert dieser auch tadellos, nun habe ich einen anderen neuen webspace anbieter und da geht der code nichtmehr ? es inludet mir nur die news aber keine anderen
kann mir jemand vielleicht nen typ geben ?
Code Tags zur besseren Übersicht aktiviert//gn#36
Verfasst: 01.08.2007 10:49
von gn#36
Da ist - was die Funktionsfähigkeit angeht - eigentlich nichts dran auszusetzen, zumindest wenn die Variable auch das enthält was sie soll. Mir fällt allerdings auf, dass du keinen default setzt, so dass - bei fehlerhaftem Variableninhalt - es vorkommen kann, dass du keinen der Fälle bearbeitest und einfach nichts eingebunden wird. ich würde daher zusätzlich noch
oder etwas ähnliches einfügen.
Falls du den Fehler nicht findest als Tipp: Aktiviere mal
Damit solltest du sämtliche PHP Fehler die so im Betrieb auftauchen ausgegeben bekommen, u.a. auch nicht initialisierte Variablen, damit kannst du schon mal Tippfehler oder auch komliziertere Fehler finden.
EDIT: Ich sehe gerade: Da ist ein logischer Fehler drin. Der Rest dürfte eigentlich vorher auch niemals inkludiert worden sein, denn wenn du strtolower auf eine Variable anwendest enthält sie danach nur noch Kleinbuchstaben, deine beiden anderen Cases enthalten aber Großbuchstaben.
Verfasst: 01.08.2007 11:31
von Noxxx
naja jetzt ist es ja so das wenn was fehlerhaftes eingeben wird oder was falsches includet wird dann zieht er ja aufgrund des befehls
else
{
include('news.php');
die news.php. ! Oder Irre ich mich da ?!?!?!? denn das hat bis jetzt immer geklappt !
trtolower auf eine Variable anwendest enthält sie danach nur noch Kleinbuchstaben, deine beiden anderen Cases enthalten aber Großbuchstaben.
???? wie muss ich das da abändern ? und wo setz ich das error_reporting(E_ALL); rein ? oderist das egal ?!
Verfasst: 01.08.2007 11:38
von Dr.Death
KLeiner Denkanstoss:
Was ist wenn im link -->
?content=blabla drinsteht ?
Dann wird Deine "news.php" nicht included

Verfasst: 01.08.2007 11:53
von Noxxx
also muss der code jetzt dann so aussehen ?!
<?php
if (isset($_GET['content']))
error_reporting(E_ALL);
{
$content = $_GET['content'];
// Seiten in ein Array packen
$inc_files = explode(',', $content);
foreach ($inc_files as $inc_file)
{
switch (strtolower($inc_file))
{
case news: include('news.php');
break;
case Impressium: include('impr.php');
break;
case Kontakt: include('kontakt.php');
break;
}
}
}
else
{
include('news.php');
}
default:
include('news.php');
?>
aber was nehm ich alternativ zu dem
damit er auch großbuchstaben nimmt ?
Verfasst: 01.08.2007 12:27
von Dr.Death
Nein, du hast wohl die Switch Anweisung nicht vertsanden...
Code: Alles auswählen
<?php
if (isset($_GET['content']))
{
error_reporting(E_ALL);
$content = $_GET['content'];
// Seiten in ein Array packen
$inc_files = explode(',', $content);
foreach ($inc_files as $inc_file)
{
switch (strtolower($inc_file))
{
case news: include('news.php');
break;
case Impressium: include('impr.php');
break;
case Kontakt: include('kontakt.php');
break;
default:
include('news.php');
break;
}
}
}
else
{
include('news.php');
}
?>
Zudem schreibe alle Variablen "klein". Mal Groß, mal klein...da blickt im Fehlerfall keiner mehr durch. Genauso bei den File-Namen.
Aber wenn Du es trotztdem möchtest, tausche:
mit
aus.
Verfasst: 01.08.2007 12:45
von Noxxx
Verfasst: 01.08.2007 15:53
von gn#36
Außerdem dran denken: Mache aus "Konktakt" im Switch "kontakt" da du vorher auf die Variable strtolower anwendest. Ein Großbuchstabe wird da niemals rauskommen von daher könntest du auch gleich den ganzen Case weglassen, aber da du das vermutlich nicht willst sondern falls da "Kontakt" steht eben kontakt.php einbinden willst solltest du da besser Kleinbuchstaben draus machen. Analog beim "Impressium" (das schreibt man übrigens eigentlich "Impressum"

)
Verfasst: 01.08.2007 16:21
von Noxxx
Verfasst: 01.08.2007 16:42
von Pyramide
Strings werden übrigens in ' oder " eingeschlossen.