Seite 1 von 1

noob-frage

Verfasst: 22.06.2006 14:58
von phpnoob18
hi!

sorry wenn ich hier so reinplatze. ich hoffe es ist korrekt das ich meine frage hier stelle.

ich habe ein kleines phpskript welches ganz simple anhand des ausgelesenen users über .htaccess ein echo zurückgeben soll. der erste wert funktioniert auch aber der zweite nicht. der wird einfach übergangen.

ich glaube ich habe irgendwo einen fehler - nur wo? kann mir wer helfen? pls?

Code: Alles auswählen

if($_SERVER{'REMOTE_USER'}==001)
    {
    echo "Müller, Andreas";
    exit();
    }
  elseif($_SERVER{'REMOTE_USER'}==099)
    {
    echo "Müller, Liese)";
    exit();
    }
    else{
print $_SERVER{'REMOTE_USER'};
}

Re: noob-frage

Verfasst: 22.06.2006 17:01
von Spezial

Code: Alles auswählen

if ($_SERVER['REMOTE_USER'] == 001)
    echo "Müller, Andreas";
elseif ($_SERVER['REMOTE_USER'] == 099)
    echo "Müller, Liese)";
else
    echo $_SERVER['REMOTE_USER'];
1. Wenn du echo benuzt, solltest du auch bei echo bleiben.
2. Es ist nicht $_SERVER{} sondern $_SERVER[].
3. Die Syntax solltest du bei jedem else und if gleich lassen, das verbessert die Übersicht.
4. exit() brauchste bei if und else auch nicht.
5. Bei nur einem Befehl brauch man auch die { und } der if's nicht.

4. und 5. sparen System-Ressourcen, sind aber freiwillig ;)

Re: noob-frage

Verfasst: 22.06.2006 17:21
von Banger
Na komm, machen wir's gleich ordentlich:

Code: Alles auswählen

switch($_SERVER['REMOTE_USER']) {
  case '001': 
    echo "Andreas"; 
    break;
  case '099': 
    echo "Liese"; 
    break;
  default: 
    echo $_SERVER['REMOTE_USER'];
}
Zum Fehler: Vorsicht bei den Vergleichen; 099 != 99 != '099' - wieder einmal ein gutes Beispiel, warum man sich nicht auf das automatische Typecasting von PHP verlassen sollte; die Falle steckt in der 0 vor dem 099 - dadurch wird 099 als hexadezimale Zahl interpretiert.

Also, falls der User '099' heißt, auch auf den String '099' vergleichen. :)

Re: noob-frage

Verfasst: 23.06.2006 00:39
von Pyramide
Banger hat geschrieben:die Falle steckt in der 0 vor dem 099 - dadurch wird 099 als hexadezimale Zahl interpretiert.
Nicht ganz - als Oktal. Aber weil es da keine Ziffer 9 gibt, wird aus 099 der Wert 0.

Verfasst: 23.06.2006 07:46
von phpnoob18
vielen, vielen dank für eure antworten! das script läuft nun wie gewünscht


ich wünsche allen ein schönes wochenende! :)

Re: noob-frage

Verfasst: 23.06.2006 11:23
von Banger
Pyramide hat geschrieben:Nicht ganz - als Oktal.
Klar, hast Recht - das kommt davon, wenn man neben der Arbeit mittippt :)

Aus diesem Grund verwende ich bei intval() mittlerweile grundsätzlich die 10 als zweiten Parameter, nachdem ich einmal einen ganzen Tag mit der Fehlersuche verbracht habe, bis es mir aufgefallen ist :)