Gästebuch braucht SPAM-Schutz
Hallo,
ich habe ein eigenes kleines, recht einaches, Gästebuch erstellt.
Leider wird es seit ein paar Tagen fast schon im 15 Minuten Takt zugespamt.
Nun habe ich ein Feld eingefügt das leer bleiben muss, aber irgendwie schaffen es die Spammer, dieses zu umgehen, dass es auch leer bleibt.
Hier mal der Quellcode:
Code:
<?php
error_reporting(E_ALL);
ini_set("display_errors",1);
if ( !empty ($_POST['field'])) {
echo "Vielen Dank!<br><br><br>";
}
elseif ( !empty ($_POST['name']) and !empty ($_POST['eintrag']) and !empty ($_POST['email']) and !empty ($_POST['homepage']) and !empty ($_POST['ort']) and empty ($_POST['field'])) {
$daten = '
<fieldset>
<legend>
'.htmlspecialchars($_POST['name'], ENT_QUOTES).' aus '.htmlspecialchars($_POST['ort'], ENT_QUOTES).'
<i><a href="mailto:'.htmlspecialchars($_POST['email'], ENT_QUOTES).'"><img src="images/email.gif" alt="'.htmlspecialchars($_POST['email'], ENT_QUOTES).'"></a>
<a href="'.htmlspecialchars($_POST['homepage'], ENT_QUOTES).'" target=_blank"><img src="images/homepage.gif" alt="'.htmlspecialchars($_POST['homepage'], ENT_QUOTES).'"></a><br>
schrieb am '.date('d.m.Y \u\m H:i').' Uhr</i>
</legend>
'. nl2br(htmlspecialchars($_POST['eintrag'], ENT_QUOTES)) .'
</fieldset>
';
$name = $_POST['name'];
$datenbank = "gaestebuch.dat";
$target = fopen($datenbank,"r+");
if ( false===$target && !file_exists($datenbank)) {
$target = fopen($datenbank,"w+");
}
if ( false===$target ) {
die('Fehler beim Öffnen der Datei');
}
$tmp = tmpfile() or die('Fehler beim Erstellen der temporären Datei');
stream_copy_to_stream($target, $tmp);
fflush($tmp);
if ( 0!==fseek($target, 0, SEEK_SET) || 0!==fseek($tmp, 0, SEEK_SET)) {
die('Fehler beim Setzen des Dateizeigers');
}
fwrite($target, $daten);
stream_copy_to_stream($tmp, $target);
fclose($target);
fclose($tmp);
echo "Vielen Dank $name. Ihr Eintrag wurde erfolgreich ausgeführt!<br><br><br>";
}
elseif ( !empty ($_POST['name']) and !empty ($_POST['eintrag']) and !empty ($_POST['email']) and !empty ($_POST['homepage']) and empty ($_POST['ort']) and empty ($_POST['field'])) {
$daten = '
<fieldset>
<legend>
'.htmlspecialchars($_POST['name'], ENT_QUOTES).'
<i><a href="mailto:'.htmlspecialchars($_POST['email'], ENT_QUOTES).'"><img src="images/email.gif" alt="'.htmlspecialchars($_POST['email'], ENT_QUOTES).'"></a>
<a href="'.htmlspecialchars($_POST['homepage'], ENT_QUOTES).'" target=_blank"><img src="images/homepage.gif" alt="'.htmlspecialchars($_POST['homepage'], ENT_QUOTES).'"></a><br>
schrieb am '.date('d.m.Y \u\m H:i').' Uhr</i>
</legend>
'. nl2br(htmlspecialchars($_POST['eintrag'], ENT_QUOTES)) .'
</fieldset>
';
$name = $_POST['name'];
$datenbank = "gaestebuch.dat";
$target = fopen($datenbank,"r+");
if ( false===$target && !file_exists($datenbank)) {
$target = fopen($datenbank,"w+");
}
if ( false===$target ) {
die('Fehler beim Öffnen der Datei');
}
$tmp = tmpfile() or die('Fehler beim Erstellen der temporären Datei');
stream_copy_to_stream($target, $tmp);
fflush($tmp);
if ( 0!==fseek($target, 0, SEEK_SET) || 0!==fseek($tmp, 0, SEEK_SET)) {
die('Fehler beim Setzen des Dateizeigers');
}
fwrite($target, $daten);
stream_copy_to_stream($tmp, $target);
fclose($target);
fclose($tmp);
echo "Vielen Dank $name. Ihr Eintrag wurde erfolgreich ausgeführt!<br><br><br>";
}
elseif ( !empty ($_POST['name']) and !empty ($_POST['eintrag']) and !empty ($_POST['email']) and !empty ($_POST['ort']) and empty ($_POST['homepage']) and empty ($_POST['field'])) {
$daten = '
<fieldset>
<legend>
'.htmlspecialchars($_POST['name'], ENT_QUOTES).' aus '.htmlspecialchars($_POST['ort'], ENT_QUOTES).'
<i><a href="mailto:'.htmlspecialchars($_POST['email'], ENT_QUOTES).'"><img src="images/email.gif" alt="'.htmlspecialchars($_POST['email'], ENT_QUOTES).'"></a><br>
schrieb am '.date('d.m.Y \u\m H:i').' Uhr</i>
</legend>
'. nl2br(htmlspecialchars($_POST['eintrag'], ENT_QUOTES)) .'
</fieldset>
';
$name = $_POST['name'];
$datenbank = "gaestebuch.dat";
$target = fopen($datenbank,"r+");
if ( false===$target && !file_exists($datenbank)) {
$target = fopen($datenbank,"w+");
}
if ( false===$target ) {
die('Fehler beim Öffnen der Datei');
}
$tmp = tmpfile() or die('Fehler beim Erstellen der temporären Datei');
stream_copy_to_stream($target, $tmp);
fflush($tmp);
if ( 0!==fseek($target, 0, SEEK_SET) || 0!==fseek($tmp, 0, SEEK_SET)) {
die('Fehler beim Setzen des Dateizeigers');
}
fwrite($target, $daten);
stream_copy_to_stream($tmp, $target);
fclose($target);
fclose($tmp);
echo "Vielen Dank $name. Ihr Eintrag wurde erfolgreich ausgeführt!<br><br><br>";
}
elseif ( !empty ($_POST['name']) and !empty ($_POST['eintrag']) and !empty ($_POST['homepage']) and !empty ($_POST['ort']) and empty ($_POST['email']) and empty ($_POST['field'])) {
$daten = '
<fieldset>
<legend>
'.htmlspecialchars($_POST['name'], ENT_QUOTES).' aus '.htmlspecialchars($_POST['ort'], ENT_QUOTES).'
<i><a href="'.htmlspecialchars($_POST['homepage'], ENT_QUOTES).'" target=_blank"><img src="images/homepage.gif" alt="'.htmlspecialchars($_POST['homepage'], ENT_QUOTES).'"></a><br>
schrieb am '.date('d.m.Y \u\m H:i').' Uhr</i>
</legend>
'. nl2br(htmlspecialchars($_POST['eintrag'], ENT_QUOTES)) .'
</fieldset>
';
$name = $_POST['name'];
$datenbank = "gaestebuch.dat";
$target = fopen($datenbank,"r+");
if ( false===$target && !file_exists($datenbank)) {
$target = fopen($datenbank,"w+");
}
if ( false===$target ) {
die('Fehler beim Öffnen der Datei');
}
$tmp = tmpfile() or die('Fehler beim Erstellen der temporären Datei');
stream_copy_to_stream($target, $tmp);
fflush($tmp);
if ( 0!==fseek($target, 0, SEEK_SET) || 0!==fseek($tmp, 0, SEEK_SET)) {
die('Fehler beim Setzen des Dateizeigers');
}
fwrite($target, $daten);
stream_copy_to_stream($tmp, $target);
fclose($target);
fclose($tmp);
echo "Vielen Dank $name. Ihr Eintrag wurde erfolgreich ausgeführt!<br><br><br>";
}
elseif ( !empty ($_POST['name']) and !empty ($_POST['eintrag']) and !empty ($_POST['ort']) and empty ($_POST['email']) and empty ($_POST['homepage']) and empty ($_POST['field'])) {
$daten = '
<fieldset>
<legend>
'.htmlspecialchars($_POST['name'], ENT_QUOTES).' aus '.htmlspecialchars($_POST['ort'], ENT_QUOTES).'<br>
<i>schrieb am '.date('d.m.Y \u\m H:i').' Uhr</i>
</legend>
'. nl2br(htmlspecialchars($_POST['eintrag'], ENT_QUOTES)) .'
</fieldset>
';
$name = $_POST['name'];
$datenbank = "gaestebuch.dat";
$target = fopen($datenbank,"r+");
if ( false===$target && !file_exists($datenbank)) {
$target = fopen($datenbank,"w+");
}
if ( false===$target ) {
die('Fehler beim Öffnen der Datei');
}
$tmp = tmpfile() or die('Fehler beim Erstellen der temporären Datei');
stream_copy_to_stream($target, $tmp);
fflush($tmp);
if ( 0!==fseek($target, 0, SEEK_SET) || 0!==fseek($tmp, 0, SEEK_SET)) {
die('Fehler beim Setzen des Dateizeigers');
}
fwrite($target, $daten);
stream_copy_to_stream($tmp, $target);
fclose($target);
fclose($tmp);
echo "Vielen Dank $name. Ihr Eintrag wurde erfolgreich ausgeführt!<br><br><br>";
}
elseif ( !empty ($_POST['name']) and !empty ($_POST['eintrag']) and !empty ($_POST['email']) and empty ($_POST['ort']) and empty ($_POST['homepage']) and empty ($_POST['field'])) {
$daten = '
<fieldset>
<legend>
'.htmlspecialchars($_POST['name'], ENT_QUOTES).'
<i><a href="mailto:'.htmlspecialchars($_POST['email'], ENT_QUOTES).'"><img src="images/email.gif" alt="'.htmlspecialchars($_POST['email'], ENT_QUOTES).'"></a><br>
schrieb am '.date('d.m.Y \u\m H:i').' Uhr</i>
</legend>
'. nl2br(htmlspecialchars($_POST['eintrag'], ENT_QUOTES)) .'
</fieldset>
';
$name = $_POST['name'];
$datenbank = "gaestebuch.dat";
$target = fopen($datenbank,"r+");
if ( false===$target && !file_exists($datenbank)) {
$target = fopen($datenbank,"w+");
}
if ( false===$target ) {
die('Fehler beim Öffnen der Datei');
}
$tmp = tmpfile() or die('Fehler beim Erstellen der temporären Datei');
stream_copy_to_stream($target, $tmp);
fflush($tmp);
if ( 0!==fseek($target, 0, SEEK_SET) || 0!==fseek($tmp, 0, SEEK_SET)) {
die('Fehler beim Setzen des Dateizeigers');
}
fwrite($target, $daten);
stream_copy_to_stream($tmp, $target);
fclose($target);
fclose($tmp);
echo "Vielen Dank $name. Ihr Eintrag wurde erfolgreich ausgeführt!<br><br><br>";
}
elseif ( !empty ($_POST['name']) and !empty ($_POST['eintrag']) and !empty ($_POST['homepage']) and empty ($_POST['email']) and empty ($_POST['ort']) and empty ($_POST['field'])) {
$daten = '
<fieldset>
<legend>
'.htmlspecialchars($_POST['name'], ENT_QUOTES).'
<i><a href="'.htmlspecialchars($_POST['homepage'], ENT_QUOTES).'" target=_blank"><img src="images/homepage.gif" alt="'.htmlspecialchars($_POST['homepage'], ENT_QUOTES).'"></a><br>
schrieb am '.date('d.m.Y \u\m H:i').' Uhr</i>
</legend>
'. nl2br(htmlspecialchars($_POST['eintrag'], ENT_QUOTES)) .'
</fieldset>
';
$name = $_POST['name'];
$datenbank = "gaestebuch.dat";
$target = fopen($datenbank,"r+");
if ( false===$target && !file_exists($datenbank)) {
$target = fopen($datenbank,"w+");
}
if ( false===$target ) {
die('Fehler beim Öffnen der Datei');
}
$tmp = tmpfile() or die('Fehler beim Erstellen der temporären Datei');
stream_copy_to_stream($target, $tmp);
fflush($tmp);
if ( 0!==fseek($target, 0, SEEK_SET) || 0!==fseek($tmp, 0, SEEK_SET)) {
die('Fehler beim Setzen des Dateizeigers');
}
fwrite($target, $daten);
stream_copy_to_stream($tmp, $target);
fclose($target);
fclose($tmp);
echo "Vielen Dank $name. Ihr Eintrag wurde erfolgreich ausgeführt!<br><br><br>";
}
elseif ( !empty ($_POST['name']) and !empty ($_POST['eintrag']) and empty ($_POST['homepage']) and empty ($_POST['email']) and empty ($_POST['ort']) and empty ($_POST['field'])) {
$daten = '
<fieldset>
<legend>
'.htmlspecialchars($_POST['name'], ENT_QUOTES).' <i>schrieb am '.date('d.m.Y \u\m H:i').' Uhr</i>
</legend>
'. nl2br(htmlspecialchars($_POST['eintrag'], ENT_QUOTES)) .'
</fieldset>
';
$name = $_POST['name'];
$datenbank = "gaestebuch.dat";
$target = fopen($datenbank,"r+");
if ( false===$target && !file_exists($datenbank)) {
$target = fopen($datenbank,"w+");
}
if ( false===$target ) {
die('Fehler beim Öffnen der Datei');
}
$tmp = tmpfile() or die('Fehler beim Erstellen der temporären Datei');
stream_copy_to_stream($target, $tmp);
fflush($tmp);
if ( 0!==fseek($target, 0, SEEK_SET) || 0!==fseek($tmp, 0, SEEK_SET)) {
die('Fehler beim Setzen des Dateizeigers');
}
fwrite($target, $daten);
stream_copy_to_stream($tmp, $target);
fclose($target);
fclose($tmp);
echo "Vielen Dank $name. Ihr Eintrag wurde erfolgreich ausgeführt!<br><br><br>";
}
elseif ( empty ($_POST['name']) and empty ($_POST['eintrag']) and empty ($_POST['homepage']) and empty ($_POST['email']) and empty ($_POST['ort']) and empty ($_POST['field'])) {
}
?>
<p><a href="index.php?p=daten/gaestebuch-eintragen">Ins Gästebuch eintragen!</a></p>
<?php
$datenbank = "gaestebuch.dat";
readfile($datenbank);
?>
Code:
<form method="post" action="index.php?p=daten/gaestebuch">
<fieldset>
<legend>Ins Gästebuch eintragen:</legend>
<p class="small">Wird ein Pflichtfeld nicht ausgefüllt, findet keine Eintragung in das Gästebuch statt!</p>
<table>
<tr>
<td>Name : * </td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>Wohnort : </td>
<td><input type="text" name="ort" /></td>
</tr>
<tr>
<td>E-Mail : </td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td>Homepage <i>(mit http://)</i> : </td>
<td><input type="text" name="homepage" value="http://" /></td>
</tr>
<tr>
<td>Nicht ausfüllen : ** </td>
<td><input type="text" name="field" /></td>
</tr>
<tr>
<td>Kommentar : * </td>
<td><textarea name="eintrag"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="button" value="Eintragen" /></td>
</tr>
</table>
<p>* = Pflichtfeld<br />
** = Dieses Feld bitte nicht ausfüllen (Spamschutz)</p>
</fieldset>
</form>
Ich weiß, ist nicht gerade sehr einfallsreich die Lösung, aber kann mir jemand eine Lösung verraten die ggf. etwas besser ist?
|