Pascal: Captcha gästebuch

Sehr geehrte User

ich habe noch nie php geschrieben, bloss html, deshalb habe ich folgendes problem, und ich hoffe, dass ich in diesem forum etwas hilfe bekomme.

ich habe ei gästebuchscript und ein captcha script vom internet heruntergelaten.. beides funktionniert einwandfrei, solange es einzeln auf dem server getestet wird. Nun wollte ich die eiden skripte vereinigen ( gästebuch mit captcha) doch leider leuft dann gar nichts mehr seht mal bei http://pascalenderli.pa.funpic.de//guestbook/schutz/guestbook.php  (testseite von mir)

wie muss ich das skript vereinigen?

einzel funktionniert es:
captcha:
http://pascalenderli.pa.funpic.de//spam/spam-schutz.php

gästebuch:
http://pascalenderli.pa.funpic.de//gaestebuch/guestbook.php

danke für die hilfe

gruss pascal

hier der code zu meinem halb funktionnierendem gästebuch (nur der eine teil, indem ein neier eintrag gemacht wird (alles weitere im seitenquelltext meiner angegebenen seiten.)

// ******************************  
// *** Neuer Gästebucheintrag ***  
// ******************************  
if ( ($action=="new") or trim($err_text != "") ) {  
  
echo '<h1>'.$GuestbookTitle.'</h1>'."\n";  
echo '<h2>'.GetLngStr("PostAddNewTitle").'</h2>'."\n";  
  
if(($send=="1") && trim($err_text!="")) {  
  echo '<div class="errorbox"><b class="red">'.GetLngStr("PostError").'</b><br>';  
  echo "$err_text</div>\n";  
}  
if(trim($gb_home=="") && (!$gb_home)) $gb_home="http://";  
?>  
  
<div class="formbox">  
<form action="<?php echo GetParam("PHP_SELF", "S"); ?>?g_action=post" method="post" name="guestbook">  
  
<?php  
  $gb_name = str_replace("<", "&lt;", $gb_name);  
  $gb_name = str_replace(">", "&gt;", $gb_name);  
  $gb_name = str_replace("\"", "&quot;", $gb_name);  
  
  $gb_home = ereg_replace("(<|>| |\(|\)|\||\"|\')", "", $gb_home);  
  
  $gb_text = str_replace("<", "&lt;", $gb_text);  
  $gb_text = str_replace(">", "&gt;", $gb_text);  
  $gb_text = str_replace("\"", "&quot;", $gb_text);  
?>  
  
<table width="100%" height="508" border=0 cellpadding=0 cellspacing=2>  
  <tr>  
<td width="34%" height="337" valign="top">  
  
<table width="100%" height="481" border=0 cellpadding=0 cellspacing=3>  
<tr><td nowrap align="right" class="formtext"><?=GetLngStr("PostFormName")?></td><td nowrap align=right>&nbsp;</td>  
<td width="100%"><input type="text" name="p_gb_name" size=50 maxlength=25 value="<?=$gb_name?>"></td></tr>  
<tr><td nowrap align="right" class="formtext" style="vertical-align:top;"><?=GetLngStr("PostFormText")?><br><i><?=GetLngStr("PostFormTextMax")?></i></td><td></td>  
  <td width="100%"><textarea cols="50" rows="8" name="p_gb_text"><?=$gb_text?>  
  </textarea></td></tr>  
  
<tr><td height="311" nowrap class="formtext">&nbsp;</td><td></td><td>  
  
  
<?php  
// Spam-Schutz  
$eingabe = @$_POST["eingabe"];  
$eingabe = strtolower($eingabe);  
$code = @$_POST["code"];  
  
if(@$_POST["eingabe"] !=""){  
  
 $chluessel[1] = "dsnxn";  
 $chluessel[2] = "tepsh";  
 $chluessel[3] = "5fwnb";  
 $chluessel[4] = "fs7ha";  
 $chluessel[5] = "5ress";  
 $chluessel[6] = "ywyyw";  
 $chluessel[7] = "lcvr7";  
 $chluessel[8] = "gskaw";  
 $chluessel[9] = "u7twn";  
 $chluessel[10] = "4x8uw";  
 $chluessel[11] = "wtwem";  
 $chluessel[12] = "ehewh";  
// Weitere Schlüssel ab hier eingeben!  
  
// Überprüfung  
 if ($chluessel[$code] == $eingabe) {  
  echo "<font color=blue>Die Eingabe war richtig.</font>";  
  ?><input type="hidden" value="1" name="p_send">  
  <input type="submit" value="<?=GetLngStr("PostFormSubmit")?>" name="submit"><?php  
 }  
 else {  
  echo "<font color=red>Die Eingabe war falsch!</font>";  
 }  
}  
?>  
  
<form name="Form" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" onSubmit="return eingaben_ueberpruefen(this.form)">  
<table>  
 <tr>  
  <td>Wiederholen Sie<br>folgenden Code<br><small>(Dies verhindert SPAM)</small></td>  
  <td>  
   <input type=hidden name="code">  
   <script type="text/javascript">document.write('<img src="'+RND()+'A.gif" width=210 height=50>');</script>  
  </td>  
 </tr>  
 <tr>  
  <td></td>  
  <td><input type=text name="eingabe" style="text-transform: uppercase;"></td>  
 <tr>  
  <th colspan=2>  
    <br>  
   <input type=submit> &nbsp; <input type=reset>  
  </th>  
 </tr>  
</table>  
</form>  
  
  
  
  
  
  
  
  
  
  
</td></tr>  
</table>  
  
</td><td width="1%">&nbsp;&nbsp;</td><td width="65%" valign=top>
  1. Zwei Hinweise.

    Dein Gästebuch ist offenbar nicht nach modernen Richtlinien geschrieben
    Zum Beispiel verwendest du globale Variabeln.
    Dazu werden dir PHP bewanderte mehr verraten.

    Zum Captcha: Es ist ein Bildcaptcha.
    Nichts gegen Bildcaptchas, aber alles gegen fehlende Alternativen.
    Ich habe mir überlegt, dass pure Text Rätselcaptche zugänglicher sind
    und für private HPs eher den Zweck erfüllen, als Captchas in Bild UND Ton.

    Ansonsten würde ich für eine private Homepage zuerst eine Baterie von anderen Tests durchführen, um das Captcha zu vermeiden.

    • Das Gästebuch Formular darf nur verlangt werden, wenn gleichzeitig eine gültige Session-ID gesendet wird.
    • Den Request kann man validieren (existiert ein Accept header?)
    • eine kleine Zahl von UAs kann man ohne viel Aufwand und Nebenwirkungen ausschliessen ( "", "libwww", "java", etc...)
    • man testet, ob ein Feld, das NICHT ausgefüllt wurde, vom Bot ausgefüllt wird.
    • man anonymisiert die Feldnamen.

    Ansonsten sage ich Hep hep Hurray, dem, der noch nicht vor den Bots resigniert hat, und Formularzugang von einer Registration abhängig gemacht hat.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  2. mir wird nicht ganz klar, mit welchen inhalt die über das formular gesendete variablen gefüllt werden.

    • wo befindet sich die post-action, zum speichern neuer einträge?

    sorry, aber wenn du nur einzelne fremde teil-skripte zusammenführen willst: wieso nimmst du dann nicht ein skript, was bereits beide eigenschaften verbindet?

    ch