Archief - JQuery register + captcha

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

sarnath

Legacy Member
Ik zou graag het inschrijvingsformulier op mijn website vernieuwen.
Nu gebruik ik dus php validatie op de velden alsook een captcha die in php gevalideerd wordt.

Nu heb ik een script ineengeknutseld door mij te baseren op enkele tutorials, maar ik krijg ze niet samengevoegd :)
Ik gebruik dus enerzijds een validatiefunctie die live valideert wat je ingeeft en zolang het niet in orde is kan je niet submitten.
Daarnaast gebruik ik simple captcha 0.2 als validatie voor menselijke input.
Nu krijg ik echter geen live validatie op die captcha gezet, aangezien je een php sessievar moet checken of de captcha goed is gebeurt dit dus pas na de submit, maar dan zijn natuurlijk mijn bovenste velden terug leeg als de captcha fout is.

Iemand enig idee hoe ik die captcha dus kan verwerken in mijn validatiescript?

Het zijn nogal wat bestandjes dus heb ik ze even in een zip online geplaatst.

scipicore

Legacy Member
Ik zou het zo doen:
Code:
$('#send').click(function(){
		   
	var voornaam = $('#voornaam').val(), 
		achternaam = $('#achternaam').val(),
		gebruikersnaam = $('#gebruikersnaam').val(), 
		email = $('#email').val(), 
		akkoord = $('#akkoord').val(), 
		captcha = $('#simpleCaptcha_0').val();
		
	jQuery.post('jePhpScript.php', {voornaam: voornaam, achternaam: achternaam, gebruikersnaam: gebruikersnaam, email: email, akkoord : akkoord, captcha : captcha}, 			function(data){
		$('#antwoord').html(data);
	});            
	return false;
});

In 'jePhpScript.php' zet je dan ook ineens de verhandeling van het verzenden van het formulier en echo je het al dan niet slagen van het verzenden.
Ook voeg je daar je captcha controle bij.

Dus bvb:
PHP:
if (isset($_POST['captcha']) and $_POST['captcha'] == $_SESSION['simpleCaptchaAnswer']) {
	if(mysql_query("insert into users (voornaam,achternaam,email,gebruikersnaam) values('".$_POST['voornaam']."','".$_POST['achternaam']."','".$_POST['email']."','".$_POST['gebruikersnaam']."')")){
		echo 'succes!';
	}else{
		echo 'Fout bij toevoegen aan databank.';
	}
}else{
	echo "captcha was fout";
}

Op die manier komt er zonder refreshen het resultaat van het script in $('#antwoord'), Je kan natuurlijk ook gewoon je captcha resultaat ergens laten verschijnen en de rest van de verwerking op een andere manier laten gebeuren.
Kan zijn dat er behoorlijk wat fouten in zitten, het is de gedachtengang die telt he ^^

sarnath

Legacy Member
Bedankt voor je reply, ik snap je redenering perfect en ga het ook zo doen, het probleem is alleen dat ik de waarde van de captcha dus niet vastkrijg :s

captcha = $('#captcha1').val();

Deze waarde is leeg, wrs omdat het staat als <div id="captcha1"></div>

woony

Legacy Member
sarnath zei:
Bedankt voor je reply, ik snap je redenering perfect en ga het ook zo doen, het probleem is alleen dat ik de waarde van de captcha dus niet vastkrijg :s

captcha = $('#captcha1').val();

Deze waarde is leeg, wrs omdat het staat als <div id="captcha1"></div>

dan zul je moeten .html() gebruiken

captcha =$('#captcha1').html();

sarnath

Legacy Member
Dan krijg ik gewoon de hele inhoud van de div :s
Code:
<div class="captchaIntro"><p>To make sure you are a human, we need you to click on the <span class="captchaText">clock</span>.</p></div><div class="captchaImages"><img class="captchaImage" src="captchaImages/99.png" alt="" title="828433ab53782c31252d82fa0ad40f1f1b9ccc23"><img class="captchaImage" src="captchaImages/04.png" alt="" title="30626bb0793acd5649c1cd8e7ec59fac3904e241"><img class="captchaImage" src="captchaImages/16.png" alt="" title="f6a8840cb42fc81434f3e44bf0f3664d08d3dd6b"><img class="captchaImage" src="captchaImages/21.png" alt="" title="de8ca2de75f90cc3dbe45d35af56d57b2916b43f"><img class="captchaImage" src="captchaImages/15.png" alt="" title="8900424cb727b7169e9c15f866cfd33513a314f9"></div><input class="simpleCaptchaInput" id="simpleCaptcha_0" name="captchaSelection" value="" type="hidden">

scipicore

Legacy Member
Bij de bestanden die je hebt doorgestuurd, zorgt het captchascript ervoor dat er een verborgen input verschijnt met als id simpleCaptcha_0, dus de simpleCaptcha_0 die ik in mijn voorbeeld heb gebruikt klopt dus weldegelijk.
Zoek in je gerenderde pagina maar eens naar die input van de captcha.

sarnath

Legacy Member
ok, maar die waarde wordt toch pas gegenereerd na de post? En als dan de captcha foutief is zijn al de andere velden terug leeg..

scipicore

Legacy Member
Nee, de value van simpleCaptcha_0 wordt ingevuld wanneer er een afbeelding word geselecteerd.
Wanneer ik op het gloeilampje klik krijg ik:
Code:
<input id="simpleCaptcha_0" value="52b006c09c0a663cf1c4a517ae6e6a66102ecbcb" >
Wanneer ik op het huisje klik krijg ik:
Code:
<input id="simpleCaptcha_0" value="a5b7e58b1c064035b91bb30091e971fb137ea00e"" >

Het is dus die waarde die je meestuurt met je ajax post en in je script vergelijkt met de session waarde.

Bram

Legacy Member
Als ge nu gewoon alles doet gelijk eerst en de captcha serverside valideert? Als em failt, vult ge gewoon uw input values in met de $_POST waarden?

sarnath

Legacy Member
@Bram, zo heb ik het inderdaad gemaakt uiteindelijk, kreeg de id echt niet te pakken in mijn validation, maar het werkt nu dus bedankt voor jullie hulp.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan