Undefined index, Language

kosovafan

Erfahrenes Mitglied
Hallo,

ich bekomme die folgende Fehlermeldungen in der Log:

Code:
[30-Jul-2013 00:45:37 Europe/Berlin] PHP Notice:  Undefined index: HTTP_ACCEPT_LANGUAGE in /var/www/silviosiefke.de/htdocs/index.html on line 20


Das PHP Script:

PHP:
<?php
require_once "functions.php";
$mobile = mobile();

if ($mobile)
        {
                if (substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2) == "de")
                {
                                include_once "tpl/deu/index.mobile.php";
                }

                else
                {
                                include_once "tpl/eng/index.mobile.php";
                }
        }

else
        {
                if (substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2) == "de")
                {
                                include_once "tpl/deu/index.php";
                }

                else
                {
                                include_once "tpl/eng/index.php";
                }
        }

?>

Es geht um die 2 Zeile im else Zweig. Wenn ich das richtig verstehe geht es um die Default Language, weswegen die Notice geschmissen wird. Aber praktisch ist doch mit der if Anweisung de als default gesetzt, oder irre/verstehe ich nichts?


Vielen Dank.


Silvio
 
Hallo,

immer zuerst die Fehlermeldung lesen:
Undefined index: HTTP_ACCEPT_LANGUAGE
Ok, nun wissen wir, dass dieser Schlüssel (auch Index genannt) im Array $_SERVER nicht existiert.

Die PHP-Doku über HTTP_ACCEPT_LANGUAGE:
Contents of the Accept-Language: header from the current request, if there is one. Example: 'en'.
"if there is one", d.h. wenn der Browser keine Information darüber dem Server geschickt hat, existiert der Schlüssel auch nicht.

Die (Nicht)Existenz eines Schlüssels kannst du mittels [phpf]isset[/phpf] prüfen:
PHP:
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
  // existiert
}
else {
  // nicht
}
 
Danke, ja ich muss mehr wie ein Programm denken. Das habe ich nicht einkalkuliert, obwohl ich das hätte erkennen müssen. Die Meldung erscheint nur bei Bots oder wenn ich wget nutze. Ja die Lösungen sind oft so klein.

Vielen Dank.

Silvio

Ja das stimmt, ist nur ein Notice Eintrag, aber ich finde es sollte alles ohne Meldungen laufen.


Vielen Dank.

Silvio
 
Ja das stimmt, ist nur ein Notice Eintrag, aber ich finde es sollte alles ohne Meldungen laufen.

Sollte es auch auf jeden Fall! Generell sollten keine Notice Einträge oder Warnungen egal bei welcher Programmierumgebung auftreten. Natürlich gibt es eine einige Ausnahmen, welche man getrost ignorieren kann (oder sogar ausblenden, z.B. bei C++-Compilern).

Aber ich glaube, Yaslaw wollte dich nur korrigieren, weil du von Fehlern sprachst.

Wie gesagt, die Lösung zum Beheben habe ich dir ja schon fast hingeschrieben. Einfach mit 'ner kleinen If-Bedingung prüfen.
 
Aber ich glaube, Yaslaw wollte dich nur korrigieren, weil du von Fehlern sprachst.

Das ist richtig. Ist auch schön das Leute helfen, das macht es Anfängern einfacher. Es war auch
nicht böse gemeint. Weil das Script ist schon produktiv im Einsatz und nachdem ich das mit Logs
verglichen hatte und es selbst mit mehereren Browsern und Sprachen probiert habe, habe ich
die Meldung nicht so verstanden. Aber wie gesagt, die Fehler traten nur bei Bots und wget auf.

Danke für die Hilfe euch allen.


MFG
Silvio
 
Zurück