Ciao, dovrei validare un checkbox per la GDPR. Il checkbox deve essere ovviamente flaggato per validare il form, ma non so come fare. Questo il mio codice:
Form
Codice PHP:
<form action="<?php basename($_SERVER['PHP_SELF']) ?>" method="post" id="contactForm"> <ul> <li><label for="name">Nominativo: (*)</label> <input type="text" name="nome" id="nome" tabindex="1" value="<?php if ( isset( $missing ) && isset($nome) ) echo $nome; ?>" class="<?php if (isset( $missing ) && in_array('nome',$missing)) echo 'error'; ?>"/> </li> <li><label for="email">Email: (*)</label> <input type="text" name="email" id="email" tabindex="2" value="<?php if ( isset( $missing ) && isset($email) ) echo $email; ?>" class="<?php if (isset( $missing ) && in_array('email',$missing)) echo 'error'; ?>"/> </li> <li><label for="tel">Telefono: (*)</label> <input type="text" name="tel" id="tel" tabindex="3" value="<?php if ( isset( $missing ) && isset($tel) ) echo $tel; ?>" class="<?php if (isset( $missing ) && in_array('tel',$missing)) echo 'error'; ?>"/> </li> <li><label for="societa">Societa':</label> <input type="text" name="societa" id="societa" tabindex="4" value="<?php if ( isset( $missing ) && isset($societa) ) echo $societa; ?>" class="<?php if (isset( $missing ) && in_array('societa',$missing)) echo 'error'; ?>"/> </li> <li><label for="subject">Oggetto: (*)</label> <input type="text" name="subject" id="subject" tabindex="5" value="<?php if ( isset( $missing ) && isset($subject) ) echo $subject; ?>" class="<?php if (isset( $missing ) && in_array('subject',$missing)) echo 'error'; ?>"/> </li> <li><label for="message">Messaggio: (*)</label> <textarea name="messaggio" id="messaggio" rows="8" cols="40" tabindex="6" class="<?php if (isset( $missing ) && in_array('messaggio',$missing)) echo 'error'; ?>"><?php if ( isset( $missing ) && isset($messaggio) ) echo $messaggio; ?></textarea> </li> <li><label for="privacy"> (*)</label> <input type="checkbox" name="privacy" id="privacy" tabindex="7" value="<?php if ( isset( $missing ) && isset($privacy) ) echo $privacy; ?>" class="<?php if (isset( $missing ) && in_array('privacy',$missing)) echo 'error'; ?>"/> Confermo di avere letto, compreso e accettato i termini e le condizioni della <a href="http://www.iubenda.com/privacy-policy/7952">privacy policy</a> </li> <li> <input type="submit" name="submit" id="submit" value="INVIA" class="button" tabindex="7" /> </li> </ul></form>
Pagina contatti
Codice PHP:
<?php require_once 'settings.php'; if(isset($_POST['submit'])){ foreach ($_POST as $key => $value){ //elimina eventuali spazi aggiuntivi $temp = $value ? trim($value) : ''; //se � richiesta ma vuota aggiungila all'array missing if(!strlen ($temp) && in_array($key, $required)){ array_push($missing, $key); } //se il campo � aspettato, setta la variabile associata elseif(in_array($key, $expected)){ ${$key} = htmlentities($temp); //in questo caso crea $nome, $email, $tel, $societa, $subject, $messaggio, $privacy } } if ( empty($missing) ){ //Se l'array missing � vuoto, vuol dire che sono stati inseriti i valori //obbligatori. Costruisco il messaggio $contenuto_email = "Nome: $nome\n\n"; //Queste variabili sono create nel passaggio precedente $contenuto_email .= "Email: $email\n\n"; $contenuto_email .= "Tel: $tel\n\n"; $contenuto_email .= "Societ�: $societa\n\n"; $contenuto_email .= "Oggetto: $subject\n\n"; $contenuto_email .= "Messaggio:\n $messaggio\n\n"; $contenuto_email .= "Privacy Policy: $privacy\n\n"; //limita la lunghezza a 70 caratteri per la compatibilit� $contenuto_email = wordwrap($contenuto_email,70); $email=$email.",info@miaemailit"; //invia l'email $mail_sent = mail($email,$oggetto,$contenuto_email, 'From: '.$email); $info_message = '<h3 class="ok_box">' . $info_mail_sent . '</h3>'; if($mail_sent){ //Se l'email viene inviata l'array missing non serve pi� quindi lo svuoto unset($missing); } } } //se non sono stati immessi campi obbligatori if ( isset( $_POST['submit'] ) && isset($missing) && !empty($missing)) : $info_message = '<p class="error_box">' . $error_missing_fields . '</p>'; elseif ($_POST['submit'] && !$mail_sent) : //se ci sono stati problemi con l'invio della mail da parte del server $info_message = '<p class="error_box">' . $error_mail_server . '</p>'; endif; //Mostra una notifica sia d'errore che di conferma if ( isset( $info_message ) && strlen( $info_message ) ) echo $info_message; //Include il form require_once 'form.php';
?>
Settings
Codice PHP:
<?phpini_set('display_errors', 'On');ini_set('error_reporting', E_ALL & ~E_NOTICE);//email del destinatario del form$destinatario = 'info@miaemail.it';//oggetto dell'email inviata$oggetto = 'Mail dal modulo contatti sito';
//Messaggio d'errore per campi mancanti//Error message for missing fields$error_missing_fields= 'Per favore, completate tutti i campi del form indicati';//Messaggio d'errore del server mail//Error message for mail server$error_mail_server = 'Siamo spiacenti. Si è verificato un errore e l\'email non è stata inviata. Riprovate più tardi.';//Messaggio di conferma invio mail//Info message for correct mail sent$info_mail_sent = 'L\'email � stata inviata correttamente!.';
/* Se il form � stato inviato, elenca i campi che ci si aspetta di ricevere. Evita che qualcuno possa aggiungere dei campi non previsti */$expected = array('nome','email','tel','societa','subject','messaggio','privacy');//imposta i campi obbligatori$required = array('nome','email','tel','subject','messaggio','privacy');//crea un array vuoto per i campi mancanti$missing = array(); ?>