setTemplateDir('../ihtml'); $smarty->setCompileDir('../compile'); $errorMsgs = []; $validazioneOk = true; $number = $_POST['number'] ?? ''; $email = $_POST['email'] ?? ''; $msg = ''; /** * Inserisce i dati trasmessi dal form ($email e $number) nella tabella */ function insertDataOnTable(mysqli $mysql, string $email, string $number): bool { $esitoInserimento = false; $query = "INSERT INTO Contact (email, telefono) VALUES ('$email', '$number');"; try { $mysql->query($query); $esitoInserimento = true; } catch (Exception $e) { echo $e->getMessage(); } return $esitoInserimento; } /** * controlla se ci sono errori sulla digitazione dei dati messi nel form */ function controlloErrori(string $email, string $number, array &$errorMsgs) { if(!is_numeric($number) || strlen($number) != 10) { $errorMsgs['number'] = 'Numero di telefono non corretto'; }else { //$errorMsgs['number'] = ''; } if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { $errorMsgs['email'] = 'Email non valida'; } else { //$errorMsgs['email'] = ''; } $validazioneOk = count($errorMsgs) == 0; return $validazioneOk; } /** * controlla se nelle 24 ore prima non sia stata messa nel campo email la stessa mail per evitarne lo spam */ function controlloSpamEmail(mysqli $connection, string $email) { $spam = false; $query = "SELECT email, dtm_richiesta FROM Contact WHERE email = '$email' AND dtm_richiesta BETWEEN DATE_SUB(NOW(), INTERVAL 1 DAY) AND NOW();"; $result = $connection->query($query); $rowcount=mysqli_num_rows($result); if ($rowcount > 0) { $spam = true; } return $spam; } if($_SERVER['REQUEST_METHOD'] === 'POST') { $validazioneOk = controlloErrori($email, $number, $errorMsgs); if($validazioneOk) { try { $conn = new mysqli('127.0.0.1', 'root', '', 'contact_db'); } catch (Exception $e) { die($e->getMessage()); } if(controlloSpamEmail($conn, $email)) { $smarty->display('avviso.tpl'); exit; } $esitoInserimento = insertDataOnTable($conn, $email, $number); if($esitoInserimento == true) { $smarty->display('conferma.tpl'); exit; } } } $smarty->assign('cellNumber', $number); $smarty->assign('email', $email); $smarty->assign('formMsg', $msg); $smarty->assign('errorMsgs', $errorMsgs); $smarty->display('contact.tpl'); ?>