Fehler 503 / 502 wegen Endlosschleife
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anweisung
array
aufruf
break
code
datei
endlosschleife
fehler
fehlerquelle
funktionieren
grad
grundlage
index
inhalt
lade
laden
page
switch
test
verzeichnis
-
Hallo,
mein Problem liegt darin, dass ein Verzeichnis nicht mehr aufgerufen werden kann, sobald meine PHP-Dateien hereingeladen werden. Es wird der Fehler 503 ausgegeben. Was jedoch wird an meinem PHP-Code nicht unterstützt?
<html> <head> <link rel="stylesheet" type="text/css" href="css.css"> </head> <body> <div id="wrapper"> <div id="header"></div> <div id="top"></div> <div id="links"><a href="http://createtheweb.lima-city.de/php/index.php?page=index">Index</a></ br> <a href="http://createtheweb.lima-city.de/php/news.php?page=news">News</a></ br> <a href="http://createtheweb.lima-city.de/php/test.php?page=test">Test</a></ br></div> <div id="mitte"> <?php /** * Array -> Inhalte sammeln * GET -> Datei laden * */ $page = array(); $page['index'] = 'index.php'; $page['news'] = 'news.php'; $page['test'] = 'test.php'; if (isset($_GET['page'])) { switch($_GET['page']) { case 'index': include('index.php'); break; case 'news': include('news.php'); break; case 'test': include('test.php'); break; } } else { include('index.php'); } ?> Das ist der Index.</div> <div id="rechts">rechts</div> <div id="footer">fusszeile</div> </div> </body> </html>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Naja, jetzt bekomme ich dieselbe Statusmeldung ("Derzeit nicht erreichbar"), nur mit Fehlercode 502.
Zum Selbergucken: http://createtheweb.lima-city.de/php/
Beitrag zuletzt geändert: 8.11.2010 10:47:56 von createtheweb -
öhm.. das ist ja die index.php die du da grad aufrufst..
und du includest da dann nochmal index.php drin? Das kann ja nicht funktionieren..
was möchtest du denn damit bezwecken? -
djfun schrieb:
öhm.. das ist ja die index.php die du da grad aufrufst..
und du includest da dann nochmal index.php drin? Das kann ja nicht funktionieren..
was möchtest du denn damit bezwecken?
Ich experimentiere gerade mit reinen CSS-Layouts, bei denen die Inhalte über PHP included werden.
Wie kann ich denn die Startseite includen oder liegt es speziell an der Bezeichnung "index"? -
Na sobald du in einer Seite die Seite selber includest, die sich dann auch wieder selber includet und so weiter und so fort, entsteht praktisch eine Endlosschleife.
-
Ah, und wie binde ich die Startseite nun mit ein?
Mit einer Fake-Startseite, also einer Kopie?
Und wie verhält sich das mit dem else-Fall? Darf dort dieselbe Seite angegeben werden?
Oder müsste auch hier gefaked werden? -
mach statt include ein require_once... damit dürfte der 503er Fehler nciht mehr kommen, sondern eine andere Fehlermeldung
und kannst du nciht einfach be den anderne seitenaufrufen den querycode mitliefern, wie ./index.php?q=news
und über $_GET['q'] in der switch-case den wert abfangen? das ist total umständlöich und anfällig für fehlerquellen, was du da machst! -
<html> <head> <title>Hallo</title> <link rel="stylesheet" type="text/css" href="css.css"> </head> <body> <div id="wrapper"> <div id="header"></div> <div id="top"></div> <div id="links"> <a href="http://createtheweb.lima-city.de/php/index.php?page=index">Index</a><br /> <a href="http://createtheweb.lima-city.de/php/index.php?page=news">News</a><br /> <a href="http://createtheweb.lima-city.de/php/index.php?page=test">Test</a><br /> </div> <div id="mitte"> <?php /* * GET -> Datei laden */ switch($_GET['page']) { case 'news': include('tpl/news.php'); break; case 'test': include('tpl/test.php'); break; default: include('tpl/index.php'); } ?> </div> <div id="rechts">rechts</div> <div id="footer">fusszeile</div> </div> </body> </html>
Wenn du eine Datei mit in sich selbst includest, wirst du selbstverständlich nicht weit kommen. Du brauchst eine Seite, die alle anderen Seiten included. Im o.g. Beispiel hast du nun eine index.php die je nach Aufruf von $_GET['page'] den entsprechenden Inhalt aus einer seperaten, im Verzeichnis tpl/ abgelegten Datei ausliest und im "mitte"-Containter anzeigt.
@sebulon
So eng sehe ich das garnicht ;)
Beitrag zuletzt geändert: 8.11.2010 16:41:58 von fabo -
Hallo Fabo,
wieso kommt der Switch in deinem Code ohne Auszeichnung der Fallvariablen aus?
Ich habe mir in den letzten Monaten Grundlagen beigebracht und mit Hilfe von Fachliteratur kleine Skripts selbst gebastelt, also verstehe ich noch nicht alle Zusammenhänge sofort. :) -
$_GET['page'] enthält ja schon alles, was du wissen musst. Switch ist nichts anderes als eine IF-Abfrage.
Pseudocode:
IF $_GET['page'] = news include tpl/news.tpl
-
Hm. Ich würde den Code jetzt so verstehen:
Wenn die Seite, die GET ['page'] holen soll = News ist, soll news.tpl inkludiert werden.
Aber woher weiß der Code, dass 'page' auch News sein könnte bzw. was mit der Variable 'page' gemeint sein könnte?
SIe wird ja nirgendwo mehr deklariert. -
Ob du nun schreibst:
$var = $_GET['page']; echo $var;
oder
echo $_GET['page'];
kommt auf das gleiche raus. Genauso verhält es sich bei einer Switch-Case Anweisung.
Ob du nun schreibst:
$var = $_GET['page']; switch($var){ ... }
oder
switch($_GET['page']){ ... }
ist wieder völlig gleich, da $_GET['page'] immer den gleichen Wert enthält, egal ob man es direkt verwendet oder in einer Variable zwischenspeichert.
Beitrag zuletzt geändert: 12.11.2010 14:25:29 von alfr3d -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage