• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

spamschutz

Maximillian

Mitglied
Hallo,

ich habe folgendes Problem:

Ich habe ein Formular, für ein Gästebuch. Beim Senden werde ich auf eine neue Seite geleitet. Dort dann die Abfrage, hat er alles ausgefüllt, wenn ja, wird die Textdatei beschrieben.
Jetzt würde ich folgendes machen wollen als Spamschutz. Unter dem ersten Formular soll ein Bild angezeigt werden welches dann bezeichnet werden muss. Stimmt das dann, kann in die Textdatei geschrieben werden.

Wie kann ich diese Zeile auslesen?

Vielen Dank für die Hilfe!!

Mein code für das Formular!
HTML:
 <h2 class="blauueberschrift">G&auml;stebuch</h2>
      <form name="eintrag" action="gb2.php" method="post">
<div align="left">
<table border="0" cellpadding="0" cellspacing="6" width="191">
<tr>
<td><font face="Arial" size="2">Name:</font></td>
<td><input type="text" name="name"size="15"></td>
</tr>
<tr>
<td><font face="Arial" size="2">Email:</font></td>
<td><input type="text" name="email"size="15"></td>
</tr>
<tr>
<td valign="top"><font face="Arial" size="2">Text:</font></td>
<td><textarea name="text"cols="35" rows="6"></textarea></td>
</tr>
<tr>
  <td>&nbsp;</td>
  <td>
<div align="right">
  <input name="reset" type="reset" value="Reset" />
  <input type="submit"name="submit"value="SENDEN"></div></td>
</tr>
</table>
</div>
</form>
gästebuchseite:

PHP:
<?php

if ($_SERVER['REQUEST_METHOD'] == "POST")
{
    $error = FALSE;
    
    $nowDay = date("d.m.Y");
$nowClock = date("H:i:s");
    $name = $_POST['name'];
    $email = $_POST['email'];
    $telefon = $_POST['telefon'];
    $nachricht = "
Empfangen am $nowDay um $nowClock
----------------------------------------------------------------------------

Name:    $_POST[name]
Tel:     $_POST[telefon]
Email:   $_POST[email]


Nachricht:
-----------------------------
$_POST[nachricht]


----------------------------------------------------------------------------
";    
    
    $regexp_email = "^[a-z0-9]+([-_\.]?[a-z0-9])*@[a-z0-9]+([-\.]?[a-z0-9])+\.([a-z]{2,4}|museum)$";
    
    if (empty($email)) {
        $status_text = "<span style=\"color:#FF0000; font-weight:bold\">Sie mssen Ihre Email-Adresse eingeben!</span>";
        $error = TRUE;    
    } else if (!eregi($regexp_email, $email)) {
        $status_text = "<span style=\"color:#FF0000; font-weight:bold\">Die angegebene Email-Adresse ist nicht korrekt!</span>";
        $error = TRUE;
    } 
    
    if (empty($nachricht)) {
        if($error == TRUE) { $status_text .= "<br />"; }        
        $status_text .= "<span style=\"color:#FF0000; font-weight:bold\">Sie müssen Ihre Nachricht eingeben!</span>";
        $error = TRUE;    
    } 
    
    if (!$error) {
        $header = 'From: ' . $email . "\r\n" .
                  'Reply-To: ' . $email . "\r\n"/* .
                   'X-Mailer: PHP/' . phpversion()*/;
        mail('[email protected]', 'test', $nachricht, $header);
        $status_text = "<div style=\"color:#009900; font-weight:bold; height:365px\">Ihre Nachricht wurde erfolgreich gesendet.</div>";
    } 
} 

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test</title>
<link href="style1.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 7]>
<link rel="Stylesheet" type="text/css" href="ie.css" />
<![endif]-->
<!--[if lte IE 6]>
<link rel="Stylesheet" type="text/css" href="ie6.css" />
<![endif]-->
</head>

<body>
<div id="contentright">
<h2 class="blauueberschrift">G&auml;stebuch</h2>
      <a href="eintrag.html" target="_self">Neuer Eintrag</a><br/>
<br/>
<?php


$name = $_POST['name'];
$email = $_POST['email'];
$text = $_POST['text'];


