# Gästebuch besser schützen vor Fremdeintrag



## Frigg (22. Januar 2008)

Hallo Leute.
Wer kennt das problem. Es kommen immer wieder welche leute auf die Page und machen einen Eintrag ins Gästebuch was gerade nicht passend ist. So wie Porno URLs und so sachen. Die sind natürlich dann mit einer asd@asdsa.com Mail adresse eingetragen. Wie kann man so ein Gästebuch schützen.


```
<p align="center"><font face="Arial, Helvetica, sans-serif" size="12" color="#0D4686">G&auml;stebuch</font></p>
<p><br>
</p>
<table width="100%" border="0" cellpadding="1" cellspacing="0">
  <tr>
    <td>
      <table width="100%" border="0" cellpadding="2" cellspacing="0" class="small" OnLoad="setupDescriptions()">
        <tr class="mainoben"> 
          <td class="small">Eintragen</td>
        </tr>
        <tr class="mainunten"> 
          <td><FORM NAME="Eintrag" METHOD="post" ACTION="php/gbook/post.php">
              <TABLE WIDTH="0" BORDER="0" CELLSPACING="1" CELLPADDING="1" ALIGN="CENTER">
                <TR> 
                  <TD WIDTH="115"><LABEL FOR="name">Name:</LABEL></TD>
                  <TD> <INPUT TYPE="text" ID="name" NAME="name" <? echo"VALUE=$res1a[nick]"; ?>> 
                  </TD>
                </TR>
                <TR> 
                  <TD><LABEL FOR="email">E-Mail:</LABEL></TD>
                  <TD> <INPUT TYPE="text" ID="email" NAME="email" <? echo"VALUE=$res1a[email]"; ?>> 
                  </TD>
                </TR>
                <TR> 
                  <TD><LABEL FOR="hp">Homepage:<BR>
                    (optional)</LABEL></TD>
                  <TD> <INPUT TYPE="text" ID="hp" NAME="hp" <? if($res1a[hp] == "") echo"Value=\"http://\""; else echo"VALUE=\"$res1a[hp]\""; ?>> 
                  </TD>
                </TR>
                <TR> 
                  <TD valign="top"><P> 
                      <LABEL FOR="nachricht">Nachricht:</LABEL>
                      <LABEL FOR="nachricht"></LABEL>
                    </P></TD>
                  <TD><TEXTAREA NAME="nachricht" ID="nachricht" ROWS="10" COLS="40" WRAP="VIRTUAL"></TEXTAREA> 
                  </TD>
                </TR>
              </TABLE>
              <DIV ALIGN="CENTER"> 
                <INPUT TYPE="submit" NAME="eintragen2" VALUE="Send/Senden">
              </DIV>
            </FORM></td>
        </tr>
      </table></td>
  </tr>
</table>
<br> 
<table width="100%" border="0" cellpadding="1" cellspacing="0">
  <tr> 
        <td>
      <table class="small" width="100%" border="0" cellpadding="2" cellspacing="0" OnLoad="setupDescriptions()">
        <tr class="mainunten"> 
              
          <td class="small" height="202"> 
            <center>
                  <?
$schritt = 20;

$max = mysql_query( "select count(*) from gbook");
$max = mysql_fetch_row($max);
$max = $max[0];
$k=$max/$schritt;
echo $max;
?>
                  Beiträge auf Seiten: 
                  <?
for($i=0; $i<=$k; $i++){
    $j = $i + 1;
?>
                  <a href=index.php?mode=gbook&m=<? echo $i; ?>><? echo $j; ?></a> 
                  <?
}
?>
                </center>
                <br> 
                <?
if(isset($m)) {
    $start  = $schritt*$m;
} else {
    $start = 0;
}
$ende = $schritt - 1;

$st = "LIMIT $start, $ende";
$res= mysql_query("select * from gbook order by zeit DESC $st");

while($resa = mysql_fetch_array($res)) {
    $datum = date("j.n.Y - H:i", $resa[zeit]);

    $text = str_replace("<img src=../bilder/smilies/biggrin.gif>",  ":D", $resa[text]);
    $text = str_replace("<img src=../bilder/smilies/biggrin.gif>", ":-D", $text);
    $text = str_replace("<img src=../bilder/smilies/biggrin.gif>",  ":d", $text);
    $text = str_replace("<img src=../bilder/smilies/confused.gif>",  ":confused:", $text);
    $text = str_replace("<img src=../bilder/smilies/mad.gif>",  ":(", $text);
    $text = str_replace("<img src=../bilder/smilies/mad.gif>", ":-(", $text);
    $text = str_replace("<img src=../bilder/smilies/sad.gif>",  ":[", $text);
    $text = str_replace("<img src=../bilder/smilies/sad.gif>", ":-[", $text);
    $text = str_replace("<img src=../bilder/smilies/smile.gif>",  ":)", $text);
    $text = str_replace("<img src=../bilder/smilies/smile.gif>", ":-)", $text);
    $text = str_replace("<img src=../bilder/smilies/tounge.gif>",  ":p", $text);
    $text = str_replace("<img src=../bilder/smilies/tounge.gif>",  ":P", $text);
    $text = str_replace("<img src=../bilder/smilies/wink.gif>",  ";)", $text);
    $text = str_replace("<img src=../bilder/smilies/wink.gif>", ";-)", $text);
    $text = str_replace("<img src=../bilder/smilies/wow.gif>",  ":o", $text);
    $text = str_replace("<img src=../bilder/smilies/wow.gif>", ":-o", $text);
    $text = str_replace("<", "&lt;", $text);
    $text = str_replace(">", "&gt;", $text);
    $text = str_replace("\n", "<br>", $text);
    $text = str_replace(":D",  "<img src=../images/system/smilies/biggrin.gif>", $text);
    $text = str_replace(":-D", "<img src=../images/system/smilies/biggrin.gif>", $text);
    $text = str_replace(":d",  "<img src=../images/system/smilies/biggrin.gif>", $text);
    $text = str_replace(":confused:",  "<img src=../images/system/smilies/confused.gif>", $text);
    $text = str_replace(":(",  "<img src=../images/system/smilies/mad.gif>", $text);
    $text = str_replace(":-(", "<img src=../images/system/smilies/mad.gif>", $text);
    $text = str_replace(":[",  "<img src=../images/system/smilies/sad.gif>", $text);
    $text = str_replace(":-[", "<img src=../images/system/smilies/sad.gif>", $text);
    $text = str_replace(":)",  "<img src=../images/system/smilies/smile.gif>", $text);
    $text = str_replace(":-)", "<img src=../images/system/smilies/smile.gif>", $text);
    $text = str_replace(":p",  "<img src=../images/system/smilies/tounge.gif>", $text);
    $text = str_replace(":P",  "<img src=../images/system/smilies/tounge.gif>", $text);
    $text = str_replace(";)",  "<img src=../images/system/smilies/wink.gif>", $text);
    $text = str_replace(";-)", "<img src=../images/system/smilies/wink.gif>", $text);
    $text = str_replace(":o",  "<img src=../images/system/smilies/wow.gif>", $text);
    $resa[text] = str_replace(":-o", "<img src=../images/system/smilies/wow.gif>", $text);
?>
                <BR> <TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="2">
                  <TR> 
                    <TD WIDTH="70%"> <FONT SIZE="2"><A HREF="<? if($resa[email] <> "") echo"mailto:$resa[email]"; else echo"#";?>"><? echo $resa[author]; ?></A></FONT></TD>
                    <TD ALIGN="right" WIDTH="30%"> <FONT SIZE="1"><? echo $datum; ?></FONT></TD>
                  </TR>
                  <TR> 
                    <TD HEIGHT="55" COLSPAN="2"><? echo $resa[text]; ?></TD>
                  </TR>
                  <TR> 
                    <TD COLSPAN="2"> 
                      <?
if($resa[email]=="" && $resa[url]=="") {
    echo"&nbsp;";
} else {
    if($resa[email] <> "") {
    ?>
                      <A HREF="mailto:<? echo $resa[email]; ?>">Send Email</A> 
                      <?
        if($resa[url] <> "") {
        ?>
                      - 
                      <?
        }
    }
    if($resa[url] <> "") {
    ?>
                      <A HREF="<? echo $resa[url]; ?>">Homepage</A> 
                      <?
    }
}
if($admin == 1) {
?>
                      - <a href="php/gbook/delete.php?gbid=<? echo $resa[id]; ?>">Löschen</a> 
                      <?
}
?>
                    </TD>
                  </TR>
                </TABLE>
                <HR width="50" noshade> 
                <?
}
?>
              </td>
            </tr>
          </table></td>
      </tr>
    </table>
    <p>&nbsp;</p>
```

