Hallo Leute,
ich habe mir ein PHP Gästebuch aus dem Internet gezogen. Die Gäste geben ihren Text in die Textarea ein und klicken danach auf den "Eintragen Button". Der Text wird danach in meiner SQL Datenbank gespeichert und ausgegeben.
Meine Fragen:
1) Ist es möglich einen Zeilenumbruch nach einer bestimmten Anzahl von Zeichen automatisch auszulösen. Ich möchte nicht, dass mein Gästebuch vollgespamt wird.
2) Kann man irgendwie festlegen, wieviele Zeichen in die Textarea maximal eingegeben werden dürfen?
Danke schonmal im vorraus. Ich hoffe hier kann mir kann jemand helfen.
Hier mein Quelltext:
PHP
<?php
// Die "db.php" wird includet. Damit haben wir die Verbindug zu der DB aufgebaut und haben alle Funktionen, die sich in der "db.php" befinden zur Hand.
include("db.php");
// 1. IF-Abfrage | Hinzufügen eines neuen GB-Eintrages
// Anweisungen werden ausgeführt, wenn die Variable "$action" den Wert "new" aufweist
if ($action == "new") {
echo "[b]Neuer beitrag[/b]
";
// 2. IF-Abfrage | Überprüft die Felder "$vorname" und "$text" auf ihre Vollständigkeit
if ($vorname != "" && $text != "") {
echo "Danke für Ihren Eintrag.
";
// Das aktuelle Datum(+Uhrzeit) werden auf die Variable "$datum" verwiesen. Das Datum besteht aus einer Zahlenfolge.
$datum = time();
// Der neue GB-Eintrag wird in die DB (Tabelle "gaestebuch") gespeichert
$sql = "INSERT INTO `gaestebuch` (`name`, `vorname`, `mail`, `icq`, `homepage`, `text`, `datum`)";
$sql .= "VALUES ('$name', '$vorname', '$mail', '$icq', '$homepage', '$text', '$datum');";
query($sql);
}
// Wenn die Felder nicht vollständig ausgefüllt sind, kommt folgende Meldung
else {
echo "Sie haben nicht alle Felder ausgefüt!";
// 2. IF-Abfrage ENDE
}
// 1. IF-Abfrage ENDE
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Gästebuch</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-5">
</head>
<body>
<h1>Gästebuch</h1>
<h5>[b]Hier können Sie einen neuen Eintrag erstellen:[/b]</h5>
<form action="gaestebuch.php">
<table cellpadding="0" cellspacing="5" border="0">
<tr>
<td width="100" class="text" align="right">Name:</td>
<td><input type="text" name="vorname" size="25" ></td>
</tr>
<tr>
<td class="text" align="right">e-Mail:</td>
<td><input type="text" name="mail" size="25"></td>
</tr>
<tr>
<td class="text" align="right">Homepage:</td>
<td><input type="text" name="homepage" value="http://" size="25"></td>
</tr>
<tr>
<td class="text" align="right" valign="top">Nachricht:</td>
<td><textarea cols="35" rows="10" name="text"></textarea></td>
</tr>
<tr>
<td class="text">
</td>
<td valign="top" align="right"><input type="submit" value="Eintragen"></td>
</tr>
</table>
<input type="hidden" name="action" value="new">
</form>
<h1>Alle Einträge:</h1>
<table border="0" width="380" cellpadding="2" cellspacing="0">
<?php
// "$persite" legt die Anzahl der GB-Einträge fest, die pro Seite angezeigt werden
$persite = 5;
// IF-Abfrage und Variable "$page" sind für die Verteilung der GB-Einträge auf mehrere Seiten zuständig
if($x == "") $x = 0;
$page = $x*$persite;
// In den nächsten 5 Zeilen werden alle GB-Einträge auf einen Array ("$row") verwiesen
$result = query("SELECT * FROM gaestebuch ORDER BY Datum DESC LIMIT $page,5");
$anzahl = mysql_num_rows($result);
// WHILE-Schleife dient der Wiedergabe aller GB-Einträge, die sich in der DB befinden
// WHILE-Schleife ANFANG
while($row = mysql_fetch_array($result)) {
// IF-Abfrage überprüft ob eine Homepageadresse eingetragen ist oder nicht und macht dann eine entsprechende Ausgabe
if ($row[homepage]=="http://") {
$hp = "keine Homepage";
} else {
$hp = "<a href=\"$row[homepage]\" target=\"_blank\">Homepage</a>";
// IF-Abfrage ENDE
}
?>
<tr>
<td class="text">[b]<? echo $row[vorname]; ?>[/b] [b]<? $row[name]; ?>[/b] | [url='mailto:<? echo $row[mail]; ?>']e-Mail[/url] | <? echo $hp; ?></td>
</tr>
<?
// Da das Datum in einer Zahlenfolge in der DB liegt, muss diese zuerst in ein reguläres Datumformat zerlegt werden. Dies geschieht in folgenden 2 Zeilen
$datum = getdate($row[datum]);
$okay = "$datum[mday].$datum[mon].$datum[year] um $datum[hours]:$datum[minutes]";
?>
<tr>
<td class="text">[i]schrieb am <? echo $okay; ?>[/i]</td>
</tr>
<?
// IF-Abfrage überprüft ob ein Kommentar vorhanden ist oder nicht und gibt diesen ggf. wieder
if ($row[8] == "") $kommentar = "";
else $kommentar = "[i][b]Antwort:[/b] $row[kommentar][/i]";
?>
<tr>
<td class="text"> <? echo $row[text]; ?></td></tr>
<tr>
<td class="text"></td>
</tr>
<tr>
<td class="comment"><? echo $kommentar; ?></td>
</tr>
<tr>
<td class="text"></td>
</tr>
<tr>
<td class="text"><hr align="center" color="000000" width="100%"></td>
</tr>
<tr>
<td class="text"></td>
</tr>
<?
// WHILE-Schleife ENDE
}
?>
</table>
<?
// Die "menge"-Funktion wird aufgerufen um die Anzahl aller GB-Einträge zu ermitteln
$count = menge("gaestebuch");
// Im foldendem Abschnitt werden die GB-Einträge auf mehrere "Seiten" aufgeteilt
$count = $count/$persite;
// FOR-Schleife ANFANG
for($z=0; $z<$count; $z++) {
$y = $z+1;
// IF-Abfrage ANFANG
if ($x != $z) {
echo "<a href=\"gaestebuch.php?show=guestbook&kat=site&x=$z\">$y</a> | ";
} else {
echo "[b]$y[/b] | ";
// IF-Abfrage ENDE
}
// FOR-Schleife ENDE
}
?>
</body>
</html>
Alles anzeigen