Newbie: fopen und Parameter

Hallo!

Ich bastle seit zwei Wochen mit PHP auf meinen Seiten rum und bin höchst zufrieden… simpler geht es fast nicht mehr, scheint mir, und mit ein bißchen Ausdauer könnte ich PHP sogar lernen
:wink: hehe…

Ich habe da eine Frage an Euch:

Auf einer Seite läuft ein Gästebuch, das die Daten plain und schon mit den dazugehörigen HTML-tags in einer ausgelagerten Datei abspeichert. Zugegeben nicht sehr elegant, aber leider hab ich noch nicht die Möglichkeit, auf dem Server mySQL o.ä. zu nutzen.

Zur Zeit sieht der fopen-Befehl im script wie folgt aus:
$fp = fopen(„eintraege.php“, „a“);

Heisst auf deutsch, daß die Datei geöffnet wird und alles was zuvor ans script übergeben wurde ans Ende der Datei „einträge.php“ angehängt wird. Ich will aber, daß die neuesten Gästebucheinträge an den Anfang gestellt werden.
Kann ich das machen? Wie?

(In Online-PHP-FAQs habe ich noch die Parameter „w“, „w+“ etc. gefunden, ich will aber nicht, daß die Datei komplett überschrieben wird.)

Vielleicht könnte ich es bewerkstelligen, am Anfang der Datei einen Kommentar „“ einzufügen, an dessen Ende und vor dem Anfang aller restlichen Einträge der jeweils neueste Eintrag eingefügt wird. Wäre für mich auch ok…

Für Eure Hilfe wäre ich sehr dankbar. :smile:

Grüße,
Michael

nein, naaainn! ganz falsch!

das, was du da machst, ist ziemlich gefährlich! niemals die datei, in der du deine daten speicherst, mit der endung „.php“ versehen.

wenn ich nämlich gemein bin, dann schreib ich dir in dein guestbook "hallo michael! <?php malicious_php_code('kill_all'); ?>.

du könntest zwar auch strip_tag()'gen oder htmlentities()'n, aber trotzdem.

wenn du’s nach dem schema machen willst, dann lieber .html benennen.

dein schema hat aber generell ein problem! du schreibst da zwar deine einträge rein, aber was ist mit den usw - tags?

zuerst nochmal zu deiner methode. so wie dus willst, würds noch so gehen:

$fp = fopen("eintraege.html", "r");
$content = fread($fp, filesize('eintraege.html'));
fclose($fp);

$content = $newEntry . $content;

$fp = fopen("eintraege.html", "w");
$fwrite($fp, $content);
fclose($fp);

aber wie gesagt, das ist nicht gut, weil du damit die kontrolle über die html-ummantelung verlierst.

besser is es, wenn du alle einträge durch ein trennzeichen getrennt in eine extra datei (guestbook.dat oder so) schreibst, und wenn jemand deine guestbook.php aufruft, liest du die einträge aus der guestbook.dat, explodest sie, sortieren etc. etc. und dann alles raus.

uhm…

heil bineria,

  • stefan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

daaaaanke, Meister, ich werds mal ausprobieren und außerdem Deinen Rat zur Sicherheit befolgen. strip_tag() ist zwar auch schon drin, aber man kann ja nie wissen.

Dargestellt werden die Daten momentan über eine eigene php -Datei, die einen HTML-Header, die Einträge, und einen HTML-Footer per include herholt. So sollte ich dann auch keine Probleme mit der html-Ummantelung kriegen.

Grüße,
Michi

nein, naaainn! ganz falsch!

das, was du da machst, ist ziemlich gefährlich! niemals die
datei, in der du deine daten speicherst, mit der endung „.php“
versehen.

wenn ich nämlich gemein bin, dann schreib ich dir in dein
guestbook "hallo michael! <?php :malicious_php_code('kill_all'); ?>.

du könntest zwar auch strip_tag()'gen oder htmlentities()'n,
aber trotzdem.

wenn du’s nach dem schema machen willst, dann lieber .html
benennen.

dein schema hat aber generell ein problem! du schreibst da
zwar deine einträge rein, aber was ist mit den
usw - tags?

zuerst nochmal zu deiner methode. so wie dus willst, würds
noch so gehen:

$fp = fopen(„eintraege.html“, „r“);
$content = fread($fp, filesize(‚eintraege.html‘));
fclose($fp);

$content = $newEntry . $content;

$fp = fopen(„eintraege.html“, „w“);
$fwrite($fp, $content);
fclose($fp);

aber wie gesagt, das ist nicht gut, weil du damit die
kontrolle über die html-ummantelung verlierst.

besser is es, wenn du alle einträge durch ein trennzeichen
getrennt in eine extra datei (guestbook.dat oder so)
schreibst, und wenn jemand deine guestbook.php aufruft, liest
du die einträge aus der guestbook.dat, explodest sie,
sortieren etc. etc. und dann alles raus.

uhm…

heil bineria,

  • stefan