• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

gästebuch erstellen

HTMLooser

Neues Mitglied
hallo,
ich bin dabei mir ein gästebuch zu erstellen, was theoretisch auch funktioniert, wo ich aber einen automatischen zeilenumbruch einbauen, weiß aber nicht wie das geht.
kann mir jemand helfen?
hier meine codes:

index.php :
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
    <title>Gästebuch</title>
    <link href="gaestebuch.css" type="text/css" rel="stylesheet" />
</head>
<body bgcolor="#000000">
<h1>
<font color="white">
G&auml;stebuch
</font>
</h1>
<br/>
<br/>
<h3>
<a name="oben">
<a href="gb1.php">Kommentar hinzuf&uuml;gen</a>
</a>
</h3>
<?php
$datei = file("beitraege.txt");
 foreach ($datei AS $ausgabe)
   {
   $zerlegen = explode("|", $ausgabe);
   echo "<div class=\"beitrag\"> Von: <i></i>$zerlegen[0]</i><br>
         <b>$zerlegen[1]</b> </div<br><br>";
   }
?>
<p align="center">
<a href="#oben">
Nach oben
</a>
<br/>
<a href="/index.html">
Zur&uuml;ck zur Startseite
</a>
</p>
 
</body>
</html

gb1.php :
PHP:
<html>
<head>
<title>
Neuen Beitrag erstellen
</title>
</head>
<body bgcolor="black">
<form action="gb2.php" method="post">
<font color="white">
Kommentar:
</font>
<br/>
<textarea name="kommentar" cols="30" rows="5">
</textarea>
<br/>
<font color="white">
Name:
</font>
<br/>
<input type="text" name="name">
<input type="Submit" value="Absenden">
</form>

und gb2.php :
PHP:
<?php
$kommentar = $_POST["kommentar"];
if($kommentar=="")
   {
   echo "Bitte geben Sie etwas ein, bevor Sie Absenden";
   }
else
   {
   echo "<a href=\"index.php\">Weiter --></a>";
   }
$datei = fopen ("beitraege.txt", "a+");
fwrite ($datei, "$name|$kommentar");
fclose ($datei);
?>

dann habe ich noch eine leere beitraege.txt datei in der das problem liegt

kann mir jemand helfen?

danke schonmal im voraus!
 
Hey,

automatische Zeilenumbrüche machst du mit dieser Funktion: PHP: nl2br - Manual

Dein Gästebuch ist ziemlich Unsicher. Jeder kann Skripte und HTML Codes rein schmuggeln, darum solltest du dir auch diese Funktion anschauen: PHP: htmlspecialchars - Manual

Vor dem Einfügen in die Datei solltest du Unbedingt alle | mit str_replace() entfernen, sonst könntest es ebenfalls Probleme geben:

PHP:
$name = str_replace('|', '', $name);
$kommentar = str_replace('|', '', $kommentar);
Gruß xXxPeterPanxXx
 
danke aber wenn sich jemand rein hackt etc. ist mir das zz. egal, weil es nur eine versuchs-homepage ist, mit der ich lerne.

aber kann mir jemand in kurzfassung (evtl. auch als codeschnipsel) sagen, wie ich es hinkriege dass er in der txt datei automatisch zeilenumbrüche einbaut?
 
Der Besucher schreibt sein Kommentar auf deiner Website und fügt einfach HTML Elemente, wie <p>, <h1> oder <img src="" alt"" /> ein oder noch schlimmer er schreibt JavaScript Code in das Kommentar, dann könnte der Besucher deine Website regelrecht zerstören.

Um deine Website Sicher zu machen, müsste es reichen, diese Funktion zu benutzen:

PHP:
$kommentar = htmlspecialchars($kommentar);
$name = htmlspecialchars($name);

Ich hoffe das ist jetzt Richtig :)

Gruß
 
danke, in dem fall ist das wohl doch angebracht.

aber ich hab immernoch mein problem dass gb2.php nach jedem kommentar in beitraege.txt einen zeilenumbruch einbauen soll.
 
irgendwie funktioniert das nicht.
in der txt datei macht er ein <br/> rein aber er macht keine zeilenumbruch!
aber ich will ja keinen umbruch-tag sondern einen umbruch, weil ich die sonst ständig selber reinhauen
muss.
geht das nicht irgendwie automatisch ?
es ist halt eine normale .txt datei
 
Normal macht ein "\r\n" einen Zeilenumbruch. Verushce mal das anstatt dem <br>. (Hatte aber neulich dennoch probleme damit)
 
das versteh ich nicht ganz.
ich ahb jetzt ein paar varianten versucht, aber nicht rausgekriegt, wo das hingehört.
könnte mir das nochmal einer sagen?
 
achso.
aber da hatte ich es schon und es hat nicht funktioniert.
könnte mir das vielleicht mal jemand im code zeigen?
 
Zuletzt bearbeitet:
Hab's mir jetzt nicht genau angeguckt, aber vielleicht so?!

Wobei das eigentlich nur die Ausgabe ist.
PHP:
<?php
$datei = file("beitraege.txt");
 foreach ($datei AS $ausgabe)
   {
   $zerlegen = explode("|", $ausgabe);
   echo "<div class=\"beitrag\"> Von: <i></i>$zerlegen[0]</i><br>\r\n\
         <b>$zerlegen[1]</b> </div<br><br>\r\n";
   }
?>
Aber an dieser Stelle scheinst du sinnlose Tags zu verwenden:
HTML:
Von: <i></i>
Öffnest und schließt Tags, die keine Wirkung haben.

Sollte vielleicht so aussehen:
HTML:
Von: <i>$zerlegen[0]</i>
Edit:
Und hier vielleicht das selbe mal ausprobieren:
PHP:
fwrite ($datei, "$name|$kommentar\r\n<br>");
So in der Art dürfte es funktionieren?!
 
Zuletzt bearbeitet:
ich hab da jetzt das:
PHP:
fwrite ($datei, "$name|$kommentar\r\n<br>")

aber wenn ich das dann öffne erscheint:

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /usr/export/www/vhosts/funnetwork/hosting/puphahn/gaestebuch/gb2.php on line 16
Parse error: syntax error, unexpected T_STRING in /usr/export/www/vhosts/funnetwork/hosting/puphahn/gaestebuch/gb2.php on line 16
 
Meine Syntax ist falsch.
Aber so ungefähr müsste es ja funktionieren. Jemand, der es besser weiß als ich, könnte es sicher berichtigen.
Vielleicht mal "$name . "|" . $kommentar . "<br>" \r\n" oder so!?
 
dein Ansatz ist schon falsch, nutze eine datenbank, flatfile datenbank (sqllite), JSON, SERIALIZE oder XML um die daten zu speichern, aber nicht so.
 
Zurück
Oben