Un’applicazione molto semplice per prendere confidenza con il PHP e le sue potenzialità. Proviamo ad inviare una mail, compilando una form con i dati necessari classici.
La form è realizzata con Bootstrap ma ovviamente il lettore può semplificare la sintassi html/css con elementi tag standard. Se utilizzate un sistema locale basato su Wampp per gestire Apache e i vari supporti software, vi occorrerà un server mail, magari fantoccio per simulare soltanto l’invio delle mail. Un esempio valido e semplice ancora aggiornato è FakeSmtpServer. Richiede la Java SDK installata sul pc dove abbiamo il nostro Wampp/Xampp. E’ scritto in Java con Spring ed è senza istallazione. Lo trovate qui https://github.com/gessnerfl/fake-smtp-server con l’accortezza di modifica il file php.ini del server Apache dove va sostituita la voce smtp_port = 8025 alal standard 25.
Il codice della pagina HTML. Potete chiamare il file form.php
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>FORM EMAIL</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body>
<div class="container bg-light col-lg-7 col-md-12 m-auto p-5">
<H1 class="text-primary text-center">Maschera Invio Email</H1>
<br/><p class="fs-4">In questo form abbiamo utilizzato css Bootstrap con i tag del Form spiegati in questa pagina: <a href="https://getbootstrap.com/docs/5.1/forms/overview/" target="blank">https://getbootstrap.com/docs/5.1/forms/overview/</a></p>
<form name="form1" action="invia_email.php" method="POST">
<label class="text-info">Email del Destinatario</label><br/>
<input type="email" name="email" class="form-control " required size="30" maxlength="50">
<br/>
<label class="text-info">Oggetto del messaggio</label><br/>
<input type="text" name="oggetto" class="form-control " required size="50" maxlength="100">
<br/>
<label class="text-info">Contenuto del messaggio</label><br/>
<textarea required rows="10" class="form-control" name="contenuto" cols="80" maxlength="800" >
</textarea>
<br/>
<input type="submit" class="btn btn-primary" data-toggle="tooltip" data-placement="top" title="Conferma Invio" value="INVIA EMAIL">
<input type="reset" class="btn btn-secondary" value="Cancella">
</form>
</div>
<!-- librerie js bootstrap -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>
Il listato invece del codice PHP col file invio_mail.php
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>INVIO EMAIL</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
</head>
<body>
<div class="container col-8 m-auto p-5">
<?php
// --- leggo le informazioni sul POST ----
$email = $_POST['email'];
$oggetto= $_POST['oggetto'];
$contenuto=$_POST['contenuto'];
$mittente="From: alfredo.centinaro@gmail.com"; // inserire qui l'email del mittente
if(mail($email, $oggetto, $contenuto, $mittente))
{
echo "<h2 class='text-primary'>Email inviata correttamente a: $email</h2>";
}
else
{
echo "Errore invio email!!!";
}
?>
</div>
<!-- librerie js bootstrap -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>Il risultato sul nostro server di posta fasullo. Guardate bene il campo From in alto con admin@wampserver.invalid che può essere cambiato sempre sul file php.ini. Ogni volta si modifica il file php.ini. ricordate di resettare il server apache.

Qui non abbiamo previsto forme e misure di sicurezza, caratteristica fondamentale quando abbiamo elementi di input. Non vogliamo approfondire molto il tema in questo post ma un primo approccio di sicurezza semplice è quello di filtrare i caratteri speciali sostituendo le righe del prelievo $_POST con l’aggiunta della funzione htmlspecialchars() che filtra preliminarmente i dati inseriti.
$email = htmlspecialchars($_POST['email']);
$oggetto= htmlspecialchars($_POST['oggetto']);
$contenuto=htmlspecialchars($_POST['contenuto']);Ultima modifica 17 Novembre 2023


