Op mijn ontwikkelmachine heb ik een inschrijfformulier gemaakt zoals ik er al vele gemaakt heb, op basis van copy/paste van een ander formulier. In de formulieren gebruik ik ReCaptcha. Tijdens het testen krijg ik telkens de melding "incorrect-captcha-sol", maar alleen voor mijn laatste formulier, de anderen met voor recaptcha dezelfde code gaan goed.

Het nieuwe formulier gaat wel goed vanaf mijn laptop en ik heb iemand anders gevraagd het in te vullen en hij had ook geen problemen. Het lijkt dus een werkplekgebonden probleem, maar het formulier in productie nemen, terwijl ik steeds deze fout blijf houden heeft niet mijn voorkeur.

Ik heb de cache geleegd, history geschoond, pc gereboot, maar ik blijf deze melding krijgen. Dit soort dingen maken me gek!

Iemand een oplossing?

Nou is captcha nou niet iets wat afhangt van OS of iets dergelijks, dus wat echt kan verschillen van werkplek is browser. Welke browsers heb je getest? Wellicht dat het bijvoorbeeld alleen fout gaan met internet explorer (excuses voor standaard voorbeeld).
Dank je Afra, ik vergat te testen of het met IE ook fout ging, ik gebruik FF. In IE gaat het inderdaad goed. Ik zal gelijk op mn laptop testen of het daar met FF ook fout gaat.

Stel dat dat zo is, wat zou het dan kunnen zijn? Zonder recaptcha gaat het formulier ook in FF goed, het moet dus in de recaptchacode zitten die ik altijd met succes gebruik. Of denk ik nu te simpel?
het is dus een browser probleem, op mn laptop gaat het ook fout in FF. Wat kan het zijn?
Wellicht kan je wat relevante code plaatsen? Hoe word de captcha gegenereerd?
het zijn samengestelde formulieren, met database-interactie om inputvelden te vullen. ReCaptcha relevante code:

****in de head-section: *****
<script>
var RecaptchaOptions = {
theme : 'white',
lang : 'nl'
};
</script>
<style type="text/css">
<!--
#recaptcha {
position:relative;
top:0px;
left:0px;
}
#recaptcha input {
left:0px;
}
-->
</style>

**** in het invoerformulier: ******** de key ingevuld natuurlijk
/*reCAPCHTA */
require_once('recaptchalib.php');
$publickey = "***************";
echo " <div id='recaptcha' name='recaptcha'>";
echo recaptcha_get_html($publickey);
echo "</div>";