if($submit) {

     
     if(($email== "") || ($name == "") || ($text== ""))
          echo "<b>Fehlgeschlagen! Bitte alle Felder ausfüllen!</b>";


     else {     
          $x = 0;

          $dateiname = "gbook.txt";
         
          $datei = fopen($dateiname, "r");

        
          while (!feof($datei)) {
               $x++;
               $saved[$x] = fgets($datei, 1024);

          }
          $datum = date("d.m.Y");
          $zeit = date("H:i");

         
          $datei=fopen("gbook.txt", "w");

         
          $text=strip_tags($text);

         
          fwrite($datei,"<table width=420 bgcolor=#ffffff cellspacing=1 cellpadding=3><tr><td bgcolor=#ffffff>
         <a href=\"mailto:$email\"><b>$name</b></a> schrieb am $datum um $zeit Uhr</td></tr>
          <tr><td bgcolor=white>$text<br/><br/>       
          </td></tr></table><br/>\n");

         
          for ($i=1;$i <= $x; $i++) {
               fwrite($datei, "$saved[$i]");
          }
          
          fclose($datei);
     } 
}




$dateiname = "gbook.txt";
$datei = fopen($dateiname, "r");
fpassthru($datei);

?>
 
Werbung:
Captcha funktioniert bei mir nicht


Hallo,

ich hab mir mal das angeschaut und es so gemacht wie beschrieben. Nur wenn ich die Seite in der ich die Captcha eingebunden hab, passiert nix. Es bleibt alles leer. :-(

Was mach ich falsch?

Code Captcha.php:
PHP:
<?php 
   session_start(); 
   unset($_SESSION['captcha_spam']); 

   function randomString($len) { 
      function make_seed(){ 
         list($usec , $sec) = explode (' ', microtime()); 
         return (float) $sec + ((float) $usec * 100000); 
      } 
      srand(make_seed());  
      //Der String $possible enthält alle Zeichen, die verwendet werden sollen 
      $possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789"; 
      $str=""; 
      while(strlen($str)<$len) { 
        $str.=substr($possible,(rand()%(strlen($possible))),1); 
      } 
   return($str); 
   } 

   $text = randomString(5);  //Die Zahl bestimmt die Anzahl stellen 
   $_SESSION['captcha_spam'] = $text; 
          
   header('Content-type: image/png'); 
   $img = ImageCreateFromPNG('captcha.PNG'); //Backgroundimage 
   $color = ImageColorAllocate($img, 0, 0, 0); //Farbe 
   $ttf = $_SERVER['DOCUMENT_ROOT']."/captcha/XFILES.TTF"; //Schriftart 
   $ttfsize = 25; //Schriftgrösse 
   $angle = rand(0,5); 
   $t_x = rand(5,30); 
   $t_y = 35; 
   imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text); 
   imagepng($img); 
   imagedestroy($img); 
?>

Code Kontakt.php:
PHP:
<img src="captcha/captcha.php" border="0" title="Sicherheitscode">

Mehr steht zum testen in der Kontakt.php noch nicht drin.

vg
Markus

Nachtrag: Wenn ich die captcha.php direkt aufrufe erscheint folgende Meldung im Browser
Code:
Die Grafik "http://www.mdnetwork.de/markus-programmierer/inhalte/captcha/captcha.php" kann nicht angezeigt werden, weil sie Fehler enthält.
 
Zuletzt bearbeitet:
Werbung:
Versuchs mal so
PHP:
<?php
 function randomString($len) { 
      function make_seed(){ 
         list($usec , $sec) = explode (' ', microtime()); 
         return (float) $sec + ((float) $usec * 100000); 
      } 
      srand(make_seed());   
 
      //Der String $possible enthält alle Zeichen, die verwendet werden sollen 
      $possible="ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789"; 
      $str=""; 
      while(strlen($str)<$len) { 
        $str.=substr($possible,(rand()%(strlen($possible))),1); 
      } 
   return($str); 
   } 
   $text = randomString(5);  //Die Zahl bestimmt die Anzahl stellen 
   $_SESSION['captcha_spam'] = $text; 
 
   header('Content-type: image/png');
   $img = ImageCreateFromPNG('captcha.PNG'); //Backgroundimage
   $color = ImageColorAllocate($img, 160, 032, 240); //Farbe
   $ttf = $_SERVER['Document_Root']."XFILES.TTF"; //Schriftart <-- richtig
   $ttfsize = 25; //Schriftgrösse
   $angle = rand(0,5);
   $t_x = rand(5,30);
   $t_y = 35;
   imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text);
   imagepng($img);
   imagedestroy($img); 
?>
 
Zurück
Oben