
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. |