Datei nicht vorhanden? Welche Datei?

ConnyF

Grünschnabel
Hallo liebe Forengemeinde

Ich habe mir erlaubt dieses Script zu verwenden, da ich in PHP ein ziemlicher Neuling bin und froh bin wenn ich ein Script fehlerfrei anpassen kann. Nun stellt mir hier die Frage, an welche Datei sich dieser Befehl bezieht.

PHP:
if(!file_exists($dateien[$_GET['section']])) echo "Die Datei ist nicht vorhanden.";
Ich habe die Configdatei im Verzeichnis "data", die Sites im "de" (weil es mehrere Sprachen geben wird) und die Seiten (Header, Navigation etc.) welche includet werden im Verzeichnis "includes". Deshalb habe ich dies auch angepasst:

PHP:
include('../data/config.php');
Die Suchfunktion habe ich selbstverständlich verwendet, aber es ist gut möglich dass ich etwas übersehen habe. Ich arbeite mit dieser Site das erste Mal mit Dreamweaver und Templates.

Danke
Conny
 
lass den Inhalt der Variabel einfach mal Ausgeben.
PHP:
echo $dateien[$_GET['section']];
Dann siehst du auf welche Datei er sich bezieht
 
Hi Shrek

Danke für den Denkanstoss ... darauf hätte ich eigentlich auch kommen sollen *räusper*.
Mit dem Echobefehl zeigte er mir den gesammten Pfad zu "index2.php" an welche an dieser Stelle beim Aufruf der index.php anzeigen soll. Für den Test habe ich bei "else" die error.php angegeben. Jetzt habe ich zwar keine Fehlermeldung mehr, aber egal auf welchen Link ich gehe, erscheint nur noch die error.php. Da ist also irgendwo noch ein Überlegungsfehler meinerseits drin. *grübl*
PHP:
<?php
//inhalt.php
include('../data/open-files.php'); //meine Configdatei
//echo $dateien[$_GET['open']];
if(isset($_GET['open']) AND isset($dateien[$_GET['index2.php']]))
{
//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['index2.php']])) echo "Die Datei ist nicht vorhanden.";
include $dateien[$_GET['index2.php']];
}
else
{
//Wenn keine Variable oder Definition vorhanden ist
//lade die Fehlerseite bzw. die Indexseite
include ('error.php');
}
?>
Die Links sehen demzufolge so aus:
www.irgendwas.de/index.php?open=seite3

Danke
Conny
 
Zuletzt bearbeitet:
Versuchs mal damit:
Die Funktion file_exists() gibt ein true zurück wenn die datei vorhanden ist. Was auch zutrifft. Wenn du diese jedioch negierst mit dem ! wird das ergebnis immer negiert sein.

PHP:
if(file_exists($dateien[$_GET['index2.php']])) echo "Die Datei ist nicht vorhanden.";
include $dateien[$_GET['index2.php']];
}
else
{
//Wenn keine Variable oder Definition vorhanden ist
//lade die Fehlerseite bzw. die Indexseite
include ('error.php');
 
Hallo Shrek

Habe das Ausrufezeichen "!" rausgenommen aber leider wird trotzdem weiterhin bei jeden Link die "error.php" angezeigt.

Für weitere Hinweise stets sehr dankbar.

Lg Conny
 
der fehler liegt in deiser zeile die schickt das Script immer in die else bedingung. Musst du halt mal testen welchen Inhalt die Variabeln haben. ausgeben lassen oder mit var_dump();

PHP:
if(isset($_GET['open']) AND isset($dateien[$_GET['index2.php']]))
 
*kreisch* Juhuiiiii ... jetzt funktionierts :-)
Dank Deiner Hilfe "Shrek" @->--

Die Änderungen die den Erfolg brachten habe ich mit Kommentaren versehen. Das Ausrufezeichen habe ich auch weg gelassen.
PHP:
<?php
//inhalt.php
include('../data/open-files.php');
//echo $dateien[$_GET['open']];
if(isset($_GET['open']) AND isset($dateien[$_GET['open']])) //// hier wieder open eingesetzt
{
//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['seite2.php']])) echo "Die Datei ist nicht vorhanden.";
include $dateien[$_GET['open']]; //// hier wieder open eingesetzt
}
else
{
//Wenn keine Variable oder Definition vorhanden ist
//lade die Fehlerseite bzw. die Indexseite
include ('error.php');
}
?>
Hatte gerade an einen anderen Problem (für mich) gearbeitet und soeben auch selbst gelöst. *hüpf*
Sorry für diese Euphorie, aber habe riessige Freude da dies wirklich Knacknüsse für mich waren und die haben mich schon zu lange (seit gestern am frühen Abend) aufgehalten. Jetzt kann ich endlich weiter arbeiten.

Lg Conny
 
Zurück