bux23
2/17/2017 - 8:25 AM

CONTACT FORM WITH CAPTCHA

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';
}


?>