Marlon: Versteh die Welt nicht mehr: Konstanten in if

Hi.

Ich habe folgenden Quellcode:

  
if( !USERNAME ||  
 empty(USERNAME) ||  
 !isset(USERNAME) ||  
 !user_in_db(USERNAME) ){  
 echo "Tu dies".";  
}  

USERNAME ist eine Konstante die davor definiert wurde. user_in_db() ist eine benutzerdefinierte Funktion.
PHP gibt mir folgende Fehlermeldung:

Parse error: syntax error, unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM in ... on line 57

In Zeile 57 ist die empty()-Funktion.

Brauch ich für Konstanten eine andere Schreibweise als für Variabeln? Habe davor noch nicht so viel mit Konstanten gearbeitet, deshalb weiß ich das nicht so genau.

lg
marlon

  1. Hallo!

    Parse error: syntax error, unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM in ... on line 57

    In Zeile 57 ist die empty()-Funktion.

    Das sagt die Doku zu empty():

    Note:
    empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).

    mfg
      frafu

  2. Hallo,

    Ich habe folgenden Quellcode:

    Woher?

    if( !USERNAME ||
    empty(USERNAME) ||
    !isset(USERNAME) ||
    !user_in_db(USERNAME) ){
    echo "Tu dies".";
    }

    Der Code bewirkt folgendes:

    Wenn USERNAME als Konstante [false|null|''|0] ist, aber definiert
      oder
      Wenn USERNAME [false|null|''|0] ist
      oder
      Wenn USERNAME nicht definiert ist
      oder
      ...

    Wolltest Du das so?

    Wenn nämlich USERNAME nicht deklaiert wurde, gibt PHP stattdessen den String USERNAME zurück. Dieser wäre nach einfachem Vergleich immer true.

    Was willst Du denn eigentlich erreichen?
    Bitte im Klartext!

    LG
    Chris

  3. Hallo Marlon.

    echo "Tu dies".";
    }

      
    Fällt dir hier (unter Zuhilfenahme des Syntax-Highlighting) etwas auf?  
      
      
    Einen schönen Donnerstag noch.  
      
    Gruß, Ashura  
    
    -- 
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|  
    [<mathbr:del.icio.us/>](http://del.icio.us/mathbr) [<mathbr:w00t/>](http://w00t.noctus.net)
    
    1. Hi

      echo "Tu dies".";
      }

      
      >   
      > Fällt dir hier (unter Zuhilfenahme des Syntax-Highlighting) etwas auf?  
        
      Ja, aber ich hab euch ja nicht meinen Originalcode gegeben ;-) Statt dem 'echo "Tu dies".";' sind bei mir noch bestimmt 20 Zeilen an Quellcode, die euch aber nicht interessieren brauchen.  
        
      Bye  
      Marlon
      
  4. Hallo Marlon,

    if( !USERNAME ||
    empty(USERNAME) ||
    !isset(USERNAME) ||
    !user_in_db(USERNAME) ){
    echo "Tu dies".";
    }

    
    >   
    > USERNAME ist eine Konstante die davor definiert wurde. user\_in\_db() ist eine benutzerdefinierte Funktion.  
    > PHP gibt mir folgende Fehlermeldung:  
      
    Eine Konstante kann man mit [defined('KONSTANTEN_NAME')](http://de.php.net/manual/de/function.defined.php) prüfen.  
    empty() und isset() sind da denkbar ungeeignet.  
      
    
    > Parse error: syntax error, unexpected ')', expecting T\_PAAMAYIM\_NEKUDOTAYIM in ... on line 57  
      
    T\_PAAMAYIM\_NEKUDOTAYIM ist ist übrigens der doppelte Doppelpunkt "::"  
      
      
    MffG  
    EisFuX
    
    -- 
    ... [Suchmaschinen-Blog](http://www.kso.co.uk/de/blog/) ...