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:
In diesem Code (was ich schon versucht habe steht als Kommentar drinnen):
Kann mir vielleicht jemand hierbei weiterhelfen?
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!");
}
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, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$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"> </td>
<td><input name="submit" type="submit" value="Datensatz einfügen" /></td>
</tr>
</table>
</form>
<p> </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);
?>