Bitte helft mir hierbei: Parse error, unexpected T_variable

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

  • Bitte helft mir hierbei: Parse error, unexpected T_variable

    Hallo liebe PHP-Forenmember,

    ich habe hier ein vielleicht kleines, vielleicht auch großes Problem. Ich versuche mich gerade an einer Website mit einem Menü links, das später jedoch so viele einzelne Menüpunkte samt Unterpunkte haben wird, dass ich eine zentrale Seitenstruktur verwenden möchte. Also quasi das gesamte Seitenlayout ein mal erstellen und dann mit PHP dynamisch die anderen Inhalte je nach Rubrik einfügen.

    Jetzt hab ich aber das folgende Problem: Wenn ich innerhalb der Datei, die den jeweiligen Hauptinhalt enthält
    beispielsweise ein Formular einbaue und dieses per PHP bearbeiten lassen möchte, kommt eine Fehlermeldung. Ihr könnt das mal hier sehen: http://www.callandofon.de/test/

    Das Formular-Skript ist nicht von mir, wie ihr seht. Scheint sich nicht mit dem dynamischen Inhalt-Skript zu vertragen? Ich habe unten die wichtigsten Code-Passagen angeführt. Die Struktur der Homepage ist auf dem Server folgendermaßen angelegt:

    _functions.php
    index.php
    so_sollte_es_aussehen.php
    weiterempfehlen.php

    Ordner "templates", welcher folgendes beinhaltet:

    _standard.html (hier steht das Layout drin, ohne die jeweiligen dynamisch einzufügenden Inhalte)
    index.html (hier steht dann der Inhalt drin, der in die _standard.html integriert wird)
    weiterempfehlen.html (siehe oben)
    ...

    _functions.php hat folgenden Code:

    PHP-Code:
    <?

      function getmaintemplate($template,$endung="html")
      {
        return str_replace("\"","\\\"",implode("",file("templates/".$template.".".$endung)));
      }

      function domainoutput($template)
      {
        echo $template;
      }

    ?>
    weiterempfehlen.php hat folgenden Code:

    PHP-Code:
    <?

      include("_functions.php");

      eval ("\$l_an = \"".getmaintemplate("_an")."\";");
      eval ("\$inhalt = \"".getmaintemplate("weiterempfehlen")."\";");
      eval ("domainoutput(\"".getmaintemplate("_standard")."\");");

    ?>
    Der Code für das Formular (steht in der weiterempfehlen.html) sieht so aus:

    PHP-Code:
    <?

              $siteref = getenv("HTTP_REFERER");
              $letterback = "<br><br><a href=\"$siteref\"><img src=\"grafiken/icon_link_pflaume.gif\"
    alt=\"icon_link_pflaume\">Zur&uuml;ck</a>";

              require("admin/config.php");
              if($friendform=="ok" && !empty($name_from) &&
     !empty($mail_from) && !empty($name_to) && !empty($mail_to))
              {
                list($content) = mysql_fetch_row(mysql_query("select 
    beschreibung from vorlagen where what='friends'"));

                $content = ereg_replace("%name_from%", "$name_from", $content);
                $content = ereg_replace("%name_to%", "$name_to", $content);

                mail("$name_to <$mail_to>","Empfehlung von 
    $name_from","$content","From:$name_from<$mail_from>");

                $siteref = getenv("HTTP_REFERER");
                echo "<b>Weiterempfehlung versandt!</b><br><br><a 
    href=\"$siteref\"><img src=\"grafiken/icon_link_pflaume.gif\" 

    alt=\"icon_link_pflaume\">
    Nochmal empfehlen?</a>";
              }
              elseif($friendform=="ok" && (empty($name_from) OR 
    empty($mail_from) OR empty($name_to) OR empty($mail_to)))
              {
                echo "<b>Bitte alle Felder ausf&uuml;llen!</b>$letterback";
              }
              else
              {

            ?>
    Wo liegt das Problem? Ich weiß, es sieht kompliziert aus, wenn jemand will kann er sich auch die ganze Struktur in Ruhe anschauen, ich habe ein ZIP-File erstellt mit all den Ordnen die nötig sind. Das gibt es hier: http://www.callandofon.de/test/TEST.zip
    Zuletzt geändert von Amphios; 18.03.2005, 13:21.

  • #2
    eval()'d code on line 23
    Was ist daran so schwer zu verstehen?

    Kommentar


    • #3
      PHP-Code:
      return str_replace("\"","\\\"",implode("",file("templates/".$template.".".$endung))); 
      ev mal so
      PHP-Code:
      return str_replace("\"","\"",implode("",file("templates/".$template.".".$endung))); 
      oder
      PHP-Code:
      return str_replace("\"","\\\",implode("",file("templates/".$template.".".$endung))); 
      Ein vor ein Zeichen gestellter Backslash entwertet dieses Zeichen, falls es in PHP eine "Funktion" hat. Bei deiner Version mokiert er einen unexpectet
      T_STRING. Wenn du dir das Ende deines Returns anschaust, dann siehst du dass die $endung als String interpretiert wird.
      Du hast also ein Durcheinander mit den Anführungszeichen, was auch kein Wunder ist, da diese z.T. ja entwertet werden.

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        @Amphios, bitte lesen http://www.php-resource.de/forum/sho...threadid=50454 und entsprechend dein Posting editieren, dass der Scrollbalken nach rechts verschwinden. Danke.
        Zuletzt geändert von asp2php; 18.03.2005, 08:42.

        Kommentar


        • #5
          Ich habe eure Vorschläge allesamt durchprobiert, leider brachte das nicht den Effekt, den ich erhoffte. Eine andere Lösung, die man mir mitteilte, hat jetzt folgendes verursacht:

          http://www.callandofon.de/test/weiterempfehlen.php

          Wie ihr seht, wird nun das Formular zwar eingefügt, aber das php-Script kein bißchen verarbeitet.

          Der ursprüngliche Fehler lag übrigens in der Formatierung \" in dem Formular-Script, die man in ' abändern musste bzw. vor und nach eine Variable einen . setzen musste.

          Nun denn, jetzt sollte das Script halt noch verarbeitet werden... Ansonsten behelfe ich mir mittels eines umständlichen Weges ohne den php-Unterbau, aber vielleicht stößt ja jemand noch auf eine einfache Lösung. Ich habe dazu leider nicht die nötigen Kenntnisse, bin nur grob mit den Ansätzen vertraut.

          Kommentar

          Lädt...
          X