Bitte Helft mir, weill ich will nicht immer wieder ins MySQL Datenbank zugreifen und die Manuel löschen. Hat jemand eine idee

Danke fürs Helfen


----------



## Acriss (22. Januar 2008)

Wovor willst du das Gästebuch schützen?
Vor pornographischen Links etc?
Du könntest es entweder nur eingeloggten Usern gestatten eine nacricht zu hinterlassen,
oder der User muss sich eine Mail schicken lassen, um den eintrag zu bestätigen
Da beides viel aufwand für den userbedeutet, könntest du  eventuell einfach bestimmte wörter filtern, also eine "BadWordList" anlegen.


----------



## Wipeout (22. Januar 2008)

Oder du benutzt einfach Captchas habe ich bei mir auch gemacht


----------



## Frigg (24. Januar 2008)

Was sind den Captchas Ist das wirksam 

Das ist mal wieder sollch ein eintrag, von dem ich erzähle. Was haltet ihr davon?

Hello, nice site look this:
_Aufzählung von Links und pornographischen Wörtern, die hier nicht wiedergegeben werden müssen_
End ^) See you


Danke fürs Helfen.


----------



## kuddeldaddeldu (25. Januar 2008)

Hi,

wenn, dann solltest Du schon das Script posten, das das Formular verarbeitet, nicht das Ausgabescript. 
Wo ist das Gästebuch denn her, selbst geschrieben oder runtergeladen?

