Gästebuchscript ->auslesen und neu schreiben
Oliver
- php
0 lulu0 Oliver0 Oliver (erledigt)0 lulu0 Oliver
0 Sven Schrodt0 Oliver
0 Formatierung meines Gästebuches
Oliver0 finnsen
Hallo Ihr Lieben,
in der Hoffnung doch einmal php zu verstehen, habe ich heute mal ein Gästebuch-Tutorial durchgearbeitet. Die Zusammenhänge hab ich sogar zum grössten Teil verstanden (wobei ich erst nochmal nachschauen muss für was das ein oder andere zeichen in php steht.
Aber zu meinem eigentlichen Problem:
Das Tutorial geht eigentlich extra auf den Punkt ein, an dem das auslesen und schreiben der gaestebuch.txt erfolgt.
Aber komischerweise löscht das script die alten einträge doch, ohne sie auszulesen und mit dem neuen eintrag zu verbinden.
Hier mal das Script, ich bin lkeider noch lange nicht soweit das ich den Fehler selbst erkenne :(
<?php
if ($action == "add"){
if ($name == "" || $mail == "" || $text == ""){
echo "<b>Du hast nicht alle Felder ausgefüllt !</b><br>";
echo "Klicke auf den Backbutton deines Browsers";
}
else{
$fp = fopen("gaestebuch.txt","r+");
$inhalt= fread($fp,filesize("gaestebuch.txt"));
fclose($fp);
if ($www == ""){
$eintrag = "$inhalt<a href="mailto:$mail">$name</a><br>$text";
}
else{
$eintrag = "$inhalt<a href="mailto:$mail">$name</a><br><a href="$www">$www</a>$text<hr><br><br>";
}
$datei = fopen("gaestebuch.txt","w+");
fputs($datei,$eintrag);
fclose($datei);
echo "Danke <i>$name</i> für deinen Eintrag";
}
}
else{
?>
<font face="Verdana" size="1">
<b>Eintragen in mein Gästebuch</b><br>
<form action="eintragen.php?action=add" method="post">
Dein Name: <input type="text" name="name" size="24"><br>
E-Mail: <input type="text" name="mail" size="24"><br>
Homepage: <input type="text" name="www" size="24"><br>
<br>
Dein Eintrag:<br>
<textarea name="text" cols="35" rows="5"></textarea><br>
<input type="submit" value="Abschicken">
</form>
</font>
<?php
}
?>
http://s3web84.nwi-server3.de/gb2/eintragen.php ist der link zu dem mini-buch :)
Grüsse
Oliver
Huhu Oliver
ich habe gerade das Gästebuch unter dem von der geposteten Link ausprobiert. Und jetzt ist es kaputt :-(
Tut mir leid :-'
lulu
btw.
Poste doch bitte mal den Teil der den Inhalt anzeigt.
Huhu Oliver
huhu lulu :)
Tut mir leid :-'
macht nix :)
lulu
ja weis ich doch schon !
btw.
Poste doch bitte mal den Teil der den Inhalt anzeigt.
<codehinklatsch>
<b>Mein Gästebuch</b><br>
<a href="eintragen.php">Hier</a> kannst du dich eintragen<br>
<br>
<?php
include("gaestebuch.txt");
?>
</codehinklatsch>
Grüsse
Olli
HI,
habs geschafft :)
Grüsse
Oliver
Huhu Oliver
<?php
include("gaestebuch.txt");
?>
Wenn Du die Einträge direkt per include einbindest solltest
Du dafür Sorge tragen, dass man keinen SkriptCode (z.B. PHP)
über Dein Formular eintragen kann.
http://www.php.net/manual/en/function.strip-tags.php
Viele Grüße
lulu
Huhu lulu
Wenn Du die Einträge direkt per include einbindest solltest
Du dafür Sorge tragen, dass man keinen SkriptCode (z.B. PHP)
über Dein Formular eintragen kann.
Darüber habe ich mir auch schon gedanken gemacht. nicht das mir da mal einer ein forum ins gästebuch baut :P
aber wie gesagt, ich bin noch gaaaanz am anfang von php. Ich habe vorgestern angefangen mit php indem ich einen zähler nachgebastelt habe, gestern habe ich mir das gb-tutorial zu gemüte geführt. und heute, naja heute muss ich erstmal von einem hoster zum anderen umziehen und mich um meine domain kümmern (ja wer hat sie den nur ?^^)
aber heute abend werde ich es mal versuchen. da dann ja wieder fragen aufkommen, kann man sich ab etwa 21uhr wieder auf herrliche fragethreads by Olli freuen :)
Grüsse
Olli
Hi Oliver,
$fp = fopen("gaestebuch.txt","r+");
hierbei steht der Dateizeiger am Anfang des files - also wir der
Inhal überschrieben....
try this:
$fp = fopen("gaestebuch.txt","a";
gruss Sven
Hi,
$fp = fopen("gaestebuch.txt","a");
hab ich probiert, aber es zeigt immernoch nur den einen letzten eintrag an :(
Grüsse
Olli
Hallo Ihr Lieben,
hab nochmal ne Frage zu php und css:
else{
$eintrag = "$inhalt<a href="mailto:$mail">$name</a>
<br><a class="book" href="$www">$www</a><p style="font-size:14px;color:red;border:1px solid #FF7C00">$text</p>
<hr>
<br><br>";
}
gibt folgende Fehlermeldung aus :
Parse error: parse error, unexpected T_STRING in /home/www/s3web84/html/gb2/eintragen.php on line 31
Darf ich css etwa nicht so in die php-datei schreiben ? und wenn nein, wie formatiere ich dann mein Gästebuch ?
http://s3web84.nwi-server3.de/gb2/eintragen.php ist der link zu dem mini-buch :)
Grüsse
Oliver
hello again,
Dein fehler liegt hier:
$eintrag = "$inhalt<a href="mailto:$mail">$name</a>
<br><a class="book" href="$www">$www</a><p style="font-size:14px;color:red;border:1px solid #FF7C00">$text</p>
das sollte dann schon so aussehen:
$eintrag = "$inhalt<a href="mailto:$mail">$name</a><br><a class="book" href="$www">$www</a><p style="font-size:14px;color:red;border:1px solid #FF7C00">$text</p>";
gruß,
finn
hello again,
Dein fehler liegt hier:
$eintrag = "$inhalt<a href="mailto:$mail">$name</a>
<br><a class="book" href="$www">$www</a><p style="font-size:14px;color:red;border:1px solid #FF7C00">$text</p>
das sollte dann schon so aussehen:
$eintrag = "$inhalt<a href="mailto:$mail">$name</a><br><a class="book" href="$www">$www</a><p style="font-size:14px;color:red;border:1px solid #FF7C00">$text</p>";
gruß,
finn
Hi,
bedeutet das ich muss vor jedem " ein \ setzen ? (sofern innerhalb eines php-befehls)
Grüsse
Olli
*ichhabmeinerstesphp-scriptgebastelt-freuer*
Aloha!
Hi,
bedeutet das ich muss vor jedem " ein \ setzen ? (sofern innerhalb eines php-befehls)
Wenn du meinst: "Gib in der Seite ein "-Zeichen aus", und dein String mit " eingeleitet wurde, dann ja.
Wenn dein String mit ' eingeleitet wurde, dann nicht (da mußt du dann auszugebende ' mit Backslash escapen).
Generell ist es nicht verkehrt, Anführungsstriche in Strings immer mit Backslash zu escapen, allerdings ist es aufwendiger. Wenn du den String mit der einen Sorte (' oder ") begrenzt, kannst du die jeweils andere Sorte (" oder ') problemlos im String verwenden und ausgeben. Nur bei der gleichen Sorte muß ein Backslash davor. Und wenn du den Backslash ausgeben willst, mußt du zwei davon schreiben, damit einer daraus wird.
- Sven Rautenberg