Entwicklung eines einfachen Gästebuches
Gästebücher werden mittlerweile auf unzähligen Webseiten im Internet eingesetzt. Ersteller bzw. Betreiber einer Webseite bekommen so eine Rückmeldung über ihr Angebot und einen Einblick über die Besucher. Trotz der mittlerweile vorhandenen kostenlosen Gästebuch-Services im Internet ist es nicht besonders schwer, ein eigenes Skript für ein Gästebuch zu schreiben.Welche Informationen sollen im Gästebuch enthalten sein?
Wie genau die Informationen sein sollen, kann jeder Programmierer eines Gästebuches selbst entscheiden. Da gibt es keine Richtlinien, Vorschriften o.ä. Es empfiehlt sich allerdings, zumindest einige Daten wie Name, E-Mail oder dergleichen abzufragen.Unser Beispiel wollen wir recht einfach halten und fragen deshalb nur die folgenden 5 Daten ab: Datum, Name, Email-Adresse, Webseite und der Kommentar selbst.
Um dies zu speichern legen wir zunächst die dazu nötige Tabelle in unserer Datenbank an:
CREATE TABLE guestbook (id INT AUTO_INCREMENT PRIMARY KEY,
datum DATETIME, name TEXT, mail TEXT, url TEXT, eintrag TEXT);
Schritt 1: Sichtbare Informationen beim ersten Aufruf des Gästebuches
Das Beispiel-Gästebuch zeigt beim ersten Aufruf die das Eingabeformular sowie die Einträge an. Der dazugehörige Bereich des Skriptes sieht so aus:<?
$db_server = "xxx";
$db_name = "guestbook";
$db_user = "xxx";
$db_passwort = "xxx";
@mysql_connect($db_server,$db_user,$db_passwort);
mysql_select_db($db_name);
if(!isset($_POST['submit1']))
{
$result = mysql_db_query("guestbook","SELECT * FROM guestbook ORDER BY datum DESC");
$anzahl = mysql_num_rows($result);
print('<h1>Gästebuch</h1>
<form action="gaestebuch.php" method="post">
<p>Name<br><input type="text" name="name" ></p>
<p>E-Mail<br><input type="text" name="email"></p>
<p>Homepage<br><input type="text" name="homepage"></p>
<p>Kommentar<br><textarea name="comment" cols="40"
rows="6"></textarea></p>
<input type="submit" name="submit1" value="Eintrag
absenden">
</form>
<hr> ');
if($anzahl == 0)
{
print('<h3>Noch kein Eintrag im Gästebuch vorhanden</h3>');
}
else
{
for($i=0;$i<$anzahl;$i++)
{
print('<fieldset>
<legend>Eintrag '.($i+1).' vom
'.mysql_result($result,$i,'datum').'</legend>
<table width="100%">
<tr><th width="50%">Name:</th>
<td>'.mysql_result($result,$i,'name').'</td></tr>
<tr><th>E-Mail:</th>
<td>'.mysql_result($result,$i,'email').'</td></tr>
<tr><th>Webseite</th>
<td>'.mysql_result($result,$i,'url').'</td></tr>
<tr><td colspan="2">'.
mysql_result($result,$i,'eintrag').'</td></tr>
</table>
</fieldset>');
}
}
}
...
Schritt 2: Neuer Eintrag ins Gästebuch
Der zweite Schritt nimmt an dass der Besucher jetzt alle Felder des Formulares ausgefüllt hat und nun seine Eingaben ins Gästebuch übernehmen möchte. Durch den Klick auf den Button wird der folgende Teil im Skript angesprochen:...
else
{
mysql_db_query("guestbook",
'INSERT INTO guestbook (datum,name,mail,url,eintrag)
VALUES (NOW(), "'.$_POST['name'].'", "'$_POST['email'].',
'.$_POST['homepage'].', '.$_POST['comment'].')');
echo '<p>Ihr Eintrag wurde übernommen.</p>';
}
?>
Wenn das Skript jetzt verwendet werden soll, müssen
a) beide Bereiche in ein PHP-Skript kopiert (zweiter Bereich NACH dem ersten Bereich) und
b) die entsprechenden Zugangsdaten für den Zugriff auf die MySQL-Datenbank
eingetragen werden.
Schritt 3: Administration des Gästebuches
Es soll ja vorkommen, dass im Gästebuch mal ein Eintrag erscheint, der aus irgendwelchen Gründen "nicht akzeptabel" ist. Aus diesem Grund ist es sinnvoll, eine Möglichkeit zur Verfügung zu haben, wie man solche Einträge wieder - ohne direkten Zugriff auf die Datenbank - entfernen kann.Der folgende Code zeigt eine Variante, wie unliebsame Einträge wieder aus dem Gästebuch entfernt werden können.
<?
$db_server = "xxx";
$db_name = "guestbook";
$db_user = "xxx";
$db_passwort = "xxx";
@mysql_connect($db_server,$db_user,$db_passwort);
mysql_select_db($db_name);
if(isset($_POST['id']))
{
$result = mysql_db_query("guestbook",
'SELECT * FROM guestbook ORDER BY datum DESC");
print('<form action="administration.php" method="post">');
print('<h2>Löschen von Einträgen</h2>
<table border="1">
<tr><th>Bitte markieren</th>
<th>Datum</th><th>Name</th><th>Eintrag</th></tr>');
$num = mysql_num_rows($result);
for($i=0;$i<$num;$i++)
{
print('<tr>
<td><input type="checkbox" name="id[]" value="'.
mysql_result($result,$i,'id').'"></td>
<td>'.mysql_result($result,$i,'datum').'</td>
<td>'.mysql_result($result,$i,'name').'</td>
<td>'.mysql_result($result,$i,'eintrag').'</td>
</tr>');
}
print('</table><input type="submit" value="Einträge Löschen">');
}
else
{
foreach($_POST['id'] as $eintrag)
{
$result = mysql_db_query("guestbook",
'DELETE FROM guestbook WHERE id='.$eintrag);
if($result == "1")
{
print('<p>Eintrag mit der Id '.$eintrag.
' wurde gelöscht.</p>');
}
{
print('<p style="color:red;">Eintrag mit der Id '.$eintrag.
' konnt nicht gelöscht werden.</p>');
}
}
}
?>
Mit Hilfe der Checkbox kann der Administrator des Gästebuches entscheiden, welche Einträge gelöscht werden sollen. Es können auch mehrere Einträge gleichzeitig markiert werden.
Nach dem Klick auf den Submit-Button werden die Einträge gelöscht und eine Bestätigungsmeldung wird angezeigt.
Dazu werden zuerst alle Einträge aus der Datenbank zusammen mit ihrer id aufgerufen und im Browser angezeigt. Die jeweilige Id wird der dazugehörigen Checkbox als value zugewiesen. Wichtig dabei ist, dass dem Namen der Checkbox ein "[]" hinzugefügt wird und das alle Checkboxen den gleichen Namen haben. Damit wird bei der Verarbeitung des Formulars automatisch ein Array mit dem Namen der Checkbox angelegt, welches mit den zugewiesenen Werte der Checkboxen (= Id der Datenbankeinträge) gefüllt wird. Bei der Verarbeitung des Formulares wird das Array einzeln ausgelesen und die darin enthaltenen Einträge gelöscht.
Hinweis zu Gästebuch-Spam
Ein Beispiel für Gästebuch-Einträge, die "nicht akzeptabel" sind, sind SPAM-Meldungen. Es gab und gibt immer wieder Menschen, die in Gästebüchern massenhaft Links auf von ihnen beworbene Seiten eintragen, um die Zugriffsrate zu erhöhen. Beim Indizieren der Gästebücher haben die sog. "Robots" der Suchmaschinen früher solche Links mit gespeichert. Mittlerweile kann Gästebuch-SPAM durch zwei Maßnahmen relativ einfach unterbunden werden:Schritt 1:
Im head-Bereich des Gästebuches wird das Meta-Tag
<meta name="robots" content="index, nofollow">
eingetragen. Damit indizieren die Robots der Suchmaschinen zwar das eigentliche Gästebuch, jedoch keinerlei Links innerhalb des Gästebuches.Schritt 2:
Durch ein Administrations-Skript, wie bereits im Artikel beschrieben, können unliebsame SPAM-Einträge leicht wieder gelöscht werden.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Weiterlesen: ⯈ E-Mails versenden mit PHP
Über uns

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project