<html>
<head>
<title>PHP Beispiel: Ein einfaches Gästebuch</title>
</head>
<body bgcolor="#F8F8D8" text="#000000" link="#3333FF" alink="#CC6600" vlink="#CC0000">
<a href="s3.phps">Quellcode</a>
<h1><a href="index.html">PHP</a> Beispiel: Ein einfaches Gästebuch </h1>
Dies ist als Beispiel für PHP-Einsteiger gedacht, nicht als fertige
Lösung...
<hr>
<?php
# ein simples, aber seinen Zweck erfüllendes Gästebuch, einfach nachnutzbar!
# das HTML-Layout ist natürlich noch "ausbaufähig" ;-)
# Steffen.Brose@hrz.tu-chemnitz.de
#
# Achtung! Damit das Ganze funktioniert, müssen dem Webserver
# die entsprechenden AFS-Rechte im Verzeichnis, das das Gästebuch enthält,
# gewährt werden! Entsprechendes Kommando: fs sa . urz:www-user write
#
# Insbesondere die nächsten beiden Variablem sollten auf Werte gesetzt werden,
# die eigenen Vorstellungen/Gegebenheiten entsprechen:
# Variable pfad: Pfad (Ort) des Gästebuchs, relativ zum aktuellen Dokument
$pfad = "tmp/s3.guestbook.html";
# Fehlernachricht an den Aufrufenden, wenn ein Eintrag vergessen wurde
$fehler = 'Bitte Feld links ausfüllen!';
# lokale Variable, so lassen:
$titel = "";
# Variablen aus Formular:
$name = $_REQUEST['name'];
$home = $_REQUEST['home'];
$kommentar = $_REQUEST['kommentar'];
if ($name && $kommentar) {
# Fall1: Einträge vollständig, kann ins Gästebuch schreiben
if (!(file_exists($pfad))) {
# Gästebuch noch nicht vorhanden? Dann HEAD und Überschrift erzeugen
$titel = "<html>
<head>
<title> Mein Gästebuch </title>
</head>
<body bgcolor=\"#F8F8D8\" TEXT=\"#000000\" LINK=\"#3333FF\" ALINK=\"#CC6600\" VL
INK=\"#CC0000\">
<h1> Mein Gästebuch </h1>
<hr>";
}
if (!($fp = fopen($pfad, "a"))) {
echo "Fehler beim Öffnen des Gästebuches!";
exit;
}
if ($titel) {
# muss HEAD und Überschrift erzeugt (geschrieben) werden?
if (!($ok = fwrite($fp, $titel, strlen($titel)))) {
echo "Fehler beim Schreiben ins Gästebuch!\n";
exit;
}
}
# Eintrag wird aus HTML-Statements und Formulardaten zusammengebaut.
# Nur die ersten 30 Zeichen des Kommentars
# Dabei werden evtl. HTML-Eingaben der Nutzer kodiert - htmlspecialchars
$eintrag = "<b>Absender</b>: " . htmlspecialchars($name) . "<br>
<b>Homepage</b>: " . htmlspecialchars($home) . "<br>
<b>Abgeschickt am</b>: " . date('d. F Y H:i') . "<br>
<b>von Rechner</b>: " . $_SERVER['REMOTE_HOST'] . "/" . $_SERVER['REMOTE_ADDR'] . "<p>
<b>Mein Beitrag</b>:<br> " . htmlspecialchars(sprintf("%30s", $kommentar)) . "<p><hr>\n\n";
if (!($ok = fwrite($fp, $eintrag, strlen($eintrag)))) {
echo "Fehler beim Schreiben ins Gästebuch!\n"; exit;
}
fclose($fp);
# Info an den Nutzer nach Absenden des Formulars:
echo "Danke für Deine Nachricht! Sie wurde in mein Gästebuch aufgenommen.";
exit;
}
if (isset($_REQUEST['ausgefuellt'])) {
# Fall2: Formular abgeschickt, aber evtl. Name und/oder Kommentar nicht ausgefüllt?
if (! $name) $name_fehlt = $fehler;
if (! $kommentar) $kommentar_fehlt = $fehler;
}
# Folgendes evtl. auskommentieren - stb
echo "<a href=\"$pfad\">Gästebuch ansehen</A><P>";
?>
<!-- das eigentliche Formular: -->
<!-- durchlaufen bei Fall2, mit Aufforderung zum Ausfüllen fehlender Felder -->
<!-- durchlaufen bei Fall3: erstmaliger Aufruf des Dokumentes -->
<h3> Hier kannst Du Dich in mein Gästebuch eintragen! </h3>
<p>
<form action="s3.php" method=post>
<input type="hidden" name="ausgefuellt" value="1">
<table border=0>
<tr>
<td>Dein Name:</td>
<td><input type="text" name="name" value="<?php echo $name; ?>"></td>
<td><?php echo $name_fehlt; ?> </td>
</tr>
<tr>
<td>Deine Homepage:<br>(falls vorhanden)</td>
<td><input type="text" name="home" value="<?php echo $home; ?>"></td>
</tr>
<tr>
<td>Dein Kommentar:</td><td><textarea rows=10 cols=35 name="kommentar"><?php echo $kommentar; ?></textarea></td>
<td><?php echo $kommentar_fehlt; ?> </td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Absenden"><br></tr>
</tr>
</table>
</form>
</body>
</html>