Ciao a tutti,
sto provando a creare un form per l'invio di un feedback o comunque una sorta di pagina per inviare dei commenti una una casella di posta.
Ho quasi concluso lo script, il quale riesce anche ad inviare l'e-mail (mi arriva nella casella di posta), però mi arriva vuoto...
Ci sto sbattendo la testa da una mezz'ora, ma non riesco a capire il perché, mi potreste per favore dare qualche indicazione? (io ho cominciato a programmare in php da poco).
Questi i due file che compongono il form:
File controllo.php
Codice PHP:
<?php
if (!isset($_POST['submit']))
{
include("form.php");
}
else
{
// Controllo sul Nome e Cognome
if (empty($_POST['nome']))
{
$blank['nome'] = "vuoto";
}
elseif (!preg_match("/^[A-z. ]{3,30}$/",$_POST['nome']))
{
$formats['nome'] = "errato";
}
// Controllo sulla e-mail
$campo = filter_var($_POST['mail'], FILTER_SANITIZE_EMAIL);
$fluttuante = strpos($_POST['mail'], '.');
if (empty($_POST['mail']))
{
$blank['mail'] = "vuoto";
}
elseif (!preg_match("/^[A-Za-z.@_0-9-]{3,45}$/",$_POST['mail']))
{
$formats['mail'] = "errato";
}
elseif ($fluttuante == 0)
{
$formats['mail'] = "errato";
}
elseif(!filter_var($campo, FILTER_VALIDATE_EMAIL))
{
$formats['mail'] = "errato";
}
// Controllo commento
$_POST['conto_commento'] = strlen($_POST['commento']);
if (empty($_POST['commento']))
{
$blank['commento'] = "vuoto";
}
elseif (($_POST['conto_commento']) > 5000)
{
$formats['conto_commento'] = "errato";
}
$commento = htmlspecialchars($_POST['commento']);
if (@sizeof($blank) > 0 or @sizeof($formats) > 0)
{
include("form.php");
}
// Qui parte l'else per l'invio dei dati
else
{
$from = $_POST['nome'];
$e_mail = $_POST['mail'];
$message = $commento;
mail("mia_mail@gmail.com", "Nome: $from", "Da: $e_mail", "Testo: $message");
echo "Grazie {$_POST['nome']}, il tuo commento è stato spedito correttamente";
}
}
?>
File di partenza form. php
Codice PHP:
<?php
echo "<form action=\"controllo.php\" method=\"post\">";
echo "<table align='center'>";
if(isset($_POST['nome']))
{
$valore = $_POST['nome'];
}
else
{
$valore = "";
}
echo "<tr><th>Nome e/o Cognome:
</th></tr>
<tr><td align='center'><input type='text' name='nome' size='21' maxlenght='21' value='$valore'></td>";
if (@sizeof($blank['nome']) > 0)
{
echo "<tr><td align='center'>Il seguente campo è obbligatorio. </td></tr>";
}
if (@sizeof($formats['nome']) > 0)
{
echo "<tr><td align='center'>Il seguente campo non ha un formato corretto. </td></tr>";
}
echo "</tr>";
echo "<tr><td>
</td></tr>";
if(isset($_POST['mail']))
{
$valore = $_POST['mail'];
}
else
{
$valore = "";
}
echo "<tr><th>E-mail:
</th></tr>
<tr><td align='center'><input type='text' name='mail' size='21' maxlenght='21' value='$valore'></td>";
if (@sizeof($blank['mail']) > 0)
{
echo "<tr><td align='center'>Il seguente campo è obbligatorio. </td></tr>";
}
if (@sizeof($formats['mail']) > 0)
{
echo "<tr><td align='center'>Il seguente campo non ha un formato corretto. </td></tr>";
}
echo "</tr>";
if(isset($_POST['commento']))
{
$valore_commento = $_POST['commento'];
}
else
{
$valore_commento = "";
}
echo "<tr><td>
</td></tr>";
echo "<tr><th>Commento:</th></tr><tr><td><textarea rows='15' name='commento' cols='60'>".$valore_commento."</textarea></td>";
if (@sizeof($blank['commento']) > 0)
{
echo "<tr><td align='center'>Il seguente campo è obbligatorio. </td></tr>";
}
if (@sizeof($formats['commento']) > 0)
{
echo "<tr><td align='center'>Il seguente campo non ha un formato corretto. </td></tr>";
}
if (@sizeof($formats['conto_commento']) > 0)
{
echo "<tr><td align='center'>Messaggio troppo lungo, puoi inserire massimo 5000 caratteri. </td></tr>";
unset($commento);
}
echo "<tr><td>
</td></tr>";
echo "<tr><td align='right'><input type='submit' name='submit' value='Invia il modulo'/></td></tr>";
echo "</table>";
echo "</form>";
?>
Lo script in pratica fa un controllo sui valori inseriti e se tutto a posto va avanti e passa ad utilizzare la funzione mail() ...che secondo me ho sbagliato a scrivere.
Nello script ancora non ho inserito un captcha, poiché non ho la più pallida idea di come fare, ma questa è un'altra storia...
Grazie in anticipo