PHP/ MySQL Gästebuch Tutorial - Fehlerprüfung
Autor
Flitze
Klicks 134699
Keywords:
Gästebuch Tutorial, PHP Gästebuch erstellen, Guestbook, Gästebuch mit PHP und MySQL, Spamschutz für Gästebuch, Spam im Gästebuch, , Fehlerprüfung, Formular, fehlerhafte Eingaben
Klicks 134699
Rating für PHP/ MySQL Gästebuch Tutorial
4.1 von 10
Bewertungen133
Stand
05.07.2010
4.1 von 10
Bewertungen133
Keywords:
Gästebuch Tutorial, PHP Gästebuch erstellen, Guestbook, Gästebuch mit PHP und MySQL, Spamschutz für Gästebuch, Spam im Gästebuch, , Fehlerprüfung, Formular, fehlerhafte Eingaben
Breadcrumb:
Tutorials » PHP/ MySQL Gästebuch Tutorial » PHP/ MySQL Gästebuch Tutorial - Fehlerprüfung
4. Die Fehlerprüfung
[ADSENSE_LINE]Die abgeschickten Daten müssen natürlich vor dem Speichern in der Datenbank noch geprüft werden. In diesem Fall bedeutet das folgende Prüfungen:
- existieren alle Felder?
- sind Nachricht und Name nicht leer?
- ist das 'Antispam'-Feld leer?
- wurde vor weniger als einer Minute bereits ein Eintrag hinterlassen?
Diese lassen sich so realisieren:
PHP:
<?php
if(isset($_POST['submit']) AND $_POST['submit']=='Eintragen'){
$errors = array();
if(!isset($_POST['Name'], $_POST['Email']))
$errors[] = "Bitte benutzen sie unser Formular.";
else{
if(trim($_POST['Antispam']) != "")
$errors[] = "No Spam, dude!\n";
if(trim($_POST['Name'])=='')
$errors[] = "Bitte geben Sie ihren Namen ein.";
if(trim($_POST['Email'])=='')
$errors[] = "Bitte geben Sie ihre Email-Adresse ein.";
}
$sql = "SELECT
IP
FROM
Gaestebuch_IP
WHERE
IP = '".$_SERVER['REMOTE_ADDR']."'
LIMIT
1
";
$result = mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
if(mysql_num_rows($result))
$errors[] = "Sie haben gerade einen Eintrag hinterlassen. Bitte haben Sie eine Minute Geduld.\n";
if(count($errors)){
echo "Sorry, ihre Daten konnten nicht bearbeitet werden.<br>\n".
"<br>\n";
foreach($errors as $error)
echo $error."<br>\n";
}
else{
// Daten speichern
?>
Das Prinzip der Fehlerprüfung wird in dem o.g. Basics - Formulare - Tutorial erklärt. Sollte jemand mit dem Aufbau Probleme haben, sollte er sich dort nochmal belesen
PHP:
<?php
$sql = "SELECT
IP
FROM
Gaestebuch_IP
WHERE
IP = '".$_SERVER['REMOTE_ADDR']."'
LIMIT
1
";
$result = mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
?>
Dieser Query frag die Datenbank ab, ob die IP des Users gespeichert ist. Ist dies der Fall, wird der Eintrag nicht gespeichert. Damit die IP jedoch nicht dauerhaft gespeichert bleibt, muss an anderer Stellen geprüft werden, wie lange die IP bereits in der Datenbank gespeichert ist, bzw. wie lange der letzte Eintrag dieses Users her ist. Da wir als Zeitspanne eine Minute festgelegt haben, müssen also alle gespeicherten IPs die älter als eine Minute sind aus der Datenbank gelöscht werden. Dazu verwendet man folgenden Query
PHP:
<?php
$sql = "DELETE FROM
Gaestebuch_IP
WHERE
Datum < DATE_SUB(NOW(), INTERVAL 1 MINUTE)
";
mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
?>
Wo baut man das nun ein? Nun, dazu zeige ich nochmal die gaestebuch.php
PHP:
gaestebuch.php
--------------
<h1>.: Gästebuch :.</h1>
<?php
error_reporting(E_ALL);
// Wenn das Formular abgeschickt wurde
if(isset($_POST['submit']) AND $_POST['submit'] == 'Eintragen'){
if(fehler){
// Abbruch
}
else {
// Eintrag speichern
}
}
// Wenn die Seite 'per Link' aufgerufen wird
else {
$sql = "DELETE FROM
Gaestebuch_IP
WHERE
Datum < DATE_SUB(NOW(), INTERVAL 1 MINUTE)
";
mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
$sql = "SELECT
IP
FROM
Gaestebuch_IP
WHERE
IP = '".$_SERVER['REMOTE_ADDR']."'
LIMIT
1
";
$result = mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
if(mysql_num_rows($result)) {
echo "<p class=\"content\">\n".
"Sie haben gerade einen Eintrag hinterlassen. Bitte haben Sie eine Minute Geduld.\n".
"</p>\n";
}
else {
// Formular zum Eintragen zeigen
}
// bisherige Einträge anzeigen
}
?>
Allerdings ist euch mit Sicherheit aufgefallen, dass wir eigentlich noch überhaupt keinen MYSQL-Befehl zum Speichern der IP haben. Nun, dazu kommen wir jetzt beim Speichern in der Datenbank.
Zurück zur vorigen Seite:
PHP/ MySQL Gästebuch Tutorial - Das Formular Weiter zur nächsten Seite:
PHP/ MySQL Gästebuch Tutorial - Speichern in der Datenbank