LG

PS.: Und noch zwei Beiträge aus dem Selfhtml-Forum zu dem Thema


----------



## Wipeout (25. Januar 2008)

Captchas 

Captchas Tutorial


----------



## Frigg (25. Januar 2008)

Nun ich habe die Page übernommen. Ich habe mich zwar mit der einter person in kontakt getreten, aber der zeigt keinerlei Hilfsbereitschaft. Ich müsse daher das Script ändern. Meine kenntnise mit PHP sind dermassen schlecht, dass es einfach nicht funktioniert. Man sollte es einfach einbinden können. Siet aber schwerer aus als es geschrieben ist.

Kann mir einer da helfen das script in mein qbook ein zu binden?

Währe echt net wenn einer mir da helfen würde.

post.php:


```
<?
session_start();
$ip = getenv("REMOTE_ADDR");
include("../system/mysqlstart.php");

$spammzeit = 10;
$zeit = time();

//Spammschutz
$sql1="select * from gbook where ip='$ip' order by 'zeit' DESC";
$resa = mysql_fetch_array(mysql_query($sql1));

$endspamm=$zeit - $spammzeit;
if($resa[zeit] > $endspamm) {
    Header("Location: "."../../index.php?mode=gbook");
    exit();
}

if($hp=="http://") {
    $hp="";
}

$sql="INSERT INTO gbook (id, text, author, email, url, zeit, ip) VALUES ('', '$nachricht', '$name', '$email', '$hp', '$zeit', '$ip')";
mysql_query($sql);

Header("Location: "."../../index.php?mode=gbook");
?>
```

gbook.php:

