rainer: Mit PHP *.txt Dateien auf dem Server ändern...

Guten Morgen allerseits,

nachdem ich nun mit PHP ein bischen experimentiert habe und auch einiges funkttioniert bin ich wieder auf etwas (fuer mich) merkwuerdiges gestossen.

Mit folgenden Codes lese ich .txt Dateien ein, will sie veraendern und hernach wieder auf den Server schreiben. Funktioniert auch, aber nur bei kleinen .txt's, so bis 12 Zeilen Text. Alles was groesser ist wird auch bearbeitet, nur leider sehr brutal. Hinten macht es einfach

<--Schnipp - schreibt noch  %HTTP/1.1 dran und Schnapp-->

und der Rest ist im Nirvana.
Frage: ist es ein Prob. bei HTTP1.x das man evtl. nur Dateien bis
x-Zeichen oder x-Byte bearbeiten kann, oder ist wo ein grober Fehler im Code?

Quellcode:

admin.htm

<html>
<head>
<title>Admin</title>
</head>

<body bgcolor="#FFFFFF">
<h3 align="center">Admin</h3>
<div align="center"><b>Datei auswählen </div>
<form action="adminread.php" >
   <div align="center">
    <input type="text" name="datname" size="50">
    <input type="submit" name="Button" value="Einlesen">
  </div>
</form>
</body>
</html>

adminread.php

<?php

$fp = fopen("$datname", "r");
$inhalt_txt = fread($fp, filesize("$datname"));
fclose($fp);

echo "<form action="adminwrite.php">\n";
echo "<input type="hidden" name="datname" value="$datname"\n";
echo "<textarea name="text" cols="100" rows="50" wrap="virtual">\n";

echo "$inhalt_txt";

echo "</textarea><br>\n";
echo "<input type="submit" name="Button" value="Abschicken">\n";
echo "</form>\n";
echo "<a href="admin.htm">Zurueck</a>\n";

?>

adminwrite.php

<?

Oeffnen der Datei

$datei = fopen("$datname", "w");  

Einlesen der Formulardaten

if ($datei)  

{

fputs($datei, "$text");

}

Datei speichern und schliessen

fclose($datei);  

Abschliessende Meldung

echo "<br><br><br><div align="center">";
echo "<b>Der Text wurde geaendert!</b><br><br>";
echo "<a href="admin.htm">Zurueck</a>";

?>

Nochmals Dank an Hoagie und Wowbagger fuer die gelieferten Denkansaetze, aber so richtig hat's noch nicht gefunkt bei mir :-(
Wird aber noch.....

Gruss an alle

rainer

  1. Hi,
    zum ersten Variablen schreibt man $bla und nicht "$bla", die " kansnt Du Dir spaare, es wirkt sich auch auf die Ausfuehrgeschwindigkeit aus.
    Dann
    --schnipp--

    Einlesen der Formulardaten

    if ($datei)
      {

    fputs($datei, "$text");

    }

    --schnapp--
    mit fputs() schreib man daten in eine Datei. mit fread() list man sie aus, dein Kommentar ist verwirrend. Und ich konnte die Variable $text nirgendwo entdecken, also shcriebst Du nichts in die Datei.

    mfg,
    Jan

    1. Hi Jan,

      mit fputs() schreib man daten in eine Datei. mit fread() list man sie aus, dein Kommentar ist verwirrend. Und ich konnte die Variable $text nirgendwo entdecken, also shcriebst Du nichts in die Datei.

      die $text ist ein Stueckerl wweiter oben.
      in der adminread.php ist der name der textarea = text

      Gruss
      rainer

  2. Hallo rainer,

    Mit folgenden Codes lese ich .txt Dateien ein, will sie veraendern und hernach wieder auf den Server schreiben. Funktioniert auch, aber nur bei kleinen .txt's, so bis 12 Zeilen Text. Alles was groesser ist wird auch bearbeitet, nur leider sehr brutal. Hinten macht es einfach
    <--Schnipp - schreibt noch  %HTTP/1.1 dran und Schnapp-->
    und der Rest ist im Nirvana.

    [...]

    echo "<form action="adminwrite.php">\n";
                  
    Du gibts keine 'method' für Dein 'form' an :-). Afaik werden die Daten dann per 'get' versandt, also an die URL gehängt. Die Zeichenzahl, die mit 'get' versandt werden kann ist afaik allerdings begrenzt, und eignet sich imho darum nicht für die Übertragung von Dateien, oder langem Text. Verwende mal 'method=post', und schon sollten die Daten magischer Weise auf dem Server erscheinen (wenn ich nicht noch was anderes übersehen habe ;-).

    Gruß AlexBausW

    Please visit my SELFvisitingcard @ http://www.atomic-eggs.com/selfspezial/daten/150.html

    1. Hi,

      best thanks...

      ich code halt noch das meiste von Hand :-P

      method="post" vergessen - *lol*

      Danke und liebe Gruesse

      rainer