Hallo liebe Forenmitglieder,
ich stehe vor einem -für mich unüberwindbaren- Problem mit reCaptcha und PHP. Da ich mich noch nicht sehr lange mit PHP beschäftige, habe ich zwar Fortschritte gemacht aber es reicht wohl noch lange nicht aus. Die eingetragenen Daten im Formular werden auf Vollständigkeit geprüft und auch versendet. Allerdings wird reCaptcha einfach übergangen, das heißt, es ist egal, ob etwas eingetragen wird oder nicht. Das Formular wird trotzdem versendet. Ich habe schon in diversen Foren und auch bei Google Groups nach Lösungen gesucht aber nichts exaktes gefunden. Möglicherweise hilft es, so las ich, einen "CALL" einzufügen aber da ich eben noch am Anfang stehe, weiß ich weder wie, noch wo.
Kurz zu den Codes: ich habe ein Kontaktformular namens form.php. Dieses wird per include in die ausführende Datei PhpFormMail4.php eingelesen und dort weiter verarbeitet. Das Formular funktioniert weitestgehend, nicht aber "reCaptcha". Und das ärgert mich sehr, weil ich seit 3 Tagen an dieser, für Profis sicher "Kleinigkeit" sitze. Daher poste ich auch in "Fortgeschritten", weil ich die Hoffnung habe, Hilfe zu bekommen.
Zuerst einmal der Code aus der form.php.
Das scheint mir noch relativ übersichtlich und einfach. Deswegen habe ich es wohl auch hinbekommen. Laut der Installationsanleitung von reCaptcha, ist jetzt in der ausführenden Datei, direkt zu Beginn, der Aufruf für die recaptchalib.php zu platzieren, was mir aber von daher unlogisch erscheint, weil das Formular an sich ja erst weiter unten aufgerufen wird. Ich ahbe es trotzdem einmal so gemacht wie beschrieben und erhalte nun bei Aufruf der Seite die Nachricht: "The reCAPTCHA wasn't entered correctly. Go back and try it again.(reCAPTCHA said: incorrect-captcha-sol)", was logisch ist, da die reCaptchalib.php ja ganz zu Anfang, also noch bevor sich etwas ausfüllen lässt, aufgerufen wird. Der Code zur PhpFormMail4.php lautet wie folgt:
Es gibt auch noch eine CSS aber ich möchte das Forum nicht zumüllen und bitte bereits jetzt um Verzeihung, wenn ich nicht richtig eingerückt habe. Es waren lange Nächte, ich bin nicht sehr erfahren und Lust und Konzentration lassen nach.
Ich hoffe, dass ich hier Hilfe bekommen kann. Herzlichen Dank im Voraus.
ich stehe vor einem -für mich unüberwindbaren- Problem mit reCaptcha und PHP. Da ich mich noch nicht sehr lange mit PHP beschäftige, habe ich zwar Fortschritte gemacht aber es reicht wohl noch lange nicht aus. Die eingetragenen Daten im Formular werden auf Vollständigkeit geprüft und auch versendet. Allerdings wird reCaptcha einfach übergangen, das heißt, es ist egal, ob etwas eingetragen wird oder nicht. Das Formular wird trotzdem versendet. Ich habe schon in diversen Foren und auch bei Google Groups nach Lösungen gesucht aber nichts exaktes gefunden. Möglicherweise hilft es, so las ich, einen "CALL" einzufügen aber da ich eben noch am Anfang stehe, weiß ich weder wie, noch wo.
Kurz zu den Codes: ich habe ein Kontaktformular namens form.php. Dieses wird per include in die ausführende Datei PhpFormMail4.php eingelesen und dort weiter verarbeitet. Das Formular funktioniert weitestgehend, nicht aber "reCaptcha". Und das ärgert mich sehr, weil ich seit 3 Tagen an dieser, für Profis sicher "Kleinigkeit" sitze. Daher poste ich auch in "Fortgeschritten", weil ich die Hoffnung habe, Hilfe zu bekommen.
Zuerst einmal der Code aus der form.php.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Strousberg | Development - Schreiben Sie uns</title> <link rel="stylesheet" href="css/styles.css" type="text/css" media="screen" /> <script type="text/javascript"> var RecaptchaOptions = { theme : 'white', lang : 'de' }; </script> </head> <body> <form name="kontaktform" id="kontaktform" method="post" action="?send=1"> <label for="anrede" class="plabel2">* Anrede:</label> <select name="anrede" class="fullcontent" id="anrede"> <option value="Firma" selected="selected">Firma</option> <option value="Herr">Herr</option> <option value="Frau">Frau</option> </select> <label for="name" class="plabel2">* Name:</label> <input name="name" type="text" id="name" size="41" value="<?PHP ECHO $_POST[name]; ?>"/> <label for="email" class="plabel2">* e-Mail:</label> <input name="email" type="text" id="email" size="41" value="<?PHP ECHO $_POST[email]; ?>"/> <label for="telefon" class="plabel2">* Telefonnummer:</label> <input name="telefon" type="text" id="telefon" size="41" value="<?PHP ECHO $_POST[telefon]; ?>"/> <label for="anfrage" class="plabel2">* Ihre Anfrage:</label> <textarea name="anfrage" cols="38" rows="10" id="anfrage"><?PHP ECHO $_POST[anfrage]; ?></textarea> <div id="recaptcha_widget_div"> <?php require_once('recaptchalib.php'); $publickey = "xxx"; echo recaptcha_get_html($publickey); ?> </div> <div> <input class="submit" type="submit" name="Submit" value="» Anfrage Versenden" /> <input class="reset" type="reset" name="Reset" value="» Felder leeren" /> </div> </form> </body> </html>
PHP-Code:
<?php
require_once('recaptchalib.php');
$privatekey = "yyy";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
}
?>
<?php
$YOUREMAIL = "development@strousberg.de";
?>
<?PHP
if ($_GET[send] < 1) {
?>
<?php
include "form.php";
?>
<?PHP
}
?>
<?PHP
if ($_GET[send] == 1) {
if ($_POST[name] == $nil || $_POST[email] == $nil || $_POST[telefon] == $nil || $_POST[anfrage] == $nil)
$_GET[send] = 2;
}
if ($_GET[send] == 1) {
$comment = preg_replace("/\n/","\n<BR>",$_POST[anfrage]);
$to="$YOUREMAIL";
$headers.= "MIME-Version: 1.0\r\n";
$headers.= "Content-type: text/html; ";
$headers.= "charset=iso-8859-1\r\n";
$headers.= "From: $_POST[email]";
$subject = "$_POST[telefon]";
$body = "<HTML><BODY>
<b>From : $_POST[name]</b><BR><BR>$comment
</BODY></HTML>";
mail($to,$subject,$body,$headers);
?>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class>"Email gesendet</td>
</tr>
<tr>
<td class><span class="below">Ihre Email ist angekommen. Vielen Dank.</span></td>
</tr>
</table>
<?PHP
}
if ($_GET[send] == 2) {
?>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class><span style="color: #94A6B0; font-weight: bold; font-size: 12px; margin-left: 122px; position:absolute; top: 420px;">Fehler. Bitte alle Felder ausfüllen.</span></td>
</tr>
<tr>
<td class><span style="color: #94A6B0; font-weight: bold; font-size: 12px; margin-left: 122px; position: absolute; top: 440px;">Es gibt leere Felder. Sie müssen alle Felder ausfüllen.</span></td>
</tr>
</table>
<?php
include "form.php";
?>
<?PHP
}
?>
Ich hoffe, dass ich hier Hilfe bekommen kann. Herzlichen Dank im Voraus.
Kommentar