```
<?php 
session_start(); 
function encrypt($string, $key) { 
$result = ''; 
for($i=0; $i<strlen($string); $i++) { 
   $char = substr($string, $i, 1); 
   $keychar = substr($key, ($i % strlen($key))-1, 1); 
   $char = chr(ord($char)+ord($keychar)); 
   $result.=$char; 
} 
return base64_encode($result); 
} 
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921"); 
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe); 
if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){ 
unset($_SESSION['rechen_captcha_spam']); 
} 
?>
<p align="center"><font face="Arial, Helvetica, sans-serif" size="12" color="#0D4686">G&auml;stebuch</font></p>
<p><br>
<table width="100%" border="0" cellpadding="1" cellspacing="0">
  <tr>
    <td>
      <table width="100%" border="0" cellpadding="2" cellspacing="0" class="small" OnLoad="setupDescriptions()">
        <tr class="mainoben"> 
          <td class="small">Eintragen</td>
        </tr>
        <tr class="mainunten"> 
          <td>
            <div align="center"> </div>
            <FORM NAME="Eintrag" METHOD="post" ACTION="php/gbook/post.php">
              <div align="center"><br>
                
                <br>
              </div>
              <TABLE WIDTH="0" BORDER="0" CELLSPACING="1" CELLPADDING="1" ALIGN="CENTER">
                <TR> 
                  <TD WIDTH="115"><LABEL FOR="name"><img src="rechen-captcha.php"></LABEL></TD>
                  <TD>
                    <input type="text" name="sicherheitscode">
                  </TD>
                </TR>
                <TR> 
                  <TD WIDTH="115">Name:</TD>
                  <TD>
                    <input type="text" id="name" name="name" <? echo"VALUE=$res1a[nick]"; ?>>
                  </TD>
                </TR>
                <TR> 
                  <TD><LABEL FOR="email">E-Mail:</LABEL></TD>
                  <TD> 
                    <input type="text" id="email" name="email" <? echo"VALUE=$res1a[email]"; ?>>
                  </TD>
                </TR>
                <TR> 
                  <TD><LABEL FOR="hp">Homepage:<BR>
                    (optional)</LABEL></TD>
                  <TD> 
                    <INPUT TYPE="text" ID="hp" NAME="hp" <? if($res1a[hp] == "") echo"Value=\"http://\""; else echo"VALUE=\"$res1a[hp]\""; ?>>
                  </TD>
                </TR>
                <TR> 
                  <TD valign="top"> 
                    <P> <LABEL FOR="nachricht">Nachricht:</LABEL> <LABEL FOR="nachricht"></LABEL> 
                    </P>
                  </TD>
                  <TD> 
                    <TEXTAREA NAME="nachricht" ID="nachricht" ROWS="10" COLS="40" WRAP="VIRTUAL"></TEXTAREA>
                  </TD>
                </TR>
              </TABLE>
              <div align="center"> <br>
                <br>
              </div>
              <DIV ALIGN="CENTER">
                <INPUT TYPE="submit" NAME="eintragen2" VALUE="Send/Senden">
              </DIV>
            </FORM></td>
        </tr>
      </table></td>
  </tr>
</table>
<br> 
<table width="100%" border="0" cellpadding="1" cellspacing="0">
  <tr> 
        <td>
      <table class="small" width="100%" border="0" cellpadding="2" cellspacing="0" OnLoad="setupDescriptions()">
        <tr class="mainunten"> 
              
          <td class="small" height="202"> 
            <center>
                  <?
$schritt = 20;

$max = mysql_query( "select count(*) from gbook");
$max = mysql_fetch_row($max);
$max = $max[0];
$k=$max/$schritt;
echo $max;
?>
                  Beiträge auf Seiten: 
                  <?
for($i=0; $i<=$k; $i++){
    $j = $i + 1;
?>
                  <a href=index.php?mode=gbook&m=<? echo $i; ?>><? echo $j; ?></a> 
                  <?
}
?>
                </center>
                <br> 
                <?
if(isset($m)) {
    $start  = $schritt*$m;
} else {
    $start = 0;
}
$ende = $schritt - 1;

$st = "LIMIT $start, $ende";
$res= mysql_query("select * from gbook order by zeit DESC $st");

while($resa = mysql_fetch_array($res)) {
    $datum = date("j.n.Y - H:i", $resa[zeit]);

    $text = str_replace("<img src=../bilder/smilies/biggrin.gif>",  ":D", $resa[text]);
    $text = str_replace("<img src=../bilder/smilies/biggrin.gif>", ":-D", $text);
    $text = str_replace("<img src=../bilder/smilies/biggrin.gif>",  ":d", $text);
    $text = str_replace("<img src=../bilder/smilies/confused.gif>",  ":confused:", $text);
    $text = str_replace("<img src=../bilder/smilies/mad.gif>",  ":(", $text);
    $text = str_replace("<img src=../bilder/smilies/mad.gif>", ":-(", $text);
    $text = str_replace("<img src=../bilder/smilies/sad.gif>",  ":[", $text);
    $text = str_replace("<img src=../bilder/smilies/sad.gif>", ":-[", $text);
    $text = str_replace("<img src=../bilder/smilies/smile.gif>",  ":)", $text);
    $text = str_replace("<img src=../bilder/smilies/smile.gif>", ":-)", $text);
    $text = str_replace("<img src=../bilder/smilies/tounge.gif>",  ":p", $text);
    $text = str_replace("<img src=../bilder/smilies/tounge.gif>",  ":P", $text);
    $text = str_replace("<img src=../bilder/smilies/wink.gif>",  ";)", $text);
    $text = str_replace("<img src=../bilder/smilies/wink.gif>", ";-)", $text);
    $text = str_replace("<img src=../bilder/smilies/wow.gif>",  ":o", $text);
    $text = str_replace("<img src=../bilder/smilies/wow.gif>", ":-o", $text);
    $text = str_replace("<", "&lt;", $text);
    $text = str_replace(">", "&gt;", $text);
    $text = str_replace("\n", "<br>", $text);
    $text = str_replace(":D",  "<img src=../images/system/smilies/biggrin.gif>", $text);
    $text = str_replace(":-D", "<img src=../images/system/smilies/biggrin.gif>", $text);
    $text = str_replace(":d",  "<img src=../images/system/smilies/biggrin.gif>", $text);
    $text = str_replace(":confused:",  "<img src=../images/system/smilies/confused.gif>", $text);
    $text = str_replace(":(",  "<img src=../images/system/smilies/mad.gif>", $text);
    $text = str_replace(":-(", "<img src=../images/system/smilies/mad.gif>", $text);
    $text = str_replace(":[",  "<img src=../images/system/smilies/sad.gif>", $text);
    $text = str_replace(":-[", "<img src=../images/system/smilies/sad.gif>", $text);
    $text = str_replace(":)",  "<img src=../images/system/smilies/smile.gif>", $text);
    $text = str_replace(":-)", "<img src=../images/system/smilies/smile.gif>", $text);
    $text = str_replace(":p",  "<img src=../images/system/smilies/tounge.gif>", $text);
    $text = str_replace(":P",  "<img src=../images/system/smilies/tounge.gif>", $text);
    $text = str_replace(";)",  "<img src=../images/system/smilies/wink.gif>", $text);
    $text = str_replace(";-)", "<img src=../images/system/smilies/wink.gif>", $text);
    $text = str_replace(":o",  "<img src=../images/system/smilies/wow.gif>", $text);
    $resa[text] = str_replace(":-o", "<img src=../images/system/smilies/wow.gif>", $text);
?>
                <BR> <TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="2">
                  <TR> 
                    <TD WIDTH="70%"> <FONT SIZE="2"><A HREF="<? if($resa[email] <> "") echo"mailto:$resa[email]"; else echo"#";?>"><? echo $resa[author]; ?></A></FONT></TD>
                    <TD ALIGN="right" WIDTH="30%"> <FONT SIZE="1"><? echo $datum; ?></FONT></TD>
                  </TR>
                  <TR> 
                    <TD HEIGHT="55" COLSPAN="2"><? echo $resa[text]; ?></TD>
                  </TR>
                  <TR> 
                    <TD COLSPAN="2"> 
                      <?
if($resa[email]=="" && $resa[url]=="") {
    echo"&nbsp;";
} else {
    if($resa[email] <> "") {
    ?>
                      <A HREF="mailto:<? echo $resa[email]; ?>">Send Email</A> 
                      <?
        if($resa[url] <> "") {
        ?>
                      - 
                      <?
        }
    }
    if($resa[url] <> "") {
    ?>
                      <A HREF="<? echo $resa[url]; ?>">Homepage</A> 
                      <?
    }
}
if($admin == 1) {
?>
                      - <a href="php/gbook/delete.php?gbid=<? echo $resa[id]; ?>">Löschen</a> 
                      <?
}
?>
                    </TD>
                  </TR>
                </TABLE>
                <HR width="50" noshade> 
                <?
}
?>
              </td>
            </tr>
          </table></td>
      </tr>
    </table>
    <p>&nbsp;</p>
```

Danke für eure mühe. Mir ist es soo leid, dass ich immer wieder die Gbook eintrag löschen muss. Das nevt mich total.
THX im voraus.


----------



## TheBodo (25. Januar 2008)

Moinsen!

Das einfachste meiner Meinung nach wäre wenn du beim Eintrag ein Bild anzeigen lassen würdest, auf dem Zeichen stehen, die mit andere strichen durchgestrichen sind, so dass sie aber von users erkannt werden können.

Ich hab leider mom nich die Zeit dir was zu bauen, aber schau dir das mal an:

http://www.php.net/manual/de/ref.image.php
http://www.php.net/manual/de/

MfG Bodo


----------



## kuddeldaddeldu (25. Januar 2008)

Hi,

kannst Du Dir nicht einfach ein anderes (vernünftiges) Gästebuch besorgen. Wenn ich mir die post.php anschaue, sträuben sich mir die Haare...
Die beiden Threadstarter aus dem Selfhtml-Forum bieten z.B. welche an.

LG


----------

