Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi

Visualizza un messaggio singolo
Vecchio 04-11-07, 19:56   #1 (permalink)
MZ
Moderatore
 
L'avatar di MZ
 
Data di registrazione: Jun 2005
Ubicazione: Lecce-Torino
Messaggi: 509
[Script] Form per invio mail con controllo

Invio web form da modulo in php con controllo campi by pikadilly

Dopo gestione di un form per l'invio mail un altro script/tutorial per la gestione di un form per l'invio di mail con un controllo

Anche questo come il precedente è a cure di Pikadilly.


"Abbiamo visto come creare una piccola form per i contatti in xhtml e php che restituisce un errore se i campi
"body", ovvero corpo del messaggio, e "mail", ovvero l'e-mail, non sono compilati. Ma questo metodo prevede l'impiego di due pagine distinte:quella della form, che chiamai "modulo.html", e quella in php che processa i dati inseritinella form, chiamata "invio.php".
Se volessimo utilizzare invece un unica pagina che fa tutto, modulo, controllo e invio?
Ebbene si dovrà prima di tutto creare una pagina con estensione php, quindi la pagina "modulo.html" per questi fini è inutilizzabile, in seguito si dovranno apportare delle modifiche alla pagina in cui
abbiamo creato la form.
1.Questo è il codice che va inserito prima della form e serve a definire le frasi di errore e ad inviare la mail.


Codice PHP:
<?php
  define
("_destinatario","nome@dominio.it");
  
define("errore_oggetto_predefinito","Non ha inserito un oggetto!");
  
define("errore_email_predefinito","L'indirizzo email che ha inserito non è corretto!");
  
define("errore_messaggio_predefinito","Il messaggio è vuoto!");
  
define("segnaposto_oggetto","Inserisca un oggetto");
  
define("segnaposto_email","Inserisca la Sua email");
  
define("segnaposto_messaggio","Inserisca il Suo messaggio");
function 
generaModulo($oggetto=segnaposto_oggetto,$email=segnaposto_email,$messaggio=segnaposto_messaggio,$errore_oggetto="",$errore_email="",$errore_messaggio=""){
?>
 [left]2. Di seguito invece c'è la form con i vari controlli in php, come si vede ho integrato benissimo 
il codice xhtml della struttura della form con i vari codici php.[/left]
 <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="form1">
 <p>Per ricevere informazioni e preventivi potete compliare la form sottostante. Invieremo al pi&ugrave; presto una risposta.</p>
<table>
<tr>
<td>Il Suo indirizzo e-mail*</td>
<td><label>
<?php if (!$errore_email=="") { echo"<span><strong>$errore_email</strong></span>";} else { echo"";}?><br />
<input name="email" type="text" id="mail" value="<?php echo $email;?>" />
</label></td>
</tr>
<tr>
<td>Oggetto*</td>
<td><label>
<?php if (!$errore_oggetto=="") { echo"<span><strong>$errore_oggetto</strong></span>";} else { echo"";}?><br />
<input name="oggetto" type="text" id="oggetto" value="<?php echo $oggetto;?>" />
</label></td>
</tr>
<tr>
<td>Messaggio*</td>
<td>
<?php if (!$errore_messaggio=="") { echo"<span><strong>$errore_messaggio</strong></span>";} else { echo"";}?><br />
<textarea name="messaggio" cols="30" rows="5" id="messaggio" ><?php echo $messaggio;?></textarea>
</td>
</tr>
<tr>
<td><label>*I campi sono obbligatori
  
</label></td>
<td><label>
<input type="submit" value="Invia il modulo" name="bottone_invio" /> <input type="reset" name="cancella" id="cancella" value="Ripristina" />
</label></td>
</tr>
</table>
  
</form>
3.Questo controlla che la mail inserita non sia fasulla o scritta in malo modo.
Codice PHP:
<?php
  
}
  function 
isValidEmail($email){
  
$pattern "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
  
  if (
eregi($pattern$email)){
  return 
true;
  }
  else {
  return 
false;
  } 
  }
 function 
controlla($stringa,$lunghezza){
  if (
strlen($stringa)<$lunghezza){
  return 
true;
  }
  else {
  return 
false;
  } 
  }
 
?>
4.Questo è ciò che andremo a ricevere e nel caso ci sia un errore la mail non parte.

Codice PHP:
<?php if (!isset($_POST['bottone_invio']))  {
  
generaModulo();
  } else  {
  
$oggetto = isset($_POST['oggetto']) ? stripslashes ($_POST['oggetto']) : "";
  
$email   = isset($_POST['email'])   ? stripslashes ($_POST['email']) : "";
  
$messaggio = isset($_POST['messaggio']) ? stripslashes ($_POST['messaggio']) : "";

  
$error  false;
  
$errore_oggetto '';
  
$errore_email '';
  
$errore_messaggio '';
  if (
controlla($oggetto,1) or ($oggetto==segnaposto_oggetto)) {
  
$error true;
  
$errore_oggetto errore_oggetto_predefinito;
  }
  
  
  if (!
isValidEmail($email)){
  
$error true;
  
$errore_email errore_email_predefinito;
  }
  if ((
controlla($messaggio,1)) or ($messaggio==segnaposto_messaggio)) { 
  
$error true;
  
$errore_messaggio errore_messaggio_predefinito;
  }
  if (
$error){
  
generaModulo($oggetto,$email,$messaggio,$errore_oggetto,$errore_email,$errore_messaggio);
  }
  else {
  
?>
5. Se va a buon fine avremo stampato a video il riepilogo dopo l'invio

Codice PHP:
<p>
  Ha inserito i seguenti dati:<br />
  <br />
  <b>Oggetto:</b> <?php echo $oggetto ?>
  <br />
  <b>Email:</b> <?php echo $email ?>
  <br />
  <b>Messaggio:</b> <?php echo $messaggio ?>
  <br />
</p>
6. Questo è quello che ci arriverà e il ringraziamento per averci contattato.[/left]
Codice PHP:
<?php 
if ($telefono == segnaposto_telefono$telefono="-";
mail(_destinatario,"contatto dal tuo sito","Oggetto: $oggetto\nEmail: $email\nMessaggio:$messaggio","From:$email");
echo
"<p>Grazie per aver inviato il messaggio</p>";?>
<?php  
}  }

?>
Grazie a Pikadilly
Files allegati
Tipo di file: zip webmailcontrollo.zip (4.1 KB, 460 visite)
__________________

Ultima modifica di MZ : 04-11-07 20:02.
MZ non in linea   Rispondi citando