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);
        } 
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      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