Thomas: Include Textarea

Hallo,
Kann ich irgendwie in ein TEXTAREA eine TXT datei includen, so dass der inhalt im Textfeld ist, und verändert werden kann?

Danke

  1. Grüße,
    ja, der text hat, afaik, zwischen <textarea> und </texterea> zu sein.
    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    http://www.sexgott-or-not.com/?test=428054
  2. Mahlzeit Thomas,

    Kann ich irgendwie in ein TEXTAREA eine TXT datei includen, so dass der inhalt im Textfeld ist, und verändert werden kann?

    Sicher. Lies den Inhalt aus der Textdatei aus, gib ihn (ggf. mit htmlentities() behandelt) zwischen "<textarea>" und "</textarea>" aus und schreibe das, was Du beim Abschicken des Formulars an Dein Skript geschickt bekommst, einfach wieder in die Datei hinein.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Lieber Thomas,

    Kann ich irgendwie in ein TEXTAREA eine TXT datei includen, so dass der inhalt im Textfeld ist, und verändert werden kann?

    ja, Du kannst... wenn Dir entsprechende serverseitige Mechanismen oder Technologien zur Verfügung stehen. Aber darüber schweigst Du Dich bisher aus.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Salut!

      ja, Du kannst... wenn Dir entsprechende serverseitige Mechanismen oder Technologien zur Verfügung stehen. Aber darüber schweigst Du Dich bisher aus.

      Nein!

      Ich persönlich deute ein Posting im Themenbereich PHP so, dass der OP gewillt ist, dieses serverseitig zu benutzen.

      au relire

      Sven aus M.

      1. Lieber Sven,

        Ich persönlich deute ein Posting im Themenbereich PHP so, dass der OP gewillt ist, dieses serverseitig zu benutzen.

        oops, da habe ich vor lauter Bäumen den Wald nicht mehr gesehen. Sorry!

        Für den OP hier eine mögliche Lösung in PHP als Entschuldigung:

        function ladeTextarea($html, $dateipfad = '') {  
          
            // wurde kein Dateipfad übermittelt?  
            if ($dateipfad == '')  
                $dateipfad = './textdateien/meine_default_datei.txt';  
          
            $textinhalt = file_get_contents($dateipfad);  
          
            // in eine Textarea nur entsprechend maskierten Inhalt schreiben:  
            $textinhalt = htmlentities($textinhalt);  
          
            $html = str_replace('</textarea>', $textinhalt.'</textarea>', $html);  
          
            return $html;  
        }
        

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Lieber Felix,

          Für den OP hier eine mögliche Lösung in PHP als Entschuldigung:

          Na dann hat der OP nun schon zwei - und es gibt noch zahlreiche andere;)

          au relire

          Sven aus M.

          1. Lieber Sven,

            Na dann hat der OP nun schon zwei - und es gibt noch zahlreiche andere;)

            nicht böse sein, aber dedlfix hat berechtigte Vorbehalte gegen Deine Lösung...

            Liebe Grüße aus Ellwangen,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  4. Salut!

    Kann ich irgendwie in ein TEXTAREA eine TXT datei includen, so dass der inhalt im Textfeld ist, und verändert werden kann?

    Ja! z.B:

      
    <textarea name="blub">  
     <?php require('datei.txt')?>  
    </textarea>  
    
    

    au relire

    Sven aus M.

    1. echo $begrüßung;

      <textarea name="blub">
      <?php require('datei.txt')?>
      </textarea>

        
      Diese Lösung ist mit großer Vorsicht zu genießen und nur dann anwendbar, wenn weder PHP- noch HTML-Code in der Textdatei steht. Davon sollte man nicht ausgehen, noch dazu, wenn Anwender den Inhalt der Textdatei selbst bestimmen können. Das Ausführen von PHP-Code kann man verhindern, indem man [readfile()](http://de.php.net/manual/en/function.readfile.php) statt PHP-Code ausführende Inklude-Anweisungen verwendet. Damit HTML-Code weder die Textarea noch das restliche HTML-Dokument beeinflussen, muss eine HTML-gerechte Behandlung der [HTML-Sonderzeichen](http://de.selfhtml.org/html/allgemein/zeichen.htm#html_eigene) erfolgen. Dazu empfiehlt sich [htmlspecialchars()](http://de.php.net/manual/en/function.htmlspecialchars.php).  
        
        
      echo "$verabschiedung $name";
      
      1. Salut!

        Ich zweifle nicht ein Wort dessen an, was Du schriebst, freute mich sogar darauf solches zu lesen.

        au relire

        Sven aus M.

      2. Hi,

        Das Ausführen von PHP-Code kann man verhindern, indem man readfile() statt PHP-Code ausführende Inklude-Anweisungen verwendet. Damit HTML-Code weder die Textarea noch das restliche HTML-Dokument beeinflussen, muss eine HTML-gerechte Behandlung der HTML-Sonderzeichen erfolgen. Dazu empfiehlt sich htmlspecialchars().

        Da readfile aber sofort in den Output Buffer schreibt, und man die Daten da dann erst mal wieder rausklauben muesste, wenn man noch htmlspecialchars-en will, wuerde ich statt readfile doch eher file_get_contents vorschlagen.

        MfG ChrisB

        --
        "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
        1. Lieber ChrisB,

          wuerde ich statt readfile doch eher file_get_contents vorschlagen.

          also im Grunde wie bei meinem Beispiel, oder nicht?

          Liebe Grüße aus Ellwangen,

          Felix Riesterer.

          --
          ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
          1. Hallo Felix.

            also im Grunde wie bei meinem Beispiel, oder nicht?

            Würde ich so sehen. Man sollte aber vielleicht noch etwas Fehlerbehandlung hinzufügen (für file_get_contents).

            Servus,
            Flo

        2. echo $begrüßung;

          Da readfile aber sofort in den Output Buffer schreibt, und man die Daten da dann erst mal wieder rausklauben muesste, wenn man noch htmlspecialchars-en will, wuerde ich statt readfile doch eher file_get_contents vorschlagen.

          Der Einwand ist berechtigt. Ich unterließ, meine Ausführungen an die Aufgabenstellung des OP anzupassen und gab nur einzelne Lösungsvorschläge für die beiden Sicherheitslücken.

          echo "$verabschiedung $name";

          1. Hi,

            Der Einwand ist berechtigt. Ich unterließ, meine Ausführungen an die Aufgabenstellung des OP anzupassen und gab nur einzelne Lösungsvorschläge für die beiden Sicherheitslücken.

            Ich wollte ja auch nur ergaenzend zur Seite stehen, und nicht kritisieren ;-)

            MfG ChrisB

            --
            "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
            1. Mahlzeit ChrisB,

              Der Einwand ist berechtigt. Ich unterließ, meine Ausführungen an die Aufgabenstellung des OP anzupassen und gab nur einzelne Lösungsvorschläge für die beiden Sicherheitslücken.

              Ich wollte ja auch nur ergaenzend zur Seite stehen, und nicht kritisieren ;-)

              Wollt Ihr Euch jetzt gleich noch umarmen? Dann lesen wir anderen mal beschämt zur Seite ... ;-)

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    2. Hello,

      <textarea name="blub">
      <?php require('datei.txt')?>
      </textarea>

        
      abgesehen von den im weiteren Thread geäußerten Sicherheitsbedenken ist diese Form der Einbindug auch sachlich falsch, da der Inhalt der Datei hier verfremdet wird.  
        
      besser wäre daher  
        
         $innerhtml = '';  
        
         $fh = fopen($filename, 'rb');  
         if ($fh)  
         {  
             if flock($fh, LOCK\_SH);  
             {  
                 $fsize = filesize($filecontent);                ## ich habe es hier extra sequentiell  
                 $filecontent = fread($fh, $fsize);              ## aufgeführt, weil man auch hier  
                                                                 ## noch Überprüfungen einbauen könnte  
                 $innerhtml = htmlspecialchars($filecontent,ENT\_QUOTES);  
             }  
             fclose($fh);  
         }  
        
         echo "<textarea name=\"text\">$innerhatml</textarea>";  
        
        
      Es kam mir darauf an, dass "...>$innerhtml</..." dort steht und nicht  
        
        ...>  
        $innerhtml  
        <  
        
      Da würden sich nämlich zwei Whitespaces einschleichen, die nicht zum Inhalt der Datei gehören!  
        
        
        
        
      Ein harzliches Glückauf  
        
      Tom vom Berg  
      ![](http://selfhtml.bitworks.de/Virencheck.gif)  
        
      
      -- 
      Nur selber lernen macht schlau  
      <http://bergpost.annerschbarrich.de>
      
      1. Mahlzeit Tom,

        $innerhtml = htmlspecialchars($filecontent,ENT_QUOTES);
        [...]
           echo "<textarea name="text">$innerhatml</textarea>";

        Abgesehen von Deinen ansonsten vollkommen korrekten Empfehlungen ist diese Form der kontextsensitiven Behandlung auch sachlich falsch, da der Inhalt der Variablen hier verfremdet wird (Kommt Dir der Text bekannt vor? *g*).

        Besser wäre:

        echo '<textarea name="text">'.htmlspecialchars($filecontent,ENT_QUOTES).'</textarea>';

        :-)

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hello Ekki,

          $innerhtml = htmlspecialchars($filecontent,ENT_QUOTES);
          [...]
             echo "<textarea name="text">$innerhtml</textarea>";

          Meintest Du den Tippfehler, oder dass ich einen Zwischenschritt eingerichtet hatte?

          Ein harzliches Glückauf

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Mahlzeit Tom,

            $innerhtml = htmlspecialchars($filecontent,ENT_QUOTES);
            [...]
               echo "<textarea name="text">$innerhtml</textarea>";

            Meintest Du den Tippfehler, oder dass ich einen Zwischenschritt eingerichtet hatte?

            Letzteres. In Deinem Beispiel ist es noch ersichtlich, wo das, was in der Variablen $innerhtml drin steht, bereits dem Kontext entsprechend behandelt wurde. Wenn jetzt aber noch einige Seiten Code dazwischenkommen (so mit der Zeit), dann ist irgenwann an der Stelle, wo Du $innerhtml einfach so zwischen <textarea> und </textarea> ausgibst, nicht mehr eindeutig ersichtlich, dass es sich dabei um bereits vorbehandelten Inhalt handelt - und dann wird da vielleicht nochmal ein htmlspecialchars() drumherum gepackt ...

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Hello,

              das könnte allgemeien schon passieren,

              ... aber dafür benutze ich ja "sprechende" Variablennamen.
              Eine Variable, die $*html oder $htmlmout oder ähnlich heißt, wird bei mir immer für HTML-Kontext vorbehandelte Strings enthalten.

              Ein harzliches Glückauf

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de