***** na submit: ****** met ingevulde key
/*Einde controle of alle verplichte velden zijn ingevuld*/
if(isEmail($email))
{
/*Controle of reCAPCHTA juist is overgetiept*/
require_once('recaptchalib.php');
$privatekey = "**************";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {
die ("De reCAPTCHA code is niet juist ingevoerd. Ga terug en probeer het opnieuw." .
"(reCAPTCHA meldde: " . $resp->error . ")");
}


Zet alstjeblieft je code tussen
[code]
[/code] tags, en php gedeelten tussen <?php ?> (voor highlighting). Kan je nu helaas niet helpen.
oke, ik zal het doen, moet nu weg. Je wilt het hele formulier? Hoe krijg ik hier de code op die manier?

edit: recaptcha.php broncode

Er zit een regeltje in:
<?php
if ($challenge == null
|| strlen($challenge) == 0
|| $response == null
|| strlen($response) == 0) {
// geef die error terug
}
?>
Het zou kunnen dat daar het mis gaat. Je kan het controleren door recaptchalib.php even aan te passen en een echo daarbij te zetten. Als die dan tevoorschijn komt, kan je het oplossen.
Dank je Jelmer, de fouttekst "incorrect-captcha-sol" wordt daar juist toegekend omdat de input parameters:

<?php
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
?>

leeg bleken te zijn bij het aanroepen van recaptcha_check_answer, uit recaptchalib.php.

Waarschijnlijk heb ik ergens een fout in mijn formulier, ook al wordt het formulier ook onder FF netjes opgebouwd.

ik zal de code hier zo plaatsen, ik zie zelf geen fouten

Dit is de code, vanaf het moment dat het formulier wordt opgebouwd tot het moment van de fout. Het gaat dus alleen fout in FireFox, IE 6 en 7 geven geen problemen.

<?php
echo " <form action='".$formaction."' method='post' name='".$formname."'>";
echo " <h3><a name='formulier'></a>".$formsubtitel."</h3> ";
echo " <p>";
echo " <table>";
echo " <tr>";
if (!$num==0){
$bedrag = $bedrag1;
echo " <td colspan='3'>Aan de hand van uw NL-nummer hebben we uw gegevens zoals bekend in onze ledenadministratie opgehaald. Controleert u deze ";
echo " zorgvuldig en vul ze aan</td>";
}
else
{
$bedrag = $bedrag2;
echo " <td colspan='3'><h4>U heeft ervoor gekozen u aan te melden voor ".$activiteit.", maar niet van de korting die leden krijgen te willen profiteren. Indien u dit wel wilt, ga dan terug en schrijf u eerst in als lid.</h4></td>";
}
echo " </tr>";
echo " <tr>";
echo " <td colspan='3'>&nbsp;</td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan='3'><h4>Gegevens deelnemer</h4><input name='nlnummer' type='hidden' value='$nlnummer'></td>";
echo " </tr>";
echo " <tr>";
echo " <td width='70px'>Voornaam: </td><td width='120px'>";
echo " <input name='voornaam' type='text' size='7' value='".(mysql_result($result,0,'voornaam')). "' onkeypress = 'return handleEnter(this, event)' /></td>";
echo " <td width='300px'>Achternaam: ";
echo " <input name='achternaam' type='text' size='20' value='".trim(mysql_result($result,0,'achternaam')). "' onkeypress = 'return handleEnter(this, event)' /> <b>*</b></td>";
echo " </tr>";
echo " <tr>";
echo " <td width='70px'>Woonplaats: </td><td width='120px'>";
echo " <input name='woonplaats' type='text' size='7' value='".(mysql_result($result,0,'woonplaats')). "' onkeypress = 'return handleEnter(this, event)' /> <b>*</b></td><td></td>";
echo " </tr>";
//*************************************************************************************************************************************
//***Dit blok laten staan zoals het is.
//*************************************************************************************************************************************
echo " <tr>";
echo " <td colspan='3'>". $redentelnrnodig . "</td>";
echo " </tr>";
echo " <tr>";
echo " <td width='70px'>Telefoonnr.: </td><td width='120px'>";

if (substr(trim(mysql_result($result,0,'telnr')),0,2) == '06' || substr(trim(mysql_result($result,0,'telnr')),0,4) == '+316'){
echo " <input name='telnr' type='text' size='10' onkeypress = 'return handleEnter(this, event)' /> <b>of</b> </td><td width='300px'>";
echo " mobielnummer: ";
echo " <input name='mobnr' type='text' size='10' value='".trim(mysql_result($result,0,'telnr')). "' onkeypress = 'return handleEnter(this, event)' /> <b>*</b></td>";
}
else{
echo " <input name='telnr' type='text' size='10' value='".trim(mysql_result($result,0,'telnr')). "' onkeypress = 'return handleEnter(this, event)' /> <b>of</b> </td><td width='300px'>";
echo " mobielnummer: ";
echo " <input name='mobnr' type='text' size='10' onkeypress = 'return handleEnter(this, event)' /> <b>*</b> </td>";
}
echo " </tr>";
echo " <tr>";
echo " <td colspan=3>&nbsp;</td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan='3'>E-mailadres, bij voorkeur <b>privé</b>";
$emailarr=explode("@",trim(mysql_result($result,0,'email')));
if ($emailarr[1]=="atosorigin.nl")
{
$emailarr[1]=="atosorigin.com";
}
if ($emailarr[1]=="atosorigin.com"){
echo " <input name='email' type='text' size='35' onkeypress = 'return handleEnter(this, event)' /><input name='btngsm' type='button' onClick='javascript:alert(\"Omdat we u ook buiten kantooruren willen kunnen bereiken, ontvangen we graag uw prive e-mailadres. Dit is natuurlijk niet verplicht, u mag ook uw Atos-mailadres opgeven.\")' value='?'> <b>*</b> </td>";
}
else{
echo " <input name='email' type='text' size='35' value='".trim(mysql_result($result,0,'email')). "' onkeypress = 'return handleEnter(this, event)' /><input name='btngsm' type='button' onClick='javascript:alert(\"Omdat we u ook buiten kantooruren willen kunnen bereiken, ontvangen we graag uw prive e-mailadres. Dit is natuurlijk niet verplicht, u mag ook uw Atos-mailadres opgeven.\")' value='?'> <b>*</b> </td>";
}
echo " </tr>";
echo " <tr>";
echo " <td colspan=3>&nbsp;</td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan=3><h4>Bioscoop</h4></td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan='3'>";
echo " <select id='locatie' name='locatie'>";
echo " <option id='ng' name='ng' value='MustSee Nieuwegein'>MustSee Nieuwegein</option>";
echo " <option id='gn' name='gn' value='MustSee Groningen'>MustSee Groningen</option>";
echo " <option id='eh' name='eh' value='Path&eacute; Eindhoven'>Path&eacute; Eindhoven</option>";
echo " </select>";
echo " </td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan=3>&nbsp;</td>";
echo " </tr>";
if ($num==0){ /*alleen voor niet-leden */
//*************************************************************************************************************************************
//***Afhankelijk van betaalmethode laten staan of uitcommentariseren
//*************************************************************************************************************************************
echo " <tr>";
echo " <td colspan='3'><b>Betaling</b> vindt alleen plaats via een eenmalige machtiging. Met uw rekeningnummer en ten naam stelling machtigt u de AOPV het bedrag eenmalig af te schrijven.</td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan=3>&nbsp;</td>";
echo " </tr>";
echo " <tr>";
echo " <td width='70px'><b>rekeningnummer:</b> </td><td width='120px'>";
echo " <input name='rekeningnummer' type='text' size='7' onkeypress = 'return handleEnter(this, event)' /> <b>*</b></td>";
echo " <td width='300px'>ten name van: ";
echo " <input name='tnv' type='text' size='25' onkeypress = 'return handleEnter(this, event)' /> <b>*</b></td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan='3'><INPUT TYPE='checkbox' id='chkincasso' NAME='chkincasso' onclick='aan(this.name)' value='off' onkeypress = 'return handleEnter(this, event)'> <b>*</b> Voor de machtiging tot afschrijven moet u toestemming verlenen. <b>Vink aan om uw toestemming te geven.<b></td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan=3>&nbsp;</td>";
echo " </tr>";
}
echo " <tr>";
if (!$num==0){
echo " <td colspan=3><INPUT TYPE='checkbox' id='partner' NAME='partner' onMouseDown='show(this.name)' value='off'> Partner of introduc&eacute; mee? (gratis)</td></tr>";
}
else
{
echo " <td colspan=3><INPUT TYPE='checkbox' id='partner' NAME='partner' onMouseDown='show(this.name)' value='off'> Partner of introduc&eacute; mee? (&euro; ".$bedrag2.")</td></tr>";

}
echo "</table>";

echo " <table><tr>";
echo " <td colspan=3>&nbsp;</td>";
echo " </tr>";
echo " <tr>";
if (!$num==0){ /*kinderen van leden zijn gratis*/
echo " <td colspan=3>Aantal thuiswonende kinderen mee <input name='aantalkind' type='text' size='2' maxsize='1' /> (gratis)</td></tr>";
}
else { /*kinderen van niet-leden zijn niet gratis*/
echo " <td colspan=3>Aantal thuiswonende kinderen mee <input name='aantalkind' type='text' size='2' maxsize='1' /> (&euro; ".$bedrag2.")</td></tr>";
}
echo " <tr>";
echo " <td colspan=3>&nbsp;</td>";
echo " </tr></table></div>";
echo " <table><tr>";
echo " <td colspan=2>&nbsp;</td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan=2>&nbsp;</td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan='3'><h4>Ruimte voor vragen en opmerkingen</h4></td>";
echo " </tr>";
echo " <tr>";
echo " <td></td>";
echo " <td colspan='3'><textarea name='opmerking' cols='57' rows='5'></textarea></td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan=3>&nbsp;</td>";
echo " </tr>";
echo " <tr>";
echo " <td><b>Type over:</b></td>";
echo " <td colspan=2>";
/*reCAPCHTA */
require_once('recaptchalib.php');
$publickey = "*******************";
echo " <div id='recaptcha' name='recaptcha'>";
echo recaptcha_get_html($publickey);
echo "</div>";
echo " </td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan=3>&nbsp;</td>";
echo " </tr>";
echo " <tr>";
echo " <td>&nbsp;</td>";
echo " <td colspan=2><input type='submit' value='Verzenden' name='submit' /></td>";
echo " </tr>";
echo "</table>";
echo "</p>";
echo "<p>&nbsp;</p> ";
echo " </div> ";
echo " </form>";
echo " </div> ";
}
}
}
//1
elseif (isset($_POST['submit'])) {
/*HET DEELNAMEFORMULIER IS VERZONDEN*/

/*Controle of emailadres valide is */
$email = stripslashes($_POST['email']);

function protectMailHeaders($string)
{
$string = str_replace("\n", "", $string); // Verwijder \n
$string = str_replace("\r", "", $string); // Verwijder \r
$string = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $string)); // Slashes van quotes

