<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$titelstrlen($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$eintragstrlen($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>