
Download | Testen
Dieses Beispiel wurde uns von Thomas Gauweiler zur Verfügung gestellt. Das ist ein dateibasiertes Gästebuch, das im Gegensatz zu unserem Beispiel keine Datenbank benötigt.
Seite 1: (HTML-Formular) buch.html
<table><tr><FORM ACTION="save.php3" METHOD=POST>
<td>Name:</td>
<td><INPUT TYPE=text NAME=name SIZE=30 MAXLENGTH=150></td>
</tr><tr>
<td>Email:</td>
<td><INPUT TYPE=TEXT NAME=email SIZE=30 MAXLENGTH=50></td>
</tr><tr>
<td> </td>
<td><input type=checkbox name=open checked>
<font size=1>Soll die Emailadresse später im Gästebuch angezeigt werden?</td>
</tr><tr>
<td>Homepage:</td>
<td><INPUT TYPE=TEXT NAME=hp SIZE=30 MAXLENGTH=255></td>
</tr><tr>
<td>Meinung:</td>
<td><textarea name="inhalt" rows="6" cols="25"></textarea></td>
</tr><tr>
<td> </td>
<td><input type=submit value="Absenden"></td></form>
</tr></table>
|
|
|
|
Seite 2: ("save.php3" - Speichert neue Einträge ab.) Beachten Sie bitte, dass diese Seite keine HTML-Ausgaben macht! Keine Leerzeichen oder sonstiges! Außerdem setzen Sie bitte die Schreibrechte chmod 777 auf das Verzeichnis, in dem das Gästebuch liegt, ansonsten kann die Datei nicht erstellt werden, in der Einträge gespeichert werden sollen.
<?php
function my_nl2br ($text) {
$retvalue="";
for ($ii=0; $ii < strlen($text); $ii++){
if ($text[$ii]!=chr(13)) // diese Zeile fehlt wohl in der Originalroutine
$text[$ii]=="\n" ? $retvalue .= "<br>" : $retvalue .= $text[$ii];
}
return $retvalue;
}
if (!file_exists("guestbook.csv")) fclose(fopen("guestbook.csv","w+"));
if ($inhalt) {
$lines=file("guestbook.csv");
$num=sizeof($lines);
if ($num) {
$entry=explode ("µ", $lines[$num-1]); // zerlege letzte Zeile
$index=$entry[0]+1;
} else $index=1;
$fp=fopen("guestbook.csv","a");
$datum=date("YmdHis");
$inhalt=addslashes($inhalt);
$name=addslashes($name);
if ($name == "") $name="unbekannt";
if (!$open) $open="";
fwrite($fp, my_nl2br(implode(array ($index, $name, $email, $open, $hp, $inhalt, "", $datum) ,"µ")) . "\n");
fclose($fp);
}
header("HTTP/1.0 302 Moved\nLocation: gaestebuch.php3?z=1");
?>
|
|
|
|
Seite 3: ("gaestebuch.php3" - Die Gästebuch-Einträge werden ausgelesen und angezeigt)
<?
// es werden immer max. 10 Einträge angezeigt.
// optionaler Parameter: z (welche der 10 Einträge)
// falls nicht angegeben, dann die ersten 10.
if (!file_exists("guestbook.csv")) fclose(fopen("guestbook.csv","w+"));
$lines=file("guestbook.csv");
// Anzahl der Seiten und weitere Variablen
$num=sizeof($lines);
arsort($lines); // den neuesten Eintrag zuerst
$seiten=ceil($num / 10);
if (!$z) $z=1;
$y=$z * 10;
$x=$y - 10;
if ($y > $num) $y=$num;
if ($num > 0) {
for ($i= $x; $i< $y ; $i++) {
$entry=explode ("µ", $lines[$i]); $nr=$entry[0];
$name=$entry[1];
$open=$entry[3];
if ($open == "on") {
$email=$entry[2];
if (strlen($email)< 8) $email="";
else $name="<A HREF='mailto:$email'>$name</A>";
}
$hp=$entry[4];
if ($hp != "") $hp="| <A HREF='$hp' TARGET=_new>Homepage</A>";
$inhalt=$entry[5];
$kommentar=$entry[6];
if ($kommentar != "") $kommentar="<BR><FONT COLOR=
// Formatierung des datums
$datum=$entry[7];
$jahr=substr($datum,2,2);
$monat=substr($datum,4,2);
$tag=substr($datum,6,2);
$stunde=substr($datum,8,2);
$minute=substr($datum,10,2);
$datum="$tag-$monat-$jahr | $stunde:$minute";
?>
<TABLE WIDTH=95% BGCOLOR= <tr>
<td><B><? echo "<B>$name $hp</B>"; ?></td>
<TD ALIGN=RIGHT>
<? echo "$datum<br>"; ?></td>
</tr>
</TABLE><BR>
<?
echo "$inhalt $kommentar<P>";
flush();
}
} else echo "Es gibt noch keine Einträge im Gästebuch";
// Weiter unten
if ($num > 10) {
echo "<B><CENTER>";
$vor=$z - 1;
$next=$z + 1;
if ($vor != 0) echo "<A HREF='gaestebuch.php3?z=$vor'>";
echo "Vorherige";
if ($vor != 0) echo "</A>";
echo " | ";
if ($next <= $seiten) echo "<A HREF='gaestebuch.php3?z=$next'>";
echo "Weitere";
if ($next <= $seiten) echo "</A>";
echo "</B></CENTER><P>";
}
?>
|
|
|
|
Seite 4: ("gast.php3" - sollte in einem Passwordgeschützten Bereich liegen)
Diese Seite ist der "Artikelverwaltung" ähnlich.
<?
// "gast.php3" - sollte in einem Passwordgeschützten Bereich liegen z.b. cgi-bin/admin/
function my_nl2br ($text) {
$retvalue="";
for ($ii=0; $ii < strlen($text); $ii++){
if ($text[$ii]!=chr(13)) // diese Zeile fehlt wohl in der Originalroutine
$text[$ii]=="\n" ? $retvalue .= "<BR>" : $retvalue .= $text[$ii];
}
return $retvalue;
}
?>
<html>
<body>
<H3>Gästebuchvervaltung</H3>
<?
if (!file_exists("../guestbook.csv")) fclose(fopen("../guestbook.csv","w+"));
$lines=file("../guestbook.csv");
$num=sizeof($lines);
// ------- Löscht einen Eintrag aus der Datenbank------------
if ($action == "loeschen") {
for ($i=0; $i < $num; $i++) {
$entry=explode ("µ", $lines[$i]); // zerlege i-te Zeile
if ($entry[0] == $nr) {
$num--;
for ($j=$i; $j < $num; $j++)
$lines[$j]=$lines[$j+1];
}
}
$meldung="Der Eintrag wurde gelöscht.<P>";
}
// ------- Fügt einen Kommentar ein -----------------------
if ($action == "save") {
for ($i=0; $i < $num; $i++) {
$entry=explode ("µ", $lines[$i]); // zerlege i-te Zeile
if ($entry[0] == $nr) {
$entry[6]=my_nl2br(addslashes($kommentar));
}
$lines[$i]=implode($entry,"µ");
}
$meldung="Das Kommentar wurde eingefügt.<P>";
}
// -------Selektiert den ausgewählten Artikel zum Updaten-----
if ($action == "update") {
?>
<TABLE>
<FORM ACTION=gast.php3 METHOD=GET>
<INPUT TYPE=HIDDEN NAME=action VALUE="save">
<INPUT TYPE=HIDDEN NAME=nr VALUE="<? echo $id ?>">
<tr>
<td><B>Ihr Kommentar:</B><BR><TEXTAREA NAME="kommentar" ROWS="5" COLS="45">
<? echo $kommentar ?>
</TEXTAREA></td>
</tr><tr>
<td><INPUT TYPE=SUBMIT VALUE="Eintrag Updaten"></FORM></td>
</tr>
</TABLE><P>
<?
}
if (!$meldung) $meldung="Optionen<P>";
echo "$meldung";
?>
<OL><B>Alle Einträge in Übersicht:</B>
<?
// ----Gibt alle Datensätze der Tabelle gast aus.----
if ($num > 0) {
for($i=0;$i < $num; $i++) {
$entry=explode ("µ", $lines[$i]); $nr=$entry[0];
$name=$entry[1];
$inhalt=$entry[5];
$kommentar=$entry[6];
echo "<LI> $name - <A
HREF='gast.php3?id=$nr&action=update&kommentar=$kommentar'>Kommentar einfügen</A> -
<A HREF='gast.php3?nr=$nr&action=loeschen'>Eintrag Löschen</A><BR>
$inhalt<BR><FONT COLOR=RED>$kommentar</FONT><P>";
}
} else { echo "<li>Es gibt keine Datensätze in der Datenbank<P>"; }
$fp=fopen("../guestbook.csv","w+");
for ($i=0; $i < $num; $i++)
fwrite($fp, $lines[$i]);
fclose($fp);
?>
<P><A HREF="../gaestebuch.php3">Zur Startseite</A>
</OL>
</BODY></HTML>
|
|
|
|
Das Design ist selbstverständlich Geschmacksache und sollte dementsprechend angepasst werden... Sollten Sie keine Lust haben, eigenes Gästebuch zu bauen, stellen wir Ihnen ein gern zur Verfügung. |