return $string;
}
function isEmail($string)
{
$result = false;

if($string != "")
{
$expr = "/^([a-zA-Z0-9]){1,}(([a-zA-Z0-9\-_])|(([\.]){1,1}([a-zA-Z0-9]){1,})){0,}([@]){1,1}([a-zA-Z0-9]){1,}(([a-zA-Z0-9\-_])|(([\.]){1,1}([a-zA-Z0-9]){1,})){0,}([\.]){1,1}([a-zA-Z0-9]){2,4}$/";
if(preg_match($expr, $string)) // voldoet aan expressie
{
$result = true;
}
}

return $result;
}

/*Einde controle of emailadres valide is */


/*Controle voor leden of alle verplichte velden zijn ingevuld*/
mysql_connect($server,$username,$password);
@mysql_select_db($database) or die( "Er kon geen connectie met de database gemaakt worden, zodat uw gegevens niet opgehaald konden worden. Probeer het later nog eens.");
$query = "SELECT * FROM leden WHERE UCASE(nlnummer)= '". $_POST['nlnummer']."'";
$result=mysql_query($query);
mysql_close();
$num=mysql_numrows($result);

if (!$num==0){
if (!$_POST['achternaam'] || !$_POST['woonplaats'] || (!$_POST['telnr'] && !$_POST['mobnr']) || !$_POST['email']) {
die ("Niet alle verplichte velden zijn ingevoerd. Ga terug en probeer het opnieuw.");
}
}
else {
if (!$_POST['achternaam'] || !$_POST['woonplaats'] || (!$_POST['telnr'] && !$_POST['mobnr']) || !$_POST['email'] || !$_POST['rekeningnummer'] || !($_POST['tnv']) || !$_POST['chkincasso']=='on') {
die ("Niet alle verplichte velden zijn ingevoerd. Heeft u uw eenmalige machting gegeven door het vakje aan te vinken? Ga terug en probeer het opnieuw.");
}
}

/*Einde controle of alle verplichte velden zijn ingevuld*/
if(isEmail($email)) // Merk op dat een 'goed' emailadres zowiezo nooit een [enter] of quote kan bevatten
{

/*Controle of reCAPCHTA juist is overgetiept*/
require_once('recaptchalib.php');
$privatekey = "****************";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {
die ("De reCAPTCHA code is niet juist ingevoerd. Ga terug en probeer het opnieuw." .
"(reCAPTCHA meldde: " . $resp->error . ")");
}


?>

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Reageren