Ergebnis 1 bis 15 von 15

Thema: [PHP] Txt Datei anzeigen und speichern...?

  1. #1

    [PHP] Txt Datei anzeigen und speichern...?

    ich hab da mal kurz ne frage:

    ich moechte gerne eine TXT datei auf meinem server in einem textfeld auf einer seite anzeigen lassen, diese dann nach belieben editieren und auch speichern koennen. alles von einer html seite aus.
    jetzt isses aber so, dass ich in der txt einen html quelltext stehen hab, daher is PHP include() schon mal hinfaellig. aber wie wuerde ich dass dann anstellen? kann mir vielleicht da jemand ein kleines beispiel posten wie ich das am besten mache?

    thx alot,
    A2k

  2. #2
    Zum anzeigen Stimmt include();...

    Könntest ja acuh php sachen reinschreiben aber nicht auf die
    PHP-Code:
    <?php
    //code
    ?>
    vergessen xD

    Zum editieren machste dann fwrite()

    Guck am besten mal auf php.net

    Ich hoff das ich helfen konnte

    mfg

    edit();

    Öhm machs mal so:

    Du machst ne Textarea (<textarea>)
    Dazwischen machste das include()
    Und dann </textarea>

    Dann bleibt der Text so wie er in der .txt steht und man kann ihn auch gleich bearbeiten =P

    Geändert von ice cold killa (31.08.2006 um 09:51 Uhr)

  3. #3
    Include ist nicht sonderlich toll, weil dann php Code ausgeführt wird. Folgendes würde ich vorschlagen (vereinfacht dargestellt)

    PHP-Code:
    <?php
      
    if($_POST['text'])
        
    file_put_contents('datei.txt'$_POST['text']);
    ?>
    <form action="textedit.php" method="post">
      <textarea name="text"><?php echo file_get_contents('datei.txt'); ?></textarea>
      <input type="submit" name="submit" value="Speichern" />
    </form>
    In einem Textfeld sollte HTML-Code eigentlich nicht geparst werden und wenn doch, packste noch htmlentities() um das file_get_contents().

    Geändert von DFYX (31.08.2006 um 11:19 Uhr)

  4. #4
    Zitat Zitat von DFYX
    In einem Textfeld sollte HTML-Code eigentlich nicht geparst werden [...]
    Falsch. In einer <textarea> befinden sich geparste Zeichendaten, wie beispielsweise auch im <title> Tag. Obwohl HTML darin nicht erlaubt ist müssen die Sonderzeichen &, <, >, " und ' maskiert werden (&amp;, &lt;, &gt;, &quot; und &#39. Vor allem '</' ist dabei gefährlich. Aber ja, htmlentities() oder htmlspecialchars() sorgt für Abhilfe.

    Weitere Anmerkung:
    file_get_contents() gibt es erst ab PHP 4.3 und
    file_put_contents() erst ab PHP 5.
    Glaube aber, dass es für PHP 4 eine PEAR Klasse gibt die letztere Funktion emuliert (Wo hatte ich das nur gelesen, glaube hier im Forum x.x).

  5. #5
    Zitat Zitat von mitaki
    Glaube aber, dass es für PHP 4 eine PEAR Klasse gibt die letztere Funktion emuliert (Wo hatte ich das nur gelesen, glaube hier im Forum x.x).
    Notfalls macht man einfach...
    PHP-Code:
    if(!function_exists("file_put_contents"))
    {
      function 
    file_put_contents($filename$data)
      {
        
    $f=fopen($filename"w");
        
    fwrite($f,$data);
        
    fclose($f);
      }


  6. #6
    Code:
    <?php 
      if($_POST['text']) 
        file_put_contents('news_index.txt', $_POST['text']); 
    ?> 
    <form action="textedit.php" method="post"> 
      <textarea name="text"><?php echo file_get_contents('news_index.txt'); ?></textarea> 
      <input type="submit" name="submit" value="Speichern" /> 
    </form>
    hab mir das alles mal bisher so zusammengebastelt, lediglich eine sache ist mir noch unklar. bei <form action="textedit.php"> wird der inhalt des textfelds diese datei weitergeleitet (zum parsen), jedoch will ich nicht das da irgendwas geparst wird. ich will das der inhalt des textfelds genauso wie er ist in die textdatei (index_news.txt) geschrieben wird, und wenn notwendig, sollte der inhalt der textdatei überschrieben werden.

    thx alot
    A2k

  7. #7
    Zitat Zitat von Armitage2k
    Code:
    <?php 
      if($_POST['text']) 
        file_put_contents('news_index.txt', $_POST['text']); 
    ?> 
    <form action="textedit.php" method="post"> 
      <textarea name="text"><?php echo file_get_contents('news_index.txt'); ?></textarea> 
      <input type="submit" name="submit" value="Speichern" /> 
    </form>
    hab mir das alles mal bisher so zusammengebastelt, lediglich eine sache ist mir noch unklar. bei <form action="textedit.php"> wird der inhalt des textfelds diese datei weitergeleitet (zum parsen), jedoch will ich nicht das da irgendwas geparst wird. ich will das der inhalt des textfelds genauso wie er ist in die textdatei (index_news.txt) geschrieben wird, und wenn notwendig, sollte der inhalt der textdatei überschrieben werden.

    thx alot
    A2k
    Was genau meinst du mit "das wird weitergeleitet zum parsen"? Wenn du im Script nichts tust als das ganze zu speichern wird auch nichts "geparst".

  8. #8
    ich hab da ein bisschen umständlich ausgedrückt. hier ist mal alles was ich bisher so alles am ursprünglichen code gedreht hab:

    Code:
    <?php 
      if($_POST['text']) 
        file_put_contents('index_news.txt', $_POST['text']); 
    ?> 
    <form method="post" action="textedit.php" name="source_edit" id="formular">
    	<table>
    		<tr>
    			<td style="padding:2px"><strong>News_Index.txt Source Inhalt:</strong></td>
    		</tr>
    		<tr>
    			<td style="padding:2px">
    				<textarea cols="140" rows="15" name="text">
    				
    				<?php echo file_get_contents('index_news.txt'); ?>
    				
    				</textarea>
    			</td>
    		</tr>
    		<tr>
            <td style="padding:2px">•</td>
            <td style="padding:2px">
    <br />
    <center>
              <input name="submit" type="submit" id="speichern" value="Speichern" />
              <input name="loeschen" type="reset" id="loeschen" value="Zur&uuml;cksetzen" />
    </center>
            </td>
           </tr>
          </table>
         </form>
    Mein Problem ist jetzt diese Zeile
    Code:
    <form method="post" action="textedit.php" name="source_edit" id="formular">
    Der Inhalt des Textfeldes wird an die Datei Textedit.php geposted, welche normalerweise einen PHP Code zum parsen beinhaltet. Da ich aber keine solche Datei erstellt habe, kann er den Post-Befehl nicht ausführen, ergo wird nichts in die Textdatei geschrieben.
    Also bleibt mir nur die Frage, wenn ich die Textedit.php Datei erstellt habe, was ich da reinschreiben muss damit der Inhalt des Textfelds genauso in der Textdatei gespeichert wird wie er ist?

    Ich hoffe das ist jetzt ein bisschen verständlicher.
    Thx,

    A2k

  9. #9
    Zitat Zitat von Armitage2k
    2. Was soll ich da reinschreiben damit der Inhalt des Textfelds genauso in der Textdatei gespeichert wird wie er ist?
    Die Datei in der
    PHP-Code:
    <?php 
      
    if($_POST['text']) 
        
    file_put_contents('index_news.txt'$_POST['text']); 
    ?>
    Der Code zum speichern steht.

    Irgendwie hab ich das Gefühl, dass du nicht ganz verstanden hast, was der bewirkt. Das ist nicht gut. o.o

  10. #10
    Zitat Zitat von Fu
    Die Datei in der
    PHP-Code:
    <?php 
      
    if($_POST['text']) 
        
    file_put_contents('index_news.txt'$_POST['text']); 
    ?>
    Der Code zum speichern steht.

    Irgendwie hab ich das Gefühl, dass du nicht ganz verstanden hast, was der bewirkt. Das ist nicht gut. o.o

    Da hast du absolut recht

    Hab jetzt den file_put_contents und file_get_contentsCode mal in meinem PHP Buch nachgeschlagen und langsam krieg ich ne Vorstellung davon was eigentlich los ist
    Aber dann erlaub mir noch schnell ne N00B Frage: Wofür brauch ich dann den <form action="textedit.php"> Tag und was soll dann der Verweis auf diese Datei?

    Sorry für derartige Fragen, aber irgendwie hab ich grad nen Knoten im Hirn.

    Geändert von Armitage2k (03.09.2006 um 21:12 Uhr)

  11. #11
    Zitat Zitat von Armitage2k
    Hab jetzt den file_put_contents und file_get_contentsCode mal in meinem PHP Buch nachgeschlagen und langsam krieg ich ne Vorstellung davon was eigentlich los ist
    Gut so.
    Zitat Zitat
    Aber dann erlaub mir noch schnell ne N00B Frage: Wofür brauch ich dann den <form action="textedit.php"> Tag und was soll dann der Verweis auf diese Datei?
    Mit FORM erstellt man ein HTML-Formular, eine Ansammlung von Informationen, die an ein Skript o.a. geschickt werden kann. Das ACTION-Attribut gibt an, wohin die Informationen geschickt werden sollen. In deinem Fall müssen sie an das Script, welches sie in die Datei schreibt geschickt werden. Also das Script mit dem file_put_contents().

    Geändert von Dingsi (03.09.2006 um 21:34 Uhr)

  12. #12
    Merci.

    Das einzige was mir jetzt also zum Einzug in den PHP Himmel feht ist eine lauffähige Textedit.php Datei.
    Hab mir deine Vorgabe mal kurz angesehen und sie in die Datei eingebunden. Herausgekommen ist das und die Tatsache dass es nicht geht

    Code:
    <?php
    
    if (!function_exists("file_put_contents")) 
    { 
      function file_put_contents($filename, $data) 
      { 
        $f=fopen($filename, "w"); 
        fwrite($f,$data); 
        fclose($f); 
      } 
    }
    
    echo "<script>self.location=\"news_success.php\";</script>";
    ?>
    Variablen müsste ich noch definieren, aber handelt es sich jetzt um die textdatei oder um die datei selber...? Werd aus dem Script echt nicht schlau... (was daran liegt dass ich erst vor ner stunde ausm bett bin " ).
    Sorry für die schwere Geburt,

    A2k

  13. #13
    Du brauchst nicht unbedingt eine eigene Textedit.php-Datei. Wenn deine ursprüngliche Datei so aussieht wie du's hier beschrieben hast, dann genügt es, ins form-Tag als Aktion die Datei selbst reinzuschreiben. Also wenn die Datei mit dem Textfeld z.B. "index.php" heißt, schreibst du das Form-Tag so: <form method="post" action="index.php" name="source_edit" id="formular">

    Dadurch wird dann die Seite nochmal aufgerufen, und zwar mit den Daten aus dem Textfeld in der $_POST['text']-Variablen. Am Anfang der PHP-Datei wird dann überprüft, ob diese Variable vorhanden ist. Da's sie's ist, wird ihr Inhalt in die Datei "index_news.txt" gespeichert.

    Ich hoffe, jetzt ist's verständlich. ^^
    Den Code, den du für die "textedit.php"-Datei nehmen wolltest bewirkt etwas völlig anderes, er ist nämlich nur dazu da, die Funktion "file_put_contents ()" zu definieren (nicht auszuführen), falls sie nicht vorhanden ist. Das müsstest du (ohne das "echo ..." am Ende)in eine zusätzliche PHP-Datei schreiben und diese dann per include () in die Haupt-Datei einfügen, falls du eine ältere PHP-Version benutzt. Aber probier's erstmal ohne. ^^''

  14. #14
    Zitat Zitat von drunken monkey
    Du brauchst nicht unbedingt eine eigene Textedit.php-Datei. Wenn deine ursprüngliche Datei so aussieht wie du's hier beschrieben hast, dann genügt es, ins form-Tag als Aktion die Datei selbst reinzuschreiben. Also wenn die Datei mit dem Textfeld z.B. "index.php" heißt, schreibst du das Form-Tag so: <form method="post" action="index.php" name="source_edit" id="formular">

    Dadurch wird dann die Seite nochmal aufgerufen, und zwar mit den Daten aus dem Textfeld in der $_POST['text']-Variablen. Am Anfang der PHP-Datei wird dann überprüft, ob diese Variable vorhanden ist. Da's sie's ist, wird ihr Inhalt in die Datei "index_news.txt" gespeichert.

    Ich hoffe, jetzt ist's verständlich. ^^
    Den Code, den du für die "textedit.php"-Datei nehmen wolltest bewirkt etwas völlig anderes, er ist nämlich nur dazu da, die Funktion "file_put_contents ()" zu definieren (nicht auszuführen), falls sie nicht vorhanden ist. Das müsstest du (ohne das "echo ..." am Ende)in eine zusätzliche PHP-Datei schreiben und diese dann per include () in die Haupt-Datei einfügen, falls du eine ältere PHP-Version benutzt. Aber probier's erstmal ohne. ^^''
    Jo, jetzt hauts hin, und endlich kapier ich auch warum
    Hab mich am anfang gewundert warum ich die aktion an die textedit.php posten sollte, wenn ich doch nix parsen wil.. jetz weiss ich warum. dingsy/fu is davon ausgegangen dass da den namen der PHP datei mit dem formular reinschreib

    Vielen Dank an alle.
    A2k

    @drunken_monkey warum hat das so lange gedauert?? bei php fragen bist du ja sonst immer der erste der ne wunderlösung postet

  15. #15
    Zitat Zitat von Armitage2k
    Jo, jetzt hauts hin, und endlich kapier ich auch warum
    Na super!
    Zitat Zitat
    @drunken_monkey warum hat das so lange gedauert?? bei php fragen bist du ja sonst immer der erste der ne wunderlösung postet
    Naja, ich dachte eigentlich immer, es ist schon alles klar. ^^' Aber beim letzten Post habe ich dann gemerkt, dass du das insgesamt noch nicht wirklich verstanden hast und mich eingeklinkt. ^^
    Außerdem bin ich gerade bei PHP eher einer der schlechteren im Forum, keine Ahnung, wie ich zur Ehre deiner Einschätzung komme. o_O'

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •