Archief - Formulier met 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.

faxxR

Legacy Member
Hallo,

Ik heb dus volgend formulier :

HTML:
<form id="form1" method="post">
            			<fieldset>
                			<p id="first">velden met een (*) zijn verplicht</p>
                				<div>
                  					<label for="naam">Naam (*)</label>
                  					<input  type="text" name="name" id="name" maxlength="50" size="30">
                  					<p></p>
                				</div>
                				<div>
                  					<label for="email">Email (*)</label>
                  					<input  type="text" name="email" id="email" maxlength="80" size="30">
                  					<p></p>
                				</div>
                				<div>
                  					<label for="date_of_birth">Date of Birth (*)</label>
                  					<input id="date_of_birth" name="date_of_birth" type="text" size="20">
                  					<p></p>
                				</div>
                				<div>
                  					<label for="sex">Sex (*)</label>
             	  					<input type="radio" name="sex" value="male" id="male" /> Male
 									<input type="radio" name="sex" value="female" id="female"/> Female
                				</div>
                                <div>
                                	<label for="subject">Subject (*)</label>
                                    <select name="subject">
  											<option id="google"value="Google">Vraag omtrend de site</option>
  											<option id="bing" value="Bing">Vraag omtrend het gebouw</option>
  											<option id="yahoo" value="Yahoo">Vraag omtrend het gerecht</option>
                                            <option id="yahoo" value="Yahoo">Andere vraag</option>
 									</select>
                                </div>
                                	<label for="message">Message (*)</label>
                                    <textarea  name="message" id="message" maxlength="1000" cols="28" rows="6"></textarea>
                                    <p></p>
                                <div>
                                </div>
                					<input type="submit" id="verzendBtn" value="verzenden">
                                    <input type="reset" id="wisBtn" value="wissen">
            			</fieldset>
        				</form>


En deze form valideer ik met jQuery :

Code:
$("#form1").validate({
		rules: {
			name: {
				required:true,
				validateName: true
			},
			email: {
				required:true,
				validateEmail: true
			},
			date_of_birth: {
				required:false,
				validateDateOfBirth: true
			},
			message: {
				required:true,
				}
			},
			
		errorPlacement: function(error, element) {
						error.appendTo( element.next() );
					},
		submitHandler:function(){
			$.ajax({  
            type: "POST",  
            url: "mail.php",  
            data: $("#form1").serializeArray(),  
            success: function(){  
                $("article#gebouw")
					.addClass("center")
					.html("Uw gegevens werden succesvol verstuurd! <br />Wij proberen dit zo snel mogelijk te bekijken");  
           		 }
			});

Zoals je ziet wordt het PHP-script mail.php opgeroepen. Wat er nu nog moet gebeuren is dat er CAPTCHA aan toegevoegd wordt. Ik zou graag gebruik maken van deze: Simple PHP captcha script PHP

Voor het tonen van de CAPTCHA gebruik ik deze code in de HTML:
<img src="captcha.php" />
Allemaal niet moeilijk maar nu wil ik dat de CAPTCHA ook gevalideert wordt. Zoals je ziet op de link moet er gebruik gemaakt worden van dit:
PHP:
<?php
	session_start();
	if (md5($_POST['norobot']) == $_SESSION['randomnr2'])	{ 
		// here you  place code to be executed if the captcha test passes
			echo "Hey great , it appears you are not a robot";
	}	else {  
		// here you  place code to be executed if the captcha test fails
			echo "you're a very naughty robot!";
	}
?>

maar ik weet niet hoe ik dit moet implementeren in mijn mail.php :
PHP:
<?php
	 
		$headers = "MIME-Version: 1.0" . "\r\n";
		$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

		// More headers
		$headers .= 'From: <[email protected]>' . "\r\n";

		$bericht = "Contactformulier:\n"."<br/>"."<br/>".

			 "\n"."<strong>Gegevens: </strong>"."<br/>"
			."Naam: ".$_POST["name"]. "<br/>"
			."Email: ".$_POST["email"]. "<br/>" 
			."Date of Birth: ".$_POST["date_of_birth"]. "<br/>"
			."Sex: ".$_POST["sex"]. "<br/>"
			."Subject: ".$_POST["subject"]. "<br/>"
			."Message: ".$_POST["message"]. "<br/>";

mail("hierkomtmailadres", "Contactformulier", $bericht, $headers);
		

?>

Ik heb namelijk nog nooit PHP gehad .....
Kan iemand mij verder helpen?

Zero Grav

Legacy Member
Ja mijne lieve jong, ge kunt nog zoveel bumpen als ge wilt. Maar ge had ook eens zelf die code kunnen proberen lezen. Daarvoor hoeft ge echt geen PHP te kunnen aangezien het er zelfs letterlijk in commentaar staat bijgeschreven.

Ge wilt dat er een mail wordt verstuurd (dus uw tweede blok code moet worden uitgevoerd) als de persoon geen bot is. In die php staat een if/else, dus een vergelijking, met commentaar bij wat er moet gebeuren op welke stap. Ik zie bij de if staan dat het geen bot is, dus ge plakt simpelweg uw code van die mail op die plaats en klaar.

Albireo

Legacy Member
Een simpel voorbeeldje van het gebruik van remote:

het formulier met de javascript-validatie:
Code:
<!DOCTYPE html>
<html>
	<head>
		<title>jQuery validation</title>
		<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
		<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
		<script type="text/javascript">
		$(document).ready(function(){
			$("#MyForm").validate({
				rules: {
					name: {
						required:true,
						minlength: 3
					},
					email: {
						required: true,
						email: true
					},
					captcha: {
						required: true,
						remote: {url: 'check-captcha.php', async: false}
					}
				},
					
				errorPlacement: function(error, element) {
					error.appendTo( element.next() );
				},
				submitHandler:function(){
					$.ajax({  
						type: "POST",  
						url: "mail.php",  
						data: $("#MyForm").serializeArray(),  
						success: function(){  
							$("#Message").html("Uw gegevens werden succesvol verstuurd! <br />Wij proberen dit zo snel mogelijk te bekijken");
						}
					});
				}
			});
		});
		</script>
	</head>
	<body>
		<form id="MyForm" method="get">
			<fieldset>
				<p id="first">velden met een (*) zijn verplicht</p>
				<div>
					<label for="name">Naam (*)</label>
					<input  type="text" name="name" id="name" maxlength="128" size="30">
					<p></p>
				</div>
				<div>
					<label for="email">E-mail (*)</label>
					<input type="text" name="email" id="email" size="30" maxlength="128">
					<p></p>
				</div>
				<div>
					<label for="captcha">captcha (*)</label>
					<input type="text" name="captcha" id="captcha" size="30" maxlength="128">
					<p></p>
				</div>
			</fieldset>
			<p><input type="submit" value="Verzenden"></p>
		</form>
		<div id="Message"></div>
	</body>
</html>

En dit is check-captcha.php die het captcha veld controleert.
Code:
<?php
	header('Content-Type: application/json');
	if (isset($_REQUEST['captcha']) && $_REQUEST['captcha']=='123456') {
		print(json_encode(true));
	}
	else {
		print(json_encode("ongeldige captcha"));
	}
?>
Voor jouw formulier moet dit zoiets worden:
Code:
<?php
header('Content-Type: application/json');
session_start(); 
    if (md5($_REQUEST['norobot']) == $_SESSION['randomnr2'])    {  
        // here you  place code to be executed if the captcha test passes 
            echo json_encode(true); 
    }    else {   
        // here you  place code to be executed if the captcha test fails 
            echo json_encode('you\'re a very naughty robot!'); 
    }
?>

In jouw code staan de properties "validateName", "validateEmail" en "validateDateOfBirth". Waar komen die vandaan? Die maken toch geen deel uit van de validator!?
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