Jürgen: php Fehlermeldung / ratlos

Guten Tag,

ich habe an den ganzen Morgen an einer Klasse gearbeitet und nun bekomme ich folgende Fehlermeldung. An der Funktion auf die sich die Fehlermeldung bezieht wurde aber nichts geändert.

Was ich überhaupt nicht verstehe is die Fehlermeldung von phpmyadmin.
Wieso kommt eine Fehlermeldung von diesem Programm, wenn ich meine homepage starte?

Warning: Failed opening './lang/english-iso-8859-1.inc.php' for inclusion (include_path='.;C:\php4-win32-STABLE-200307140830\pear') in C:\Programme\phpmyadmin\libraries\select_lang.lib.php on line 296

Undefined index: HTTP_X_FORWARDED_FOR in d:\dentona_new\classes\control\useradmin.class.php on line 58

function getClientIP()
{
 if (!($ip = $_SERVER['HTTP_X_FORWARDED_FOR']))
 {
     if (!($ip = $_SERVER['REMOTE_ADDR']))
  {
        $ip = "Proxy";
  }
   $this->clientIP = $ip;
 }
}

Danke

  1. Hallo,

    Warning: Failed opening './lang/english-iso-8859-1.inc.php' for inclusion (include_path='.;C:\php4-win32-STABLE-200307140830\pear') in C:\Programme\phpmyadmin\libraries\select_lang.lib.php on line 296

    Da steht der eine Fehler.
    Das Includieren funktioniert nicht.
    Vermutlich ist der Pfad falsch.
    Lies:
    http://www.dclp-faq.de/q/q-fehler-include.html

    Undefined index: HTTP_X_FORWARDED_FOR in d:\dentona_new\classes\control\useradmin.class.php on line 58
     if (!($ip = $_SERVER['HTTP_X_FORWARDED_FOR']))

    if ($var1 == $var2)
        { /* tue dies */ }

    Auf Ungleichheit prueft man mit !=
      if ($var1 != $var2)
        { /* tue dies */ }

    Gruesse,

    Thomas

    1. Hi,

      ich denke Du hast nicht gelesen was ich geschrieben habe?

      Was habe ich mit phpmyadmin zu tun? Die Fehlermeldung bezieht sich auf phpmyadmin, dass ich mal nach c: entzipped hatte.
      Was hat aber meine lokale HP mit diesem Ordner zu tun?

      Und mit dem http-x-forward hatte ich vorher nie Probleme!

      Gruß

      Jürgen

      1. hi,

        ich denke Du hast nicht gelesen was ich geschrieben habe?

        ich denke, du hast die antwort nicht gelesen, oder nicht verstanden.

        Was habe ich mit phpmyadmin zu tun? Die Fehlermeldung bezieht sich auf phpmyadmin, dass ich mal nach c: entzipped hatte.
        Was hat aber meine lokale HP mit diesem Ordner zu tun?

        woher sollen _wir_ das wissen? _dein_ script versucht offenbar die datei zu includen, die nicht gefunden wird.

        Und mit dem http-x-forward hatte ich vorher nie Probleme!

        dann hast du eben jetzt eins. wie du es lösen/umgehen kannst, wurde dir ja gesagt.

        gruss,
        wahsaga

      2. Hallo,

        Was habe ich mit phpmyadmin zu tun? Die Fehlermeldung bezieht sich auf phpmyadmin, dass ich mal nach c: entzipped hatte.
        Was hat aber meine lokale HP mit diesem Ordner zu tun?

        Also, nochmal von vorne:
        Die Fehlermeldung lautet:

        Warning: Failed opening './lang/english-iso-8859-1.inc.php' for inclusion (include_path='.;C:\php4-win32-STABLE-200307140830\pear') in C:\Programme\phpmyadmin\libraries\select_lang.lib.php on line 296

        Offenbar wird also das Skript
        C:\Programme\phpmyadmin\libraries\select_lang.lib.php
        ausgefuehrt.

        Wie ist die URL des Skripts, das Du aufrufst?
        (http://localhost/...)
        Was hast Du in dem Skript fuer Include-Befehle?
        Welchen Webserver verwendest Du?
        Wo ist Dein Document Root? (Bei Apache: siehe httpd.conf)
        Hast Du PHP selbst installiert und konfiguriert,
        oder hast Du irgendein "Paket" (WAMPP oder so) genommen?

        Gruesse,

        Thomas

        1. Hi,

          Offenbar wird also das Skript
          C:\Programme\phpmyadmin\libraries\select_lang.lib.php
          ausgefuehrt.

          Wie ist die URL des Skripts, das Du aufrufst?
          (http://localhost/...)

          Benutze den Omnicron http server. gebe in der adressleiste schon immer "localhost" ein.

          Was hast Du in dem Skript fuer Include-Befehle?

          Habe keine includes in dem sriptt news.php das ich aufrufe.

          Welchen Webserver verwendest Du?

          Omnicron http.

          Wo ist Dein Document Root? (Bei Apache: siehe httpd.conf)

          d:\homepage

          Hast Du PHP selbst installiert und konfiguriert,
          oder hast Du irgendein "Paket" (WAMPP oder so) genommen?

          Ist bei omnicon mit dabei.

        2. Hi,

          Problem gelöst.

          Ein absolut mordsmäßig glücker Zufall hat meine 5 stündige Suche nach dem Problem gelöst.
          Habe alle Klassen die von einander erben und aufeinander zufreifen auf den Kopf gestellt. Wäre fast wahnsinnig geworden.

          Das Problem war.

          Ich hatte vor 2 Stunden die config datei von phpmyadmin von meinem webspace provider heruntergeladen, um die configuration zu sichern bevor ich die neue Version von phpmyadmin dorthin kopiert habe.
          Jetzt befand sich die config datei auf c:.

          Immer wenn ich den localhost aufrief, der auf d:\homepage zeigt wurde die config datei aufgerufen. Das habe ich dadurch festgestellt, nachdem ich c:\programme\phpmyadmin einfach umbenannt habe. Konnte mir nicht erklären was das Datenbanktool mit meiner homepage zu tun hat.

          Warum aber die config.inc.php aufgerudfen wird ist mir immer noch nicht klar.
          Aber hätte ich nicht zufällig versucht den phpmyadmin Ordner umzubennenen, wäre dich wohl diese Woche nicht mehr auf die Lösung gekommen.

          Weiß jemand was das passiert ist?

          Danke

    2. Hi,

      Undefined index: HTTP_X_FORWARDED_FOR in d:\dentona_new\classes\control\useradmin.class.php on line 58
      if (!($ip = $_SERVER['HTTP_X_FORWARDED_FOR']))

      • $_SERVER['HTTP_X_FORWARDED_FOR'] ist offenbar
          nicht definiert.
          Du solltest vorher pruefen:
          IF (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
            { /* Tue dies und das... */ }

      Ich teste doch bereits ob sie gesetzt ist.
      $_SERVER['HTTP_X_FORWARDED_FOR']) wird in die Variable $ip kopiert und negiert.

      • Zum Vergleichen nimmt man _zwei_ Gleichzeichen.

      Ja, das weiß ich, aber was soll diese Information ?

      Gruß

      Jürgen

      1. Hallo,

        if (!($ip = $_SERVER['HTTP_X_FORWARDED_FOR']))
        Ich teste doch bereits ob sie gesetzt ist.

        Naja, hoechstens _sehr_ indirekt.
        Du weist erstmal direkt zu, ohne zu wissen, ob die zweite Variable
        existiert oder nicht.
        Dann negierst Du das Ergebnis dieses Vorgangs.

        Laut
        http://www.php.net/manual/de/language.operators.assignment.php
        gilt:
        "Der Wert eines Zuweisungs-Ausdruckes ist
        der zugewiesene Wert.
        D.h. der Wert des Ausdruckes "$a = 3" ist 3."

        Bei Dir laeuft es demzufolge so:
        Mit
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR']
        weist Du $ip den Wert einer offenbar nicht definierten Variable zu.
        Der Wert des Ausdrucks ist also vermutlich auch
        "undefiniert" oder eventuell FALSE.
        Was die Negation (mit "!") von "undefiniert" ist, weiss ich nicht.
        Das Gegenteil von FALSE waere natuerlich TRUE.

        Ich faende es sauberer, klarer und sicherer,
        ein isset() vorzuschalten:
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
         { ... }

        • Zum Vergleichen nimmt man _zwei_ Gleichzeichen.
          Ja, das weiß ich, aber was soll diese Information ?

        Ich dachte, dass Du damit:

        if (!($ip = $_SERVER['HTTP_X_FORWARDED_FOR']))

        schauen wolltest, ob $ip ungleich $_SERVER... ist, also
        logisch gesehen das gleiche wie

        if (!($ip == $_SERVER['HTTP_X_FORWARDED_FOR']))
        bzw.
        if (($ip != $_SERVER['HTTP_X_FORWARDED_FOR']))

        Es ist ein beliebter Fehler (der auch alten Hasen mal passiert),
        nur ein Gleichzeichen zu nehmen, wenn man eigentlich
        den Vergleichsoperator meint.
        Solange alles "gut geht", merkt man oft lange nichts davon...

        Gruesse,

        Thomas