codice invio mail - come migliorarlo e come dare avvisi

ciao, ho questo codice per l'invio mail. volevo sapere se poteva andare bene, come migliorarlo e come potere dare avvisi nel caso qualcosa venga compilato male o non venga compilato affatto.

grazie

<?php
         $modulo = @$_POST['oggetto'];
         
         $mail_mittente = $_POST['mail'];
         $mail_destinatario = "mail@gmail.com";
         $mail_oggetto = "Richiesta informazioni";
         $mail_corpo = "Azienda: ".$_POST['azienda']."\nSito: ".$_POST['sito']."\nNome: ".$_POST['nome']."\nPosizione: ".$_POST['posizione']."\nTelefono: ".$_POST['telefono']."\nMail: ".$_POST['mail']."\nTesto: ".$_POST['testo'];
         
         if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, "From: $mail_mittente"))
         {
         echo "<p>Messaggio inviato con successo.<br>
               Sarete ricontatti quanto prima.</p>";
         }
         else
         {
         echo "<p>Errore... Nessun messaggio inviato.</p>";
         } 
         ?>
inviato 8 anni fa
gabar-el
X 0 X

ehmm.... up up...

risposto 8 anni fa
gabar-el
X 0 X

Effettivamente dovresti effettuare un po' di controlli sui dati inseriti dall'utente. Ci sono mille modi per farlo e dipendono da come è organizzato il tuo sito. Infatto i messaggi di errore devono apparire all'interno della pagina che mostra il form per l'invio della mail. Questo form deve essere ripresentato all'utente in caso di errore, con i campi contenenti i valori precedentemente inseriti dall'utente.

Capirai quindi che non è semplice consigliarti come procedere poiché dipende da come mostri il form.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Beh, come gia ti hanno consigliato il primo passo è mettere dei controlli sull'effettiva completezza dei campi :)

Poi, eventualmente impostare alcune funzione: lunghezza minima nome e cognome, controllo sulla sintassi email, ecc....

e poi una gestione degli avvisi.

Potresti creare una classe e gestire tutto con gli oggetti; con la procedurale rischi di avere un codice... lunghissimo e orribile da vedere  ;)

risposto 8 anni fa
jbrozz
X 0 X

cavolo, la facevo più semplice. grazie comunque, appena ho tempo mi ci metto e provo a mettere giù qualcosa, poi magari mi rifaccio vivo...

 :bye:

risposto 8 anni fa
gabar-el
X 0 X

:) se hai bisogno siamo qui :)

risposto 8 anni fa
jbrozz
X 0 X

ho fatto varie ricerche e sto cercando di implementare vari controllo, ma non capisco come poter ripresentare il form con errrore connesso, con un php_self?  :-X

grazie

risposto 8 anni fa
gabar-el
X 0 X

ho cercato di carpire da alcuni script, ma mi sa che mi son impantanato....

all'invio del form mi torna un messaggio che dice che è stato inviato, ma non fa nessun controllo e invia anche se non scrivo nulla.

al momento sto provando la verifica sul solo campo azienda.

pagina che processa:

<?php
   function print_form(){
?>
<form name="contatti" method="post" action="<?php echo $PHP_SELF ?>">
   <fieldset>
   <legend>Richiedi informazioni</legend>
   <div class="form">
      <label for="azienda">azienda:</label><br />
      <input type="text" name="azienda" title="azienda" id="azienda" tabindex="12">
   </div>
   
   <div class="form">
      <input type="submit" title="invia il modulo" id="submit" value="Invia" tabindex="18">
      <input type="reset" title="cancella il modulo" id="reset" value="Cancella" tabindex="19">
      <input type="hidden" name="submit" value="true">
   </div>
   
   </fieldset>
</form>
<?php
   }
function process_form(){
$modulo = @$_POST['oggetto'];
$mail_destinatario = "mail@gmail.com";
$mail_oggetto = "testo";
$mail_corpo = "Azienda: ".trim($_POST['azienda'])."\nSito: ".trim($_POST['sito'])."\nNome: ".trim($_POST['nome'])."\nPosizione: ".trim($_POST['posizione'])."\nTelefono: ".trim($_POST['telefono'])."\nMail: ".trim($_POST['mail'])."\nTesto: ".trim($_POST['testo']);

$thanksMessage = "<p>Messaggio inviato con successo.<br>
            Sarete ricontattati quanto prima.</p>";
            
$errors = array();

if (empty($_POST['azienda']) ) {
$errors[] = 'Non è stata inserita l\'azienda';
}         



if (!mail($mail_destinatario, $mail_oggetto, $mail_corpo, "From: $mail_mittente"))
{
exit ("<p>Non è stato possibile spedire il messaggio.</p>");
}
else
{
echo '<p>'.$thanksMessage.'</p>';
print_form();
} 

}
?>

pagina base:
   <?php
   // contact form
   if (isset($_POST['submit']) && ('true' == $_POST['submit'])) { 
      // checks if the form is submitted and then processes it
       process_form(); 
   } else { 
      // else prints the form
       print_form(); 
   }
   
   ?>
risposto 8 anni fa
gabar-el
modificato 8 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda