Fwrite (ersetzen)
Thomas
- php
Hallo,
Ich hab hier ein script, dass eingaben per GET übernimmt und in eine TXT speichert.
nun will ich, dass die txt vorher leergelöscht wird. Also, dass das neue den inhalt der TXT datei immer überschreibt.
wie mach ich das?
<?php
$user = $_POST["Name"];
$user = htmlentities($user);
$inhalt = $_POST["inhalt"];
$inhalt = htmlentities($inhalt);
$inhalt = str_replace("\n", "<br>", $inhalt);
$email = $_POST["EMail"];
$email = htmlentities($email);
if ($inhalt == "")
{
echo "Sie müssen das Feld "Namen"
und "Inhalt" ausfüllen";
}
else
{
$datum= date("d.m");
$eintrag="<font color="green">($user/$datum)</font> $inhalt ";
$datei = fopen("storyname.txt", "a");
fwrite($datei, "\n".$eintrag);
fclose($datei);
echo "<center>Danke, ihr Eintrag wurde hinzugefügt!</center><br>
";
}
?>
Bitte helft mir...
vielleicht hilft das:
http://de.php.net/fopen
Paul
Sollte das gehen?
'w'
Öffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert wird versucht sie anzulegen.
heist auf 0Byte leerlöschen?
heist auf 0Byte leerlöschen?
Jupp.
Ansonsten probiers doch einfach aus.
Hab ich.
Die Datei wird zwar leer gemacht wenn ich vorher manuell was rein schreibe.
aber sie wird nicht neu beschrieben...hilfe?
Hallo
Die Datei wird zwar leer gemacht wenn ich vorher manuell was rein schreibe.
aber sie wird nicht neu beschrieben...hilfe?
fopen öffnet eine Datei. Mit dem Parameter "w" wird die Datei beim Funktionsaufruf nicht nur geöffnet, sondern auch geleert. Das war's, mehr macht die Funktion nicht. Für andere Aufgaben gibt es andere Funktionen. Für die avisierte Aufgabe eignet sich die im Betreff (steht ganz oben auf dieser Seite) genannte Funktion.
Tschö, Auge
Hello,
Du hast auch vergessen, die Datei für andere Prozesse zu sperren.
$datei = fopen("storyname.txt", "wb");
if ($datei) ## hat das Öffnen zum beschreiben geklappt?
{
if(flock($datei,LOCK_EX)) ## konnte die Datei gesperrt werden?
{
fwrite($datei, "\n".$eintrag);
}
else
{
$_errors[] = 'Datei konnte nicht exclusiv gesperrt werden';
}
fclose($datei);
}
else
{
$_errors[] = 'Datei konnte nicht zum Beschreiben geöffnet werden';
}
Ein harzliches Glückauf
Tom vom Berg
Warum muss ich die bitte sperren?
och mensch, ich verstehs nich...
Hello,
Warum muss ich die bitte sperren?
Weil ein anderer Prozess darauf zur gleichen Zeit lesend oder schreibend zugreifen könnte, und es dann Durcheinander geben würde. Die Daten in Bezug auf die Datei beider Prozesse wären damit nicht mehr konsistent.
Es gibt einen Artikel dazu von Christian Seiler:
http://aktuell.de.selfhtml.org/artikel/programmiertechnik/dateisperren/index.htm
Den solltest Du mal lesen und dann vielleicht noch
http://de.wikipedia.org/wiki/Race_Condition
Auch, wenn nur Du alleine per Browser auf die Datei zugreifen könntest, wäre es doch möglich, dass Du zwei Fenster mit der betroffenen URi geöffnet hättest und sich diese gegensitig inndie Quere kommen.
Derartige Dinge später nachzupflegen in Scripten, nur weil man am Anfang zu faul dazu war (was ich Dir hier nicht unterstelle), rächt sich durch ekelhaft viel Mehrarbeit.
Ein harzliches Glückauf
Tom vom Berg