Hilfe bei Fehlersuche

maazus

Grünschnabel
Fehlersuche Navigation via url mit error-Seite

Hallo zusammen ...

habe ein kleines Problem und finde den Fehler einfach nicht :( Liegt vielleicht auch daran das ich ein PHP Neuling bin *g*

Problem:
Ich wollte eine Errorseite realisieren die ausgegeben wird, wenn eine Datei auf dem Server fehlt oder noch nicht hochgeladen wurde. Der Code dazu:

PHP:
<?php
include('config.php');
if(isset($_GET['seite']) AND isset($dateien[$_GET['seite']]))
{
if(!file_exists($dateien[$_GET['seite']]));
include $dateien[$_GET['seite']];
}
else
{
if(!isset($_GET['seite'])) {
  include $dateien['main'];
}
else {
  include $dateien['error'];
}
} 
?>

"main" ist die erste Seite die in der index.php angezeigt werden soll wenn keine "?seite=" übergabe erfolgt. "error" die entsprechende Errorseite.

Wenn ich nun eine Seite via index.php?=fehlende_seite aufrufe erhalte ich folgendende Fehlermeldung :

a) Warning: main(testseite.php): failed to open stream: No such file or directory in ...
b) Warning: main(): Failed opening 'favoriten.php' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/php/lib/php:/usr/local/php/share/pear') ...

Kann mir jmd von euch weiterhelfen? Thx im Voraus!

Gruß
marcus

P.S.: Die config.php sieht wie folgt aus:

PHP:
<?php
//config.php
$dateien = array();
$dateien['main'] = "main.php";
$dateien['news'] = "news.php";
...
usw.
?>
 
Zuletzt bearbeitet:
Diese Zeile ist etwas seltsam:
Code:
if(!file_exists($dateien[$_GET['seite']]));
Wieso ist da ein Semikolon hinter? Und außerdem: Auch wenn da kein Semikolon wäre, würde die Zeile bedeuten, dass eine nicht-existierende Seite mit der darauffolgenden include-Anweisung eingebunden werden soll. Etwas eigentümlich! Dein Code ist aus kosmetischer Sicht nicht so fein, aber na ja -- bist ja Anfänger ;)

-Gawayn
 
Probier mal Folgendes:
PHP:
<?php

	include('config.php');
	if( isset($_GET['seite']) && isset($dateien[$_GET['seite']]) ) {
		if( file_exists($dateien[$_GET['seite']]) ) {
			include $dateien[$_GET['seite']];
		} else {
			include $dateien['error'];
		}
	} else {
		include $dateien['main'];
	}

?>
 
@Gumbo: Ich halte es nicht für sinnvoll, vollständigen Code hier zu posten. Der Sinn des Forums ist in erster Linie, das notwendige Wissen zu vermitteln, nicht die Hausaufgaben zu machen.
 
Manchmal ist es aber einfach mal eben den gesamten Code zu posten und zu hoffen, dass derjenige was daraus lernt als immer nur mit dem Brueckenpfeiler zu winken und dann 20 weitere Posts kommen nach dem Motto: "Und wie genau muss ich das machen?" oder "Wo muss ich das jetzt einbinden?"
Das ist naemlich auf Dauer naemlich wirklich nervtoetend.
 
Na ja -- auch das zählt dazu, dass man sich nämlich selbst Gedanken macht und sich eben nicht alles erzählen lässt. Wenn man das nicht kann, kann man das Programmieren gleich lassen. Oder will ich mir jedes meiner Programme diktieren lassen? Selbstverständlich kann man aus fertigem Code auch viel lernen, allerdings tut man das nur dann, wenn man ihn auch versteht und nicht bloß in seine eigenen Sachen einbaut.
 
Gawayn hat gesagt.:
Na ja -- auch das zählt dazu, dass man sich nämlich selbst Gedanken macht und sich eben nicht alles erzählen lässt. Wenn man das nicht kann, kann man das Programmieren gleich lassen.
Das seh ich auch so, aber erzaehl das hier mal einem der so doof nachfragt. Der wird Dich gleich verklagen und verbal zusammenschlagen.
Ich bin ja auch eher einer der mit dem Brueckenpfeiler winkenden Fraktion, und fordere die Leute durchaus auch mal dazu auf aktiv mitzudenken, da ja ansonsten $lernfaktor==0 ist.
 
Hallo zusammen :)

Erstmal thx für eure Posts :) Unterm Strich kann ich sagen das ich heute - dank euch - einiges dazugelernt habe *g*

dank Gawayn:
a) kosmetisch aufgepeppt - wenn auch nicht perfekt - findet man das Problem schneller
b) // kommentare verschaffen echten Überblick *g*

dank Gumbo:
c) wieder Mut gefasst ;) bis auf die Seiten war´s schon vollkommen korrekt

und last but not least dank an reptiler:
d) der mir mit seiner Brückenpfeiler-Theorie die Worte aus dem Mund genommen hat *fg*

und hier das Resultat:

PHP:
<?php 
include('config.php'); 
if(isset($_GET['seite']) AND isset($dateien[$_GET['seite']])) 
{ 
     //ist eine $_GET Variable vorhanden wird PHP angewiesen 
     //zu prüfen ob die Datei existiert 
     if(!file_exists($dateien[$_GET['seite']])) 

     //wenn nicht wird die error Seite ausgegeben
     include $dateien['error']; 
          else 
                {
                //wenn ja wird die angeforderte Seite ausgegeben 
                include $dateien[$_GET['seite']]; 
                }
} 
          else 
                { 
                //wenn keine Variable vorhanden ist 
                //lade die Index-Seite mit "Start"-Inhalt
                include $dateien['main']; 
                } 
?>

Gruß
marcus
 
Noch ein Tipp zum Thema Überblick: Gewöhn es dir an, den Quellcode visuell zu strukturieren – sprich: Einrückungen für logische Abschnitte/Blöcke.
 
Zurück