Ecco un breve tutorial su come creare un contact form con Bootstrap 3 e il recaptcha di google.
Sul blog di Jon Bake possiamo trovare un semplice tutorial su come creare un form di contatto con BootStrap 3 con il supporto del captcha di Google.
Le tecnologie usate in questo breve esempio sono HTML, jQuery, PHP e SecureImage.
Ecco come creare il form in HTML
Tell Us What You Think...
We appreciate any feedback about your overall experience on our site or how to make it even better. Please fill in the below form with any comments and we will get back to you.
La porzione di JavaScript che si occuperà di chiamare lo script PHP e passargli i valori del form
$(document).ready(function() { $("#feedbackSubmit").click(function() { //clear any errors contactForm.clearErrors(); //do a little client-side validation -- check that each field has a value and e-mail field is in proper format var hasErrors = false; $('#feedbackForm input,textarea').each(function() { if (!$(this).val()) { hasErrors = true; contactForm.addError($(this)); } }); var $email = $('#email'); if (!contactForm.isValidEmail($email.val())) { hasErrors = true; contactForm.addError($email); } //if there are any errors return without sending e-mail if (hasErrors) { return false; } //send the feedback e-mail $.ajax({ type: "POST", url: "library/sendmail.php", data: $("#feedbackForm").serialize(), success: function(data) { contactForm.addAjaxMessage(data.message, false); //get new Captcha on success $('#captcha').attr('src', 'library/vender/securimage/securimage_show.php?' + Math.random()); }, error: function(response) { contactForm.addAjaxMessage(response.responseJSON.message, true); } }); return false; }); }); //namespace as not to pollute global namespace var contactForm = { isValidEmail: function (email) { var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; return regex.test(email); }, clearErrors: function () { $('#emailAlert').remove(); $('#feedbackForm .help-block').hide(); $('#feedbackForm .form-group').removeClass('has-error'); }, addError: function ($input) { $input.siblings('.help-block').show(); $input.parent('.form-group').addClass('has-error'); }, addAjaxMessage: function(msg, isError) { $("#feedbackSubmit").after('' + $('').text(msg).html() + ''); } };
Ecco come creare lo script in PHP
$messsage))); } /** * Return a formatted message body of the form: * Name:* Comment: * * @param String $name name of submitter * @param String $message message/comment submitted */ function setMessageBody ($name, $message) { $message_body = "Name: " . $name."\n\n"; $message_body .= "Comment:\n" . nl2br($message); return $message_body; } $email = $_POST['email']; $message = $_POST['message']; header('Content-type: application/json'); //do some simple validation. this should have been validated on the client-side also if (empty($email) || empty($message)) { errorResponse('Email or message is empty.'); } //do Captcha check, make sure the submitter is not a robot:)... include_once './vender/securimage/securimage.php'; $securimage = new Securimage(); if (!$securimage->check($_POST['captcha_code'])) { errorResponse('Invalid Security Code'); } //try to send the message if(mail(MY_EMAIL, "Feedback Form Results", setMessageBody($_POST["name"], $message), "From: $email")) { echo json_encode(array('message' => 'Your message was successfully submitted.')); } else { header('HTTP/1.1 500 Internal Server Error'); echo json_encode(array('message' => 'Unexpected error while attempting to send e-mail.')); } ?>
Possiamo trovare il progetto intero su GitHub