Hallo
Statt mail() einfach INSERT INTO![]()
Salve Tutti
Ich habe schon des Öfteren von Captchas Gebrauch gemacht, dies jedoch nur zum Versenden von Formular-Inhalten via Email. Jetzt wollte ich es mal mit einem Gästebuch-Eintragsformular, das die Daten in eine MySql-DB schreibt, probieren. Doch ich scheitere immer wieder wenn es im Manual heisst z.B.: Tragen Sie die Emailadresse ein oder Geben Sie den Pfad zum Mail-Script an.
Bevor ich hier Quellcode poste: Weiss jemand ein Script oder eine Anleitung wie ich ein Captcha in ein Formular einbaue das die Daten NICHT per Email verschickt sondern diese in eine Datenbank einträgt.
Hallo
Statt mail() einfach INSERT INTO![]()
captcha ist doch nur eine überprüfung ob input-feld gleich mit grafik, wenn ja dann senden (insert).
zeig doch dein script
computer tun nur das was man ihnen sagt, meistens
OK. Hier der DB-Teil:
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($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;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "gbeintrag")) {
$insertSQL = sprintf("INSERT INTO eintraege (name, text) VALUES (%s, %s)",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['text'], "text"));
mysql_select_db($database_comedia, $comedia);
$Result1 = mysql_query($insertSQL, $comedia) or die(mysql_error());
$insertGoTo = "gaestebuch.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
...und hier der (gekürzte) Formular-Teil:
<form action="<?php echo $editFormAction; ?>" method="POST" name="gbeintrag" id="gbeintrag" style="margin:0px">
<input name="name" type="text" id="name">
<textarea name="text" rows="7" id="text"></textarea>
<input type="text" name="pfw_security_code" size="20"><img border="0" src="captcha.php" >
<input type="submit" name="Submit" value="Senden">
<input type="hidden" name="MM_insert" value="gbeintrag">
</form>
Im Manual des Captchas steht:
Open your form processor file , it's name should be mentioned in the "action" parameter of your <form> tag, please add the following PHP line at the top of the file just after the "<?php" line or after the validation code: require_once("check.php");
Geändert von emiglio (19.07.2007 um 13:16 Uhr)
Ich sehe da nichts, wo die check.php eingebunden wird, noch, wo da das Feld pfw_security_code auf den korrekten Code überprüft wird..
...Meine Meinung
...und genau das Einbinden der check.php war meine ursprüngliche gemeinte Frage:
Wenn steht: Open your form processor file , it's name should be mentioned in the "action" parameter of your <form> tag, please add the following PHP line at the top of the file just after the "<?php" line or after the validation code: require_once("check.php");
Also ich verstehe das so, dass im File, das im action-Parameter des Formulars angegeben ist, das require_once("check.php"); einfügen muss. Da bei mir aber form action="<?php echo $editFormAction; ?>" steht hilft mir das nicht weiter.
Was die Überprüfung betrifft: Ich denke genau das macht die check.php.
Welche Datei wird denn aufgerufen, wenn Du das Formular abschickst? Und auf welche Art und Weist bindest Du das Captcha in Dein Formular ein?
...Meine Meinung
Nach dem Abschicken des Formulars (wie im obigen Code zu sehen):
$insertGoTo = "gaestebuch.php";
Das Captcha wird folgendermassen eingebunden (wie im obigen Code zu sehen):
<input type="text" name="pfw_security_code" size="20"><img border="0" src="captcha.php" >
Das klappt alles auch wunderbar, das Captcha ist zu sehen. Nochmals mein Problem: Wo füge ich die Überprüfung des Captchas ein, in meienm Fall die oben erwähnte check.php
die Vorgehensweise ist so, das captcha.php den entsprechenden Wert in die Session schreibt. Beim Validieren holst Du Dir den Wert aus der Session und vergleichst ihn mit der Eingabe.
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Die check.php müsstest Du in deine gaestebuch.php inkludieren. Und zwar direkt hinter den einleitenden <?php-Tag. Genau das steht auch in dem Text, den Du da vor Dir hast![]()
...Meine Meinung
Zu Slayer2205: Das funktioniert leider nicht.
Zu allen Anderen: Vielleicht haben die Antworten jemandem geholfen, dann hat das Thema seinen Zweck wohl erfüllt. Für mich gilt:
Da steh ich nun ich armer Tor
und bin so schlau als wie zuvor.
Nichts desto Trotz: Danke für die Bemühungen.
Gruss
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)