From c98ddbd9cb6c63f7effd45829e1ca9ff78a3a6b2 Mon Sep 17 00:00:00 2001 From: filippo.bertilotti <filippobertilotti@gmail.com> Date: Fri, 03 May 2024 10:47:19 +0200 Subject: [PATCH] aggiunta specifica restituzione tipi alle functions --- htdocs/contact.php | 103 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 90 insertions(+), 13 deletions(-) diff --git a/htdocs/contact.php b/htdocs/contact.php index e61585c..1f5505c 100644 --- a/htdocs/contact.php +++ b/htdocs/contact.php @@ -6,28 +6,105 @@ $smarty->setTemplateDir('../ihtml'); $smarty->setCompileDir('../compile'); - $error = []; - $number = $_GET['number'] ?? ''; - $email = $_GET['email'] ?? ''; + $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): bool { + if(!is_numeric($number) || strlen($number) != 10) { + $errorMsgs['number'] = 'Numero di telefono non corretto'; + }else { + //$errorMsgs['number'] = ''; + } - if(!is_numeric($number) || strlen($number) != 10) { - $error['number'] = 'Numero di telefono non corretto'; - }else { - $error['number'] = ''; + if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { + $errorMsgs['email'] = 'Email non valida'; + } else { + //$errorMsgs['email'] = ''; + } + + $validazioneOk = count($errorMsgs) == 0; + + return $validazioneOk; } - if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { - $error['email'] = 'Email non valida'; - } else { - $error['email'] = ''; + /** + * 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): bool { + $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('error', $error); + $smarty->assign('formMsg', $msg); + + $smarty->assign('errorMsgs', $errorMsgs); $smarty->display('contact.tpl'); + + ?> \ No newline at end of file -- Gitblit v1.8.0