Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 16.03.2009, 11:25
Benutzerbild von bodoalbstadt
bodoalbstadt bodoalbstadt ist offline
Rookie
neuer user
Thread-Ersteller
 
Registriert seit: 12.09.2008
Beiträge: 75
bodoalbstadt befindet sich auf einem aufstrebenden Ast
Standard 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&uuml;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&uuml;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&uuml;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&uuml;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&uuml;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&uuml;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&uuml;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&uuml;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&auml;stebuch eintragen!</a></p>

<?php
	$datenbank = "gaestebuch.dat";
	readfile($datenbank);
?>


Code:
    <form method="post" action="index.php?p=daten/gaestebuch">
      <fieldset>
		<legend>Ins G&auml;stebuch eintragen:</legend>
		<p class="small">Wird ein Pflichtfeld nicht ausgef&uuml;llt, findet keine Eintragung in das G&auml;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&uuml;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&uuml;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?
Mit Zitat antworten
Sponsored Links