Hallo zusammen,
seit einer Woche versuchen ich ein CAPTCHA in ein Formular einzubauen, mit dem Kommentare zu einem Blog in eine SQL-Datenbank eingetragen werden. Ich habe schon in verschiedenen Communities versucht Hilfe hierbei zu bekommen, da meine php-Kenntnisse eher rudimentär ausgeprägt sind. Grundsätzlich ist mein Problem, dass ich nicht weiss an welcer Stelle ich die if/else-Abfrage einsetzen soll. Nach dem Prinzip "ich versuche es mal an jeder Stelle" war ich leider nicht besonders erfolgreich, weshalb ich schon überlegt habe , ob eventuell doch noch irgendetwas mit der Funktion selbst nicht i.O. ist. Das Ganze Ding ist eine Abwandlung der auf stoppt-den-spam vorgestellten Funktion. Das Problem dort ist nur, dass sich dort im Forum niemand mit SQL auskennt. Jetzt aber zum Problem: wohin mit:
PHP-Code:
if(isset($_SESSION['captcha_spam']) && $sicherheits_eingabe == $_SESSION['captcha_spam'])
{
unset(
$_SESSION['captcha_spam']);
}
else
{
die(
"Falscher Sicherheitscode!");

In diesem Code (was ich schon versucht habe steht als Kommentar drinnen):
PHP-Code:
<?php require_once('../../Connections/testverbindung.php'); ?>
<?php 
error_reporting
(E_ALL); 
session_start();
function 
encrypt($string$key)
{
   
$result '';
   for(
$i=0$i<strlen($string); $i++)
   {
      
$char substr($string$i1);
      
$keychar substr($key, ($i strlen($key))-11);
      
$char chr(ord($char)+ord($keychar));
      
$result.=$char;
   }
   return 
base64_encode($result);
}
if(isset(
$_POST['sicherheitscode'])){
  
$sicherheits_eingabe encrypt($_POST["sicherheitscode"], '8t3479u97'); // key sollte ident sein mit captcha.php
  
$icherheits_eingabe str_replace("="""$sicherheits_eingabe);
}

if (!
function_exists("GetSQLValueString")) {
 function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  } 
  
// nach Eingabe von richtigem/falschen Sicherheitscode stets Anzeige "falscher Sicherheitscode", kein Eintrag ins GB 
  
return $theValue;
}
}
 
//"falscher Sicherheitscode" läd sofort 
$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}
// sofortige Meldung: falscher Sicherheitscode bei Seitenvorschau 
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO guestbook (name, entry, email, hompage) VALUES (%s, %s, %s, %s)",
                       
GetSQLValueString($_POST['name'], "text"),
                       
GetSQLValueString($_POST['entry'], "text"),
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['hompage'], "text"));

  
mysql_select_db($database_testverbindung$testverbindung);
  
$Result1 mysql_query($insertSQL$testverbindung) or die(mysql_error());

  
$insertGoTo "../the_blogs/stefan.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
// "falscher Sicherheitscode" wird angezeigt, aber Eintragung erfolgt trotzdem (auch ohne code) 
  
header(sprintf("Location: %s"$insertGoTo));
}
 
//"falscher Sicherheitscode" läd als erstes bei Seitenvorschau 
mysql_select_db($database_testverbindung$testverbindung);
$query_stefan_guestbook "SELECT * FROM guestbook ORDER BY ID DESC";
$stefan_guestbook mysql_query($query_stefan_guestbook$testverbindung) or die(mysql_error());
$row_stefan_guestbook mysql_fetch_assoc($stefan_guestbook);
$totalRows_stefan_guestbook mysql_num_rows($stefan_guestbook);
?>
//[...]
      <form action="<?php echo $editFormAction?>" method="post" name="form1" id="form1">
        <input type="hidden" name="MM_insert" value="form1" />
        <table align="left">
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">name:</td>
            <td><input type="text" name="name" value="" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right" valign="top">entry:</td>
            <td><textarea name="entry" cols="30" rows="5"></textarea>            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">email:</td>
            <td><input type="text" name="email" value="" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">hompage</td>
            <td><input type="text" name="hompage" value="http://" size="32" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">code: </td>
            <td><img src="../../captcha/captcha.php" border="0" title="Sicherheitscode" /></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">code: </td>
            <td><input type="text" name="sicherheitscode" size="5" />
            </td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">&nbsp;</td>
            <td><input name="submit" type="submit" value="Datensatz einf&uuml;gen" /></td>
          </tr>
        </table>
      </form>
    <p>&nbsp;</p>
  </div>
<!-- InstanceEndEditable --></div>
<div id="what"><!-- InstanceBeginEditable name="what_is_it?" --><span style="font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 16px; font-weight: bold; color: #666666">back to:</span>    <!-- InstanceEndEditable --></div>
<div id="hyperlinks"><!-- InstanceBeginEditable name="gals" -->
<table border="0">
    <tr>
      <td></td>
    </tr>
</table>
<!-- InstanceEndEditable --></div>

</body>
<!-- InstanceEnd --></html>
<?php
mysql_free_result
($stefan_guestbook);
?>
Kann mir vielleicht jemand hierbei weiterhelfen?