kleines eval()-Problem

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

  • kleines eval()-Problem

    Hmm...Sicherlich nur ein ganz kleiner Fehler,find ihn aber trotzdem nich...
    Hab diesen Code:

    PHP-Code:
    eval( "if( $key )
    {

    "
    .$section preg_replace"!{$ldq}if (.*){$rdq}(.*){$ldq}/if{$rdq}!siU"$val$section ).";

    }
    else
    {

    print \"bla...\";

    }
    ); 
    Ich kriege allerdings diese Fehlermeldung:

    Parse error: parse error, unexpected '<' in c:\public\1valorsoftware\valorboard\classes\class_tcc.php(144) : eval()'d code on line 4

    Das liegt an dem gefundenem Pattern...Finden soll(und findet) es diesen HTML-Code:

    Code:
    <if {$test}=="TEST">
    BLABLABLA
    </if>
    Mach Ich das erste "<" weg,findet er den Pattern ja nicht mehr und bringt daher auch keinen Fehler...Also liegts daran...Bin grad etwas ratlos

  • #2
    up...^^

    (war scho auf Seite 2 )

    Kommentar


    • #3
      ich seh zwar im code kein < aber kontrollier mal die escapes.

      Kommentar


      • #4
        Liegt ja nich am regex selbst,sondern am "$section" *rumprobiert hat*
        Im $section kommt natürlich VIEL "<" vor (ist ja HTML-Code)...

        Kommentar


        • #5
          Versuch mal nachzuvollziehen an welcher stelle welche variablen ersetzt werden und welcher "code" nacher evaled wird.

          Kommentar


          • #6
            An dieser

            Code:
            <if {$test}=="TEST">
            BLABLABLA
            </if>
            Stelle werden Variablen ersetzt(will nicht das ganze HTML posten)...Code soll garnicht ausgeführt/eval'd werden an dieser Stelle,nur bei dem if-Befehl am Anfang.
            Der Sinn ist ja per if zu prüfen ob der Inhalt zwischen <if></if> angezeigt werden soll oder nicht...Und die Bedingungen für den if sind in der Variable $key und ohne eval wird das ja nicht als Bedingung angesehen...
            Wenn der Wert wahr ist,soll der ganze "<if blablabla>html</if>" im HTML-Code ersetzt werden mit "html".

            ^^ Verstanden?

            Kommentar


            • #7
              glaub, du hast nicht ganz verstanden, was ich meine:

              geh das eval mal durch und überleg dir, wann die variablen darin (speziell $section) ersetzt werden. sprich welchen "code" führt eval aus? den, der hier augenscheinlich ausgeführt wird, oder einen viel längeren, der zufällig auch < und den restlichen html-code enthält?

              Kommentar


              • #8
                Versteh nicht ganz was du meinst,aber Ich denke mal es ist letzteres...

                Kommentar


                • #9
                  richtig!

                  dann überleg mal, wie du das ändern kannst...

                  Kommentar


                  • #10
                    Hmm...Find die Antwort grad nich(hat sich versteckt) *dummanstell*

                    Hab so (nutzlose) Sachen wie htmlspecialchars($section),etc probiert,was allerdings NICHT GANZ das gewünschte Ergebnis brachte

                    Hilfe?

                    Kommentar


                    • #11
                      PHP-Code:
                      $var 'Welt';

                      echo 
                      "Hallo $var";
                      echo 
                      'Hallo $var'
                      guck dir mal an, was da rauskommt, dann solltest du aber drauf kommen.

                      Kommentar


                      • #12
                        Hab jetzt das stehen:

                        PHP-Code:
                        eval( "if( $key )
                        {
                        '.
                        $section = preg_replace( '!{$ldq}if (.*){$rdq}(.*){$ldq}/if{$rdq}!siU', '$val', $section ).';
                        }
                        ); 
                        ...Und bekomme einen neuen Fehler:

                        Parse error: parse error, unexpected T_STRING in c:\public\1valorsoftware\valorboard\classes\class_tcc.php(138) : eval()'d code on line 29

                        Hmmm...Hab mal geschaut...$section beinhaltet diesen HTML-Code:

                        Code:
                        <HTML>
                        <HEAD>
                        <TITLE>{$t.board_name}</TITLE>
                        <link rel="stylesheet" type="text/css" href="{$t.skin_dir}/default.css">
                        </HEAD>
                        <BODY>
                        <table width="{$skin_config.main_table_width}" cellpadding="0" cellspacing="1" bgcolor="#000000">
                        	<tr>
                        	<td bgcolor="#FFFFFF" align="center">
                        	<table width="100%" cellpadding="4" cellspacing="0" bgcolor="#000000">
                        	<tr>
                        	<td bgcolor="#E3E3E3" align="center"><font size="7">ValorBoard</font></td>
                        	</tr>
                        </table><br>
                        
                        <if {$t.board_name}=="ValorBoard">
                        asdasdasdsad
                        </if>
                        
                        <table width="{$skin_config.table_width}" cellpadding="0" cellspacing="1" bgcolor="#000000">
                        	<tr>
                        	<td bgcolor="#FFFFFF" align="center">
                        	<table width="100%" cellpadding="4" cellspacing="0" bgcolor="#000000">
                        	<tr>
                        	<td bgcolor="#E3E3E3" align="left">{$nav}</td>
                        	<td bgcolor="#E3E3E3" align="right">[ <a href="javscript: history.go(-1)">&laquo; Zurück</a> ]</td>
                        	</tr>
                        	</table>
                        	</td>
                        	</tr>
                        </table><br>
                        	
                        	{$output}
                        Entferne ich alles was NACH dem <if></if> kommt,erscheint der Fehler nicht mehr(kommt zwar ein anderer Fehler,aber den werd ich schon fixen können )

                        Kommentar


                        • #13
                          guck dir mal deine " und ' an. was du mit " eröffnest, kannst du nicht mit ' schließen

                          Kommentar


                          • #14
                            Danke für die schnelle und vorallem viele Hilfe!



                            (Fehlermeldung ist weg,aber trotzdem funzt es nich wie ich es mir vorgstellt habe...naja mal schaun )

                            Kommentar

                            Lädt...
                            X