noob-frage

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
phpnoob18
Mitglied
Beiträge: 2
Registriert: 22.06.2006 14:55

noob-frage

Beitrag 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'};
}
Benutzeravatar
Spezial
Mitglied
Beiträge: 135
Registriert: 15.07.2004 08:53
Wohnort: Braunschweig
Kontaktdaten:

Re: noob-frage

Beitrag 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 ;)
Wenn Chuck Norris ins Wasser fällt, wird er nicht nass…aber das Wasser wird Chuck Norris.
Benutzeravatar
Banger
Ehemaliges Teammitglied
Beiträge: 375
Registriert: 03.05.2005 21:53
Wohnort: Düsseldorf
Kontaktdaten:

Re: noob-frage

Beitrag 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. :)
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: noob-frage

Beitrag 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.
KB:knigge
phpnoob18
Mitglied
Beiträge: 2
Registriert: 22.06.2006 14:55

Beitrag 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! :)
Benutzeravatar
Banger
Ehemaliges Teammitglied
Beiträge: 375
Registriert: 03.05.2005 21:53
Wohnort: Düsseldorf
Kontaktdaten:

Re: noob-frage

Beitrag 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 :)
Antworten

Zurück zu „Coding & Technik“