SQL und Eval

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

  • SQL und Eval

    Hi,
    also ich habe 2 Probleme... aber erstmal zu meiner Situation:

    Ich habe eine Datenbank in der ich Templates ablege. Die Templates haben die möglichkeit durch {{condition}} true wert {{ELSE}} false wert {{ENDIF}} etwas dynamischer zu werden. Das ganze wird durch ne art kleinen Kompiler übersetzt in eine If-Clause. Jetzt zu meiner frage:

    1. Wie ist es denn nun richtig? ($a == $b ? "JA" : "NEIN") oder so ($a == $b) ? "JA" : "NEIN"; Habe gegoogled, aber da ich den genauen namen der expression nicht kenne, haben ich a) nicht viel gefunden b) 2 verschiedene lösungen (siehe oben)

    2. Ich muss den code nach dem auslesen aus der DB dann ja eval`en (ich weiß, wenn die antwort eval ist, hat man die falsche Frage gestellt, dies ist aber ja nur n Proof of Concept für mich selbst, also net so schlimm), wie mache ich das?

    eval("\$dbresult = \"$dbresult\";");
    echo $dbresult;

    eval`t immer nur die variable aus der IF-Clause, aber nie die ganze Funktion.

    Wäre für jede HIlfe dankbar.

    MFG

  • #2
    PHP-Code:

    $blub 
    false;

    $eval_misch '$blub = "blaaaa"; $blub .= $foo."huhu"; ';

    eval(
    $val_misch);

    echo 
    $blub;




    //------------
    // SO !
    echo ($a == $b) ? "JA" "NEIN";
    $foo = ($a == $b) ? "JA" "NEIN"

    Kommentar


    • #3
      Also ich will schon ($a == $b) ? "JA" : "NEIN"; evalen, nicht wirgendwas, das problem dabei ist wie gesagt, dass die Variablen raus evaled werden, also nachher im Dokument dann steht (==) ? "JA" : "NEIN";

      MFG

      Einfaches Beispiel:

      PHP-Code:


      $a 
      1;
      $b 1;
      $str '($a == $b) ? "a" : "b"; ';
      eval(
      "\$str = \"$str\";");
      echo 
      $str
      Es kommt raus:

      Parse error: parse error, unexpected T_STRING in /var/www/web1/html/dev/index.php(51) : eval()'d code on line 1
      ($a == $b) ? "a" : "b";
      Zuletzt geändert von nataz; 25.07.2006, 15:37.

      Kommentar


      • #4
        PHP-Code:

        $if 
        '($a == $b) ? "a" : "b"; ';
        eval(
        "$str = ".$if.";"); 
        (ungetestet)

        Kommentar


        • #5
          So funzt es:

          PHP-Code:
          $a 1;
          $b 1;
          $str '($a == $b) ? "a" : "b"; ';
          eval(
          "\$str = $str");
          echo 
          $str
          Die Klammern in der if anweisung sind egal
          es geht auch $a == $b ? "a" : "b".
          Dient einfach nur der Übersicht.

          Mfg Gurge

          Kommentar


          • #6
            Das ging so weit, nur leider bekomme ich jetzt wieder fehler Meldungen, wenn ich folgendes mache:


            Aus der DB kommt:
            <title>Welcome to {$settings['TITLE']}, ({$_SESSION['loggedin']} == 1) ? '$_SESSION[username]' : '!'; </title>
            </head>

            Mein Eval:
            eval ("\$tmptp = \"$tmptp\";");
            return $tmptp;

            Kommentar


            • #7
              hab nicht alles gelesen. der sting, der aus der DB kommt, wird in $tmptp gespeichert?

              und wer hat dir bei gebraucht variablen in Anführungszeichen zu packen? hast du doch eben auch nicht gemacht. wieso jeztzt auf einmal wieder nicht mehr.

              aso, und gewöhn dir schon mal an die fehlermeldungen zu posten.

              und was erwartest du von dem return?
              Zuletzt geändert von TobiaZ; 25.07.2006, 20:54.

              Kommentar


              • #8
                Stimmt schon, habe vergessen die Meldung zu posten... Also jetzt nochmal vollständig:

                Aus der Datenbank kommt:

                <title>Welcome to {$settings['TITLE']} ({$_SESSION['loggedin']} == 1) ? $_SESSION[username] : "!"; </title>
                </head>

                Dies soll durch Eval ausgeführt werden.

                Mein Code dafür:

                PHP-Code:
                eval("\$str = $tmptp");
                echo 
                $str
                Die Fehlermeldung:

                Parse error: parse error, unexpected '<' in /var/www/web1/html/dev/lib/template.php(76) : eval()'d code on line 1

                Additional Infos:

                PHP Version 4.3.10-16

                MFG

                Kommentar


                • #9
                  Wenn du in eval HTML-Code verwenden willst, beende vorher den Parser-Bereich.
                  eval geht davon aus, dass der übergebene Code PHP-Code ist, so als wenn du dich bereits in einem Parser-Bereich befändest.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Wenn ich ?> in den Code einbaue bekomme ich die meldung wie oben nur halt Unexpected "?>" in eval()`d code...

                    Kommentar


                    • #11
                      Mach dir doch erst mal klar, was dein eval-Statement für einen Code ergibt ... was kommt denn das feines heraus, wenn wir's mal per Copy&Paste einsetzen ...?
                      PHP-Code:
                      eval("\$str = <title>Welcome to {$settings['TITLE']} ({$_SESSION['loggedin']} == 1) ?
                      $_SESSION[username] : "!"; </title>
                      </head>"
                      ); 
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar

                      Lädt...
                      X