Anzeige:
Ergebnis 1 bis 12 von 12

Thema: isset() vs. empty()

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.05.2006
    Ort
    Bremen
    Beiträge
    39

    isset() vs. empty()

    Hallo,
    um mir das Leben zu erleichter wollte ich eigentlich nur eins wissen,
    kann ich für
    Code:
    if (isset($xyz))
    {
        if ($xyz == '')
        {
            // Source
        }
    }
    nicht gleich diesen Sourcecode einsetzen?
    Code:
    if (empty($xyz))
    {
        // Source
    }
    Ist in meinen Augenen eigentlich das Gleiche. Oder sehe ich das Falsch?

    gruß Olly

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Im Prinzip schon, aber etwas unsauber.
    Ich würde das so lösen (empty() besticht immer mal wieder durch Sicherheitslücken)
    Code:
    if(issset($var) && $var == ''){
      //Source
    }
    Außerdem:
    Mit deinem Code wird //Source ausgeführt, wenn $xyz ein Leerstring ist. Ist das wirklich so gewollt oder willst dus nicht doch lieber umgedreht haben?
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  3. #3
    Instinct1992
    Gast
    Hallo

    Ist in meinen Augenen eigentlich das Gleiche.
    Im Prinzip schon,
    Nein, das ist nicht das gleiche. Die Funktion "isset()" überprüft ob die Variable existiert (kommt von: "Is set?"), jedoch überprüft die Funktion "empty()" ob eine Variable leer ist. Das ist der kleine aber entscheidende unterschied!

    Ich hoffe ich konnte dir/euch helfen!

    Andy

  4. #4
    Registrierter Benutzer
    Registriert seit
    20.05.2006
    Ort
    Bremen
    Beiträge
    39
    A ja,
    mir geht es eigentlich darum, wenn ich z.B.: $_GET['xyz'] bzw. $_POST['xyz'] abfrage und es wurde nichts übertrage, bekomme ich eine Fehlermeldung. Wenn ich die Variable abfrage. Von daher erst mir isset prüfen.

    Also wenn z.B. ein Forumlar ausgefüllt werden soll und in den Einträgen umbediegt etwas stehen muß.

    Und der zweitefall:
    Ich weiß das es eine Variable $xyz existieren kann aber nicht umbedingt muß. Wenn sie existiert und sie dann keine Einträge hat, dann soll ein Source ausgeführt werden.

    gruß Olly

  5. #5
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Das ist auch durchaus Richtig.
    Weil die Variable zu diesem Zeitpunkt noch nicht existiert.
    Du hast zwei Möglichkeiten.
    1) Du fragst sauber ab isset() und not empty()
    2) Oder du schreibst dir ein Paar Funktionen in eine Datei die dir Arbeit erleichtern.
    z.B:
    PHP-Code:
    /**
    * @short Variablen Prüfen
    * @param [String] \b $v Varname
    * @param [String] \b $t Type
    * @return \b Boolean
    */
    function CheckPostVars$v$t 'string' )
    {
       if ( ! 
    is_string$v ) )
          return 
    false;

       switch( 
    $t ) {
          case(
    'string'):
             
    $o = ( isset( $_POST[$v] ) && !empty( $_POST[$v] ) ) ? true false;
             break;
          case(
    'integer'):
             
    $o = ( isset( $_POST[$v] ) && (int)$_POST[$v] != ) ? true false;
             break;
          case(
    'array'):
             
    $o = ( isset( $_POST[$v] ) && count$_POST[$v] ) > ) ? true false;
             break;
          default:
             
    $o false;
             break;
       }
       return 
    $o;

    Geändert von undefined (07-06-2006 um 15:03 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  6. #6
    Registrierter Benutzer
    Registriert seit
    20.05.2006
    Ort
    Bremen
    Beiträge
    39
    Das nenne ich mal wirklich auf der sicheren Seite.

    thx

    gruß Olly

  7. #7
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Hallo,

    Code:
         case('integer'):
             $o = ( isset( $_POST[$v] ) && (int)$_POST[$v] != 0 ) ? true : false;
             break;
    Warum sollte ein Integer net 0 sein können? 0 ist ne ganz normale Zahl wie 3379 auch.

    Bei Array würde ich lieber prüfen: is_array(), es gibt ja auch leere Arrays, die kanns ja genauso geben.

    Außerdem würd ich mal Prüfen, wie das Script reagiert, wenn du ne Objektreferenz lieferst. ggf. noch mit is_object() prüfen. Gleiches für Boolische Werte (is_bool) btw === true || === false
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  8. #8
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Zitat Zitat von Turbohummel
    Hallo,
    .....
    Warum sollte ein Integer net 0 sein können? 0 ist ne ganz normale Zahl wie 3379 auch.
    .....
    *Räusper* Schreib den Satz mal ins C/C++ Forum und erfreue dich dem Feedback
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  9. #9
    Registrierter Benutzer Avatar von Sym
    Registriert seit
    05.09.2002
    Ort
    Bremen
    Beiträge
    278
    Zitat Zitat von undefined
    *Räusper* Schreib den Satz mal ins C/C++ Forum und erfreue dich dem Feedback
    Bitte kläre mich auf, was das ganze speziell mit C und C++ zu tun hat.
    Denk mal drüber nach...

    Lars

    ACHTUNG: ersetze Linux durch GNU/Linux an den entsprechenden Stellen
    www.macuser.de, MSVC2005 Express und Qt, Qt/Mac installieren

  10. #10
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Aber nicht in PHP und Java
    Auch mathematisch gesehen ist die 0 eine Zahl, wenn auch eine mit einigen "Spezialeffekten".
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  11. #11
    Registrierter Benutzer Avatar von Sym
    Registriert seit
    05.09.2002
    Ort
    Bremen
    Beiträge
    278
    Zitat Zitat von Turbohummel
    Auch mathematisch gesehen ist die 0 eine Zahl, wenn auch eine mit einigen "Spezialeffekten".
    Hierbei ist Vorsicht geboten. Da kommt es immer auf den Raum drauf an und der Definition von Zahl.
    Denk mal drüber nach...

    Lars

    ACHTUNG: ersetze Linux durch GNU/Linux an den entsprechenden Stellen
    www.macuser.de, MSVC2005 Express und Qt, Qt/Mac installieren

  12. #12
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Sym
    Hierbei ist Vorsicht geboten. Da kommt es immer auf den Raum drauf an und der Definition von Zahl.


    Ich benutze die preg.*() Funktionen. Da kann ich gleich intensiver prüfen,
    und spare mir erst mal das Casting.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •