Anzeige

include Fehler - Undefined index

include Fehler - Undefined index | PSD-Tutorials.de

Erstellt von Marotzke, 18.08.2008.

  1. Marotzke

    Marotzke Guest

    include Fehler - Undefined index
    Guten Morgen!

    Ich habe einen kleinen PHP-Fehler, der mir leider wenig sagt. Und zwar geht es darum, dass ich Seiteninhalte im HTML-Body mit include einbinden will:

    PHP:
    1.  
    2. <?php
    3. if( $_GET['page'] == "" ){ include "files/php/_start.php"; }
    4. else if( $_GET['page'] == "xx"){ include "files/php/_empty.php"; }
    5. else if( $_GET['page'] != "xx"){ include "files/php/".$page.".php"; }
    6. ?>
    7.  
    Das Problem lautet in etwa wie folgt: "Notice: Undefined index: page in ...". Soweit ich das verstanden habe, will die Software wohl, dass ich beim ersten if kein == "" angebe, sondern irgendwas dahinschreibe.

    Das Problem tritt NUR offline auf - online funktioniert alles perfekt. Die Variable $page enthält jeweils den zweibuchstabigen Seitennamen, dass "xx" ist der Wert für die leere Seite (ist ja auch nicht so wichtig). Aber es geht noch weiter (ebenfalls nur offline): Sobald ich eine Seite anklicke, die UNGLEICH "xx" ist, also alle anderen Seiten, die Inhalt haben, kommt der Fehler: "Warning: include(files/php/.php): failed to open stream: No such file or directory in ..."

    So einer z.B. geht nicht:
    http://XXXXXX.XXX/index.php?page=abc

    So einer geht aber doch:
    http://XXXXXX.XXX/index.php?page=xx

    Woran könnte es liegen, und warum funktioniert es NUR offline nicht? Wie könnte man das beheben oder besser oder anders machen?


    Danke für Hilfe schonmal ;)
     
    #1      
  2. gp812

    gp812 Newbster

    Dabei seit:
    23.12.2007
    Beiträge:
    278
    Geschlecht:
    männlich
    Ort:
    Stuttgart
    Software:
    CS3, EditPlus
    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    Auf deinem Server ist wohl register_globals auf on gesetzt, deswegen meckert php in diesem Fall nicht. Local ist register_globals auf off.
    Im Grunde ist das nur eine Warnung, dass die Variable $page gar net definiert ist. Mach vor deine If-Abfrage $page = $_GET['page'];
    Und bau deine Abfrage auf $page um. Dann muss es gehen.
     
    #2      
  3. xero7

    xero7 » Unterdrück(t)er

    Dabei seit:
    30.08.2006
    Beiträge:
    1.873
    Geschlecht:
    männlich
    Ort:
    » Bremen
    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    Wenn er Text haben will kannst es ja auch so machen:

    if ($wert1 == empty) {
    blablabla
    }

    Und sonst würde ich dir auch mal raten mit geschweiften Klammern zu arbeiten ist einfach übersichtlicher!
     
    #3      
  4. Marotzke

    Marotzke Guest

    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    @gp812
    Danke für die Hilfe, das war wohl die Lösung :)
    Jetzt geht es fehlerfrei. Aber WO auf dem Server kann ich das ausstellen? Also unterm Confixx gibts da meines Wissens nach nichts.. und auf die anderen Ordner habe ich glaubich keinen Zugriff (bin bei Revido).

    @xero7
    Der Befehl "empty" führt zur Ausgabe: "Parse error: syntax error, unexpected ')', expecting '(' in C:\Webseiten\index.php on line 52".

    Und ich arbeite doch mit geschweiften Klammern^^
     
    #4      
  5. sokie

    sokie Mod | Web

    Dabei seit:
    23.03.2008
    Beiträge:
    5.338
    Geschlecht:
    männlich
    Ort:
    Bünde NRW
    Software:
    <br>COREL <br> Texteditor
    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    hallo Marotzke.
    da hilft dir das Suchenin Confixx nicht weiter. diese Einstellung müsste in der php.ini geändert werden. Manche Provider gestatten es einige Werte in der php.ini selbst umzuschreiben.
    REGISTER_GLOBALS in der einstellung "off" ist allerdings a.) bei modernen phpVersionen Stndard, und b. sicherheitsrelevant.
    solche sachen kannst du ja wie weiter oben erklärt mit $page = $_GET['page']; in eine normale variable schreiben.
    nicht auf RETGISTER_GLOBALS = on zu setzen ist besserer Stil und sicherer
     
    #5      
  6. Marotzke

    Marotzke Guest

    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    Danke nochmals für die Antwort!

    Aber bei Revido kann ich da gar nichts umstellen. Ich habe kaum Ordnerzugriffe, kann nichtmal die Logs löschen usw. Vermutlich kostet mich der Luxus für jede Erweiterung so um die 30€... mod_rewrite ist ja schon so unglaublich günstig -_-

    Ok, arbeite ich eben drumherum mit den nicht-globalen Variablen.
     
    #6      
  7. Christian

    Christian verpeilt & verschallert

    Dabei seit:
    03.03.2005
    Beiträge:
    853
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 300D
    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    vielleicht sollte man noch anfügen, dass diese art des Codens sehr 'unschön' ist.
    Versuchs doch mal beispielsweise mit switch.
    PHP:
    1. switch( $_GET['page'] ){
    2.     case 'start': include('path/to/dir/file.php'); break;
    3.     case 'xx': include('path/to/dir/empty.php'); break;
    4.     default:
    5.         if(file_exists(( $file_path = '/path/to/dir/includes/'.(string)$_GET['page'].'.php'))){
    6.             include($file_path);
    7.         }else{
    8.             include('standart_leerer_bildschirm.php');
    9.         }
    10.     break;
    11. }
    (vereinfachtes Beispiel.)
     
    Zuletzt bearbeitet: 26.08.2008
    #7      
  8. Marotzke

    Marotzke Guest

    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    Hallo!
    Okay, nehm ich halt das, sieht auch viel schicker aus :)

    Was bewirkt aber der Teil "if(file_exists) ......."? Was soll er dort includen?

    Auf "Trial-And-Error" Basis mal versuchen, die Datei zur übergebenen Variable zu finden, falls dies nicht mit "case" weiter oben gesetzt wurde? Und wenn er nix findet, eine eigene Fehlerseite anzeigen?

    Würde gern noch sicherheitshalber genauer wissen, wie es dort gemeint ist, und warum die Sicherheitsabfrage nur da - die anderen Seiten könnten ja auch falsch sein (was mir aber NIE passieren würde) :)
     
    #8      
  9. Top_Gun

    Top_Gun Aktives Mitglied

    Dabei seit:
    24.07.2008
    Beiträge:
    965
    Geschlecht:
    männlich
    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    PHP:
    1. // Frage den Wert von $_GET['page'] ab
    2. switch( $_GET['page'] ){
    3.     // Wenn der Wert "start" ist: include die file.php und breche den switch ab
    4.     case 'start': include('path/to/dir/file.php'); break;
    5.     // Wenn der Wert "xx" ist: include die empty.php und breche den switch ab
    6.     case 'xx': include('path/to/dir/empty.php'); break;
    7.     // Für alle anderen Fälle:
    8.     default:
    9.         // nimm den Wert von $_GET['page'] und überprüfe ob es eine .php Datei mit diesem Namen gibt
    10.         if(file_exists(( $file_path = '/path/to/dir/includes/'.(string)$_GET['page'].'.php'))){
    11.             // wenn ja include diese Datei
    12.             include($file_path);
    13.         }else{
    14.             // wenn nicht include die standard_leerer_bildschirm.php
    15.             include('standart_leerer_bildschirm.php');
    16.         }
    17.     // breche den switch ab
    18.     break;
    19. }

    Korrigiert mich wenn ich es falsch kommentiert habe...

     
    #9      
  10. Christian

    Christian verpeilt & verschallert

    Dabei seit:
    03.03.2005
    Beiträge:
    853
    Geschlecht:
    männlich
    Kameratyp:
    Canon EOS 300D
    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    Nein ist korrekt kommentiert.

    Besonderes Augenmerk sollte allerdings dieser Zeile gelten, daher zerrupf ich sie mal:
    PHP:
    1.  if(file_exists(( $file_path = '/path/to/dir/includes/'.(string)$_GET['page'].'.php')))
    Diese Zeile lässt sich in 3 Argumente aufspalten:
    1. if()
    2. file_exists()
    3. ( $var = 'wert' )

    plus eine Stringkonvertierung:
    4. (string) $var

    Also wir fangen mal von unten nach oben an ( wenn man das in der Zeile ableiten würde, logischerweise von rechts nach links arbeiten wir die Argumentationskette durch )

    Zu 4:
    Man kann in PHP verschiedene Werte "konvertieren". Das verdeutliche ich am besten mal an einem Beispiel:
    PHP:
    1.  
    2. $wert = "0815";
    3. $var = (int) $wert; #$var hat nun den wert 815, da int (=integer) ganzzahlig bedeutet, und genau wie in Mathe schreiben wir keine 0 vor Zahlen!
    4. $var = (float) $wert; #$var hat nun den Wert 815.0 (wird besonders häufig bei str_replace funktionen angewendet
    5. $var = (string) $wert; #$var hat nun den Wert 0815, da php es nun nicht als zahl sondern als alphanumerische zeichenkette behandelt.
    Der Grund warum ich die Stringkonvertierung hier benutzt habe ist folgender Fall:
    Du gibst als Link an: index.php?page=0815984
    Wenn Du die KOnvertierung jetzt nicht vollziehen würdest wäre es möglich, dass PHP versucht die Datei 815984.php zu öffnen und die Null am anfang übersieht. Das ist ja nicht im Sinne des Erfinders.

    Zu 3 und 2:
    Wenn Du einen String einer Funktion übergeben willst und danach noch was damit machen willst hast Du die Möglichkeit diesen String einer Variable zuzuordnen. Beispiel:
    PHP:
    1.  
    2. <?
    3. //Ohne Zuordnung
    4. if(file_exists('bin/classes/meineklasse.php')){
    5.     include( 'bin/classes/meineklasse.php');
    6. }
    7. //Mit Zuordnung
    8. if (file_exists(($path = 'bin/classes/meineklasse.php'))) {
    9.     include( $path );
    10. }
    Die Art es so zu schreiben IST GLEICHBEDEUTEND MIT:
    PHP:
    1. <?
    2. $path = 'bin/classes/meineklasse.php';
    3. if (file_exists($path)) {
    4.     include( $path );
    5. }
    Ich hoffe ich konnte es dir ein wenig erleuchten,

    Liebe Grüße
    Christian

    Edit:
    und zu deiner Frage bzgl. Fehlerseite:
    Dieser Fall dass eine Seite nicht gefunden werden kann ist in dem Default: break; -Block abgefangen. Er schaut nach ob es eine Seite gibt die oben angefragt wird und wenn nicht, dann gibt es die seite standart_leerer_bildschirm.php
     
    Zuletzt bearbeitet: 29.08.2008
    #10      
  11. Marotzke

    Marotzke Guest

    include Fehler - Undefined index
    AW: include Fehler - Undefined index

    Zehntausend Dank @Top_Gun und @Peter_Unlustig :)

    Das war ausführlich genug, super!
     
    #11      
x
×
×