Ankündigung

Einklappen
Keine Ankündigung bisher.

Vergleichsoperatoren in einer Variablen ?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Vergleichsoperatoren in einer Variablen ?

    Hallo,

    kann man Vergleichsoperatoren in einer Variablen übergeben ?
    Wenn ja, wie ?

    So geht's schonmal nicht:

    PHP-Code:
    $a 'test';
    $b 'test';
    $c '==';
    if (
    $a $c $b) {
        echo 
    'jou, gleich';
      } else {
        echo 
    'neeeh';
        } 
    Jeder Mensch ist klug !
    Der eine vorher, der andere nachher ...

  • #2
    mit eval(), kann man das machen.
    if(eval("return $a $c $b;")){...

    aber ich finde das nicht besonders schön.
    Edit: und es kann sogar gefährlich sein, wenn die Variablen aus Request kommen.
    Slava
    http://bituniverse.com

    Kommentar


    • #3
      für eine überschaubare Anzahl von möglichen Parametern kann man ja auch switch cases erwenden:

      PHP-Code:
      switch ($sOperator) {
        case 
      '==':
          return (
      $mVar1 == $mVar2);

        case 
      '===':
          return (
      $mVar1 === $mVar2);

        case 
      '!=':
          return (
      $mVar1 != $mVar2);
        } 
      [COLOR="#F5F5FF"]--[/COLOR]
      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
      [COLOR="#F5F5FF"]
      --[/COLOR]

      Kommentar


      • #4
        Hallo,

        erstmal besten Dank.

        @Slava:
        Mit [eval] funktioniert es wunderbar. Warum kann das gefährlich sein ?
        Kannst du das etwas erläutern ?
        Jeder Mensch ist klug !
        Der eine vorher, der andere nachher ...

        Kommentar


        • #5
          Weil eval einfach alles parst Wenn die Eingabe dann ungeprüft ist, wirds witzig:

          PHP-Code:
                  $adminPass "ganz geheimes Passwort";
                  
          // Eingabe
          $_POST['var1'] = 1;
          $_POST['var2'] = 1;
          $_POST['operator'] = '===';

          echo eval(
          $_POST['var1'] . $_POST['operator'] . $_POST['var2'] . ';'); // Ausgabe true;

          // Eingabe
          $_POST['var1'] = 1;
          $_POST['var2'] = 1;
          $_POST['operator'] = '; echo $adminPass;';

          echo eval(
          $_POST['var1'] . $_POST['operator'] . $_POST['var2'] . ';');
          // Ausgabe: "ganz geheimes Passwort" 
          Darüber lässt sich sehr schnell beliebiger Code einfügen. Die Variante über Switch is wirklich die Bessere.
          Nicht jeder Fehler ist ein Bug.

          Kommentar


          • #6
            kommt darauf an wie gut man die parameter überprüft.
            wenn man so überprüft
            PHP-Code:
            $operator=array('<','<=','>','>=','==','===','!=','!==');
            if(
            is_numeric($a) &&  is_numeric($b) &&  in_array($c $operator))
            {
               if(eval(
            "return $a $c $b;")){.....}else{....}
            }
            else die(
            'hau ab'); 
            dann ist es eigentlich übersichtlich und nicht mehr gefährlich.
            Slava
            http://bituniverse.com

            Kommentar


            • #7
              Hallo,

              OK, Problem erkannt ...

              Besten Dank euch beiden !

              [edit]
              äääähh, ich mein euch Drei ...
              ... nichtmal zählen kann er ...
              [/edit]
              Jeder Mensch ist klug !
              Der eine vorher, der andere nachher ...

              Kommentar

              Lädt...
              X