Bei Gästebuch Sicherheitscode einbauen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von mars007s, 3. Juli 2006 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 3. Juli 2006
    Hallo

    ich verwalte ein Gästebuch und nun häuft sich die anzahl der Spameinträge jetzt wollte ich mal fragen ob mir jemand helfen kann einen sicherheits code einzubauen. ich versuchte es mal aber es funktionierte nicht wirklich (kamen immer Fehler)

    Hier die Datei als Code

    Code:
    <?php
    
    $aansicht = 20; // Anzahl Eintraege, die pro bildschirm gezeigt werden!
    
    if (!isset($add) and !isset($view)) {
    
     require ('header.html');
     echo "<font class=h1>G&auml;stebuch - Neuer Eintrag</font><br>";
     echo "<a href=gaestebuch.php?view=0>G&auml;stebuch</a>";
    
     if ($fehler != "") {
     echo "<hr>";
     echo "<font color=red>$fehler<br>";
     echo "<hr>";
     }
    
     echo ("
     <form>
     <table border=0>
     <tr>
     <td font class=text>
     Name
     </td>
     <td font class=text>
     <input type=text name=name value=$name>
     </td>
     </tr>
     <tr>
     <td font class=text>
     Mail
     </td>
     <td font class=text>
     <input type=text name=mail value=$mail>
     </td>
     </tr>
     <tr>
     <td font class=text>
     Ort
     </td>
     <td font class=text>
     <input type=text name=ort value=$ort>
     </td>
     </tr>
     <tr>
     <td font class=text>
     Eintrag
     </td>
     <td font class=text>
     <textarea name=text rows=7 cols=35>$text</textarea>
     </td>
     </tr>
     <tr>
     <td></td>
     <td font class=text>
     <table border=0>
     <tr>
     <td align=center><img src=lachend.gif></td>
     <td align=center><img src=cool.gif></td>
     <td align=center><img src=verwirrt.gif></td>
     <td align=center><img src=wuetend.gif></td>
     <td align=center><img src=verliebt.gif></td>
     <td align=center><img src=rainbow.gif></td>
     <td align=center><img src=fragend.gif></td>
     <td align=center><img src=hexe.gif></td>
     <td align=center><img src=devil.gif></td>
     <td align=center><img src=joker.gif></td>
     <td align=center><img src=alien.gif></td>
    
    
    
     </tr>
     <tr>
     <td><input type=radio name=smilies checked value=lachend></td>
     <td><input type=radio name=smilies value=cool></td>
     <td><input type=radio name=smilies value=verwirrt></td>
     <td><input type=radio name=smilies value=wuetend></td>
     <td><input type=radio name=smilies value=verliebt></td>
     <td><input type=radio name=smilies value=rainbow></td>
     <td><input type=radio name=smilies value=fragend></td>
     <td><input type=radio name=smilies value=hexe></td>
     <td><input type=radio name=smilies value=devil></td>
     <td><input type=radio name=smilies value=joker></td>
     <td><input type=radio name=smilies value=alien></td>
    
    
    
    
    
    
    
     </tr>
     </table>
     </td>
     </tr>
     <tr>
     <td></td>
     <td font class=text>
     <input type=submit name=add value=Hinzufügen>
     </td>
     </tr>
     </table>
     <br><br><font class=text>
     Wir bitten Sie keine unpassenden und pers&ouml;nlichkeitsverletzende Eintr&auml;ge zu machen. Der Administrator nimmt sich das Recht ihm unpassende Eintr&auml;ge zu l&ouml;schen - Besten Dank</font>
     </form>
    
     ");
     require('footer.html');
    
    } elseif (!isset($view)) {
     if ($name != "" and $text != "") {
     
     //Datum herausfinden
     $datum = getdate (time());
     $datumf = "$datum[mday].$datum[mon].$datum[year] $datum[hours]:$datum[minutes]";
     
    
    
     $eintragneu = "$datumf|$name|$ort|$mail|$text|$smilies";
    
    
    
     // Eintrag nach < > durchsuchen - duerfen nicht verwendet werden, da sonst html-tag benutzt werden koennten!
     if ((strpos($eintragneu, "<") != false) or (strpos($eintragneu, ">") != false)) {
     header ("Location: gaestebuch.php?name=$name&ort=$ort&mail=$mail&text=$text&fehler=Fehler - Die Zeichen < und > sind nicht erlaubt!"); 
     exit;
     }
    
     // alle Newline (\n) durch <br> ersetzten
     $eintragneu = str_replace("/\n","<br>",$eintragneu);
     
     // Störende Sonderzeichen (Eckiger Kasten) entfernen
     $eintragneu = str_replace('
    ', "", $eintragneu);
     // doch einen Newline an den Schluss setzen
     $eintragneu = $eintragneu . "\n";
     header ("Location: gaestebuch.php?view=0"); 
     $gaestebuch = fopen("gaestebuch.txt", "r+");
     fseek ($gaestebuch, 0,SEEK_END);
     fwrite ($gaestebuch, $eintragneu);
     fclose($gaestebuch);
     
     } else {
     header ("Location: gaestebuch.php?name=$name&ort=$ort&mail=$mail&text=$text&fehler=Fehler - Die Felder Name und Eintrag m&uuml;ssen ausgef&uuml;llt sein"); 
     }
    }
    
    if (isset($view)) {
     
     header ("Cache-Control: no-cache, must-revalidate"); // Caching verbieten mit HTTP/1.1
     require ('header.html');
     
     echo "<font class=h1>G&auml;stebuch</font><br>";
     echo "<font class=text>";
     echo '<a href="gaestebuch.php">Eintrag hinzuf&uuml;gen</a>';
    
     
     $inhaltverkehrt = file ('gaestebuch.txt'); // File in ein Array auslesen
     $anzahleintraege = count($inhaltverkehrt);
    
     $inhalt = array();
     for ($i = 0; $i < $anzahleintraege; $i++) {
     $element = array_pop($inhaltverkehrt);
     array_push($inhalt, $element);
     }
    
     $estart = $view * $aansicht; // Startzahl berechnen
     $eend = $estart + $aansicht; // Endzahl berechnen
    
     if ($eend > $anzahleintraege) {
     if (strpos(($anzahleintraege / $aansicht),".") === false) {
     $estart = $anzahleintraege - $aansicht;
     } else{
     $estart = substr(($anzahleintraege / $aansicht),0,strpos(($anzahleintraege / $aansicht),".")) * $aansicht;
     }
     $eend = $anzahleintraege;
     }
    
    
     $zurueck = $view - 1;
     $vor = $view + 1;
    
     // Navigationslinks erstellen
     if (!($zurueck < 0)) {
     $naviglink = "<a href=gaestebuch.php?view=$zurueck>< zur&uuml;ck</a>";
     if (!(($vor * $aansicht) > $anzahleintraege)) {
     $naviglink = $naviglink. " - <a href=gaestebuch.php?view=$vor>vor ></a>";
     }
     } elseif (!(($vor * $aansicht) > $anzahleintraege)) {
     $naviglink = " <a href=gaestebuch.php?view=$vor>vor ></a>";
     }
    
     echo "<br>$naviglink";
     echo "<hr>";
     for ($i = $estart; $i < $eend; $i++) {
     
     // Sonderzeichn umändern
     $inhalt[$i] = str_replace("ä",'&auml;', $inhalt[$i]);
     $inhalt[$i] = str_replace("ö",'&ouml;', $inhalt[$i]);
     $inhalt[$i] = str_replace("ü",'&uuml;', $inhalt[$i]);
     $inhalt[$i] = str_replace("Ä",'&Auml;', $inhalt[$i]);
     $inhalt[$i] = str_replace("Ö",'&Ouml;', $inhalt[$i]);
     $inhalt[$i] = str_replace("Ü",'&Uuml;', $inhalt[$i]);
     $inhalt[$i] = str_replace("\\","", $inhalt[$i]);
    
    
    
     $elemente = explode("|",$inhalt[$i]);
     if ($elemente[3] != "" ){
     $elemente[1] = "<a href=mailto:$elemente[3]>$elemente[1]</a>";
     }
     if ($elemente[2] != "" ) {
     $elemente[2] = "aus " . $elemente[2];
     }
    
     $elemente[5] = rtrim ($elemente[5]);
    
     echo "<table border=0>";
     echo "<tr><td valign=top><img src=$elemente[5].gif hight=15 width=15>&nbsp;</td>";
     echo "<td><b>$elemente[1]</b> $elemente[2]<br>";
     echo "<br>$elemente[4]<br><br>$elemente[0]</td></tr>";
     echo "</table><hr>";
     }
    
     echo "$naviglink<br>";
     echo '<a href="gaestebuch.php">Eintrag hinzuf&uuml;gen</a>';
     echo "</font>";
     require ('footer.html');
    
    }
    
    ?>
    
    danke im vorraus

    mfg

    mars007s
     
  2. 3. Juli 2006
    Du meinst als Sicherheitscodes Captchas?

    Für Captchas brauchst du die GD Lib für PHP oder vll auch imagemagick, damit dein PHP die Bilder "malen" kann. Ist eines von beiden bei dir aufm Server installiert? Wenn nicht, kein Wunder das Fehler kommen .

    Ansonsten einfach nach Captchas googlen und die Forensuche hier benutzen - gab in der kurzen Zeit die ich hier im Forum aktiv bin, schon mindestens drei Threads bzgl. Captchas. Kannst dir auch einfache Fragen ausdenken und sie per PHP oder so dann nachm Absenden stellen - "Was ist drei plus 0.5?" - Irgendwie sowas in der Art ..

    Hoffe ich konnte dir weiterhelfen!

    Post Scriptum: Lass dein HTML mal validieren - validator.w3.org
     
  3. 3. Juli 2006
    Vielleicht hilft dir die seite hier weiter: klick
    MfG Roadkiller
     
  4. 3. Juli 2006
    Machs doch anstatt mit Bildern einfach mit einem automatisch generirten Code.. z.B. eine Zahlenkombination asu 0-9 mit 4 Zeichen. Das wird dann in $var gespeichert und du machst ein Feld, welches die Eingabe von $var verlangt. $var wird natürlich darüber ausgegeben
    Dann wird nach dem Abschicken ersteinmal überprüft, ob die EIngabe im Formularfeld $var entspricht und mit einer if Abfrage eingestellt, dass bei falscher Eingabe eine Fehlermessage mit Zurückbutton kommt, bei richtiger der Eintrag eingetragen wird und eine Danksagungsmail versandt wird o.Ä.
    Einfach mal bisschen was selbst ausdenken, muss ja nicht immer wie bei anderen Sites sein
     
  5. 4. Juli 2006
    @playmate
    ich glaube nicht das das installiert ist

    @roadkiller, @Hennington und @funland
    ich werde eure tipps mal durchgehen

    danke nochmals an alle und ich versuchs mal
    10er bekommt ihr gleich

    mfg

    mars007s
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.