CONTACT FORM WITH CAPTCHA
<?php
$office_mail_body = '
<html>
<body>
<div style="max-width:700px;margin: 0 auto;padding: 30px;background: #f2f2f2;">
<h2>Nuova richiesta da <?php echo $site; ?></h2>
<div style="padding: 10px;background: white;">
Nome: '.$nome.'
</div>
<div style="padding: 10px;background: #cee1ff;">
Email: '.$email.'
</div>
<div style="padding: 10px;background: white;">
Tel: '.$telefono.'
</div>
<div style="padding: 10px;background: #cee1ff;">
Tipo di richiesta: '.$richiesta.'
</div>
<div style="padding: 10px;background: white;">
Messaggio: '.$messaggio.'
</div>
</div>
</body>
</html>
';
?>
// include package from google drive
<form id="contactform" method="post" action="" class="form-horizontal contact-form">
<div class="col-md-6">
<div class="form-group">
<label class="control-label" for="name">Nome *</label>
<div class="input-group">
<input type="text" class="form-control" id="name" name="name" placeholder="Nome *" required/>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label" for="email">Email *</label>
<div class="input-group">
<input type="email" class="form-control" id="email" name="email" placeholder="Email *" required/>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label" for="phone">Telefono *</label>
<div class="input-group">
<input type="tel" class="form-control optional" id="phone" name="phone" placeholder="Telefono *" required/>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label" for="reason">Tipo di richiesta</label>
<div class="input-group">
<select name="reason" class="form-control" required>
<option value="Assistenza">Assistenza</option>
<option value="Manutenzione">Manutenzione</option>
<option value="Pulizia">Pulizia</option>
<option value="Ricarica">Ricarica</option>
<option value="Sopralluogo">Sopralluogo</option>
</select>
</div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label class="control-label" for="message">Messaggio *</label>
<div class="input-group">
<textarea rows="10" cols="30" class="form-control" id="message" name="message" placeholder="Messaggio"></textarea>
</div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label class="col-xs-3 control-label">Captcha</label>
<div class="col-xs-8">
<!-- The captcha container -->
<div id="captchaContainer"></div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<div class="col-xs-5 col-xs-offset-3">
<button type="submit" class="btn btn-success btn-lg">Inoltra richiesta</button>
<button type="button" class="btn btn-default btn-lg" id="resetButton">Azzera</button>
</div>
</div>
</div>
</form>
////////////////////////////////////////////////////////////////////////////////
// FORM
////////////////////////////////////////////////////////////////////////////////
$(document).ready(function() {
//Options
$('#contactform')
.formValidation({
framework: 'bootstrap',
autofocus: true,
icon: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
addOns: {
reCaptcha2: {
element: 'captchaContainer',
theme: 'light',
siteKey: '6LdzZBUUAAAAAKEHtHBD1OPG6U1o3K5e6TRgdAv1',
timeout: 120,
message: 'Captcha non valido'
}
},
fields: {
name: {
validators: {
notEmpty: {
message: 'Inserire nome e cognome'
}
}
},
email: {
validators: {
notEmpty: {
message: 'Inserire indirrizzo email'
},
emailAddress: {
message: 'Inserire un indirizzo email valido'
}
}
},
phone: {
validators: {
notEmpty: {
message: 'Inserire numero di telefono'
},
different: {
field: 'username',
message: 'The password cannot be the same as username'
},
regexp: {
regexp: /^([+]?\d{1,4}[-\s]?|)\d{3}[-\s]?\d{3}[-\s]?\d{4}$/,
message: 'Per piacere digitare un numero di telefono valido'
}
}
},
message: {
validators: {
notEmpty: {
message: 'Scrivere una breve descrizione della richiesta'
}
}
}
}
})
//Send
.on('success.form.fv', function(e) {
// Prevent form submission
e.preventDefault();
var $form = $(e.target),
fv = $form.data('formValidation');
// Use Ajax to submit form data
$.ajax({
url: $form.attr('action'),
type: 'POST',
data: $form.serialize(),
success: function(result) {
bootbox.alert({
title: "Richiesta inoltrata",
message: result,
backdrop: true
});
// Reset the recaptcha
FormValidation.AddOn.reCaptcha2.reset('captchaContainer');
// Reset form
$('#contactform').formValidation('resetForm', true);
}
});
});
$('#contactform #resetButton').on('click', function() {
// Reset the recaptcha
FormValidation.AddOn.reCaptcha2.reset('captchaContainer');
// Reset form
$('#contactform').formValidation('resetForm', true);
});
});
//include http://swiftmailer.org/
<?php
$nome = (isset($_POST['name']) ? $_POST['name'] : '');
$email = (isset($_POST['email']) ? $_POST['email'] : '');
$telefono = (isset($_POST['phone']) ? $_POST['phone'] : '');
$richiesta = (isset($_POST['reason']) ? $_POST['reason'] : '');
$messaggio = (isset($_POST['message']) ? $_POST['message'] : '');
$site = preg_replace('#^www\.(.+\.)#i', '$1', $_SERVER['SERVER_NAME']);
$from_mail = "contatti@".$site;
$from_name = $site;
$office_mail = "webmaster@pahko.it";
$subject = "Richiesta online da ".$site;
require_once('../assets/components/swiftmailer/swift_required.php');
require_once( '../assets/templates/mails/office_mail.php');
$transport = Swift_SmtpTransport::newInstance('mail.domain.com',25)
->setUsername('mail@domain.com')
->setPassword('password')
;
$mailer = Swift_Mailer::newInstance($transport);
//mail office
$message = Swift_Message::newInstance()
->setContentType("text/html")
->setSubject($subject)
->setFrom(array($from_mail => $from_name))
->setReplyTo(array($from_mail => $from_name))
->setTo(array($office_mail))
->setBody($office_mail_body, "text/html")
;
// SEND MAILS
if($mailer->send($message)) {
echo 'success message';
} else {
echo 'error message';
}
?>