Ti sei perso il VI Convegno gt? Forse puoi rimediare... www.convegnogt.it X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql > Scripting e Risorse utili
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 04-11-07, 20:56   #1 (permalink)
MZ
Moderatore
 
L'avatar di MZ
 
Data di registrazione: Jun 2005
Ubicazione: Lecce-Torino
Messaggi: 508
[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, 365 visite)
__________________

Ultima modifica di MZ : 04-11-07 21:02.
MZ non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 04-11-07, 21:36   #2 (permalink)
Esperta
 
L'avatar di pikadilly
 
Data di registrazione: Dec 2006
Ubicazione: Old City
Messaggi: 6,290
Invia un messaggio tramite ICQ a pikadilly


Questo tipo di applicazione è molto utile perchè non solo impiega una sola pagina ma evita che si inseriscano indirizzi mail con caratteri non proprio da indirizzo, inoltre gli errori che restituisce nel caso di mali inserimenti appaiono sopra i campi. Può essere usato benissimo anche per i commenti da far pervenire attraverso mail.
Ovviamente non ha un errore nemmeno nella sintassi xhtml

Ultima modifica di pikadilly : 04-11-07 21:38.
pikadilly non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 26-06-08, 13:34   #3 (permalink)
User
 
L'avatar di franc3s
 
Data di registrazione: Jul 2007
Ubicazione: Genova
Messaggi: 72
Ciao, bellissima form complimenti!

Mi rendo conto che sto x fare una domanda imbarazzantemente sciocca, ma non lo so

Io ho bisogno di fare una form quasi come questa. A errore deve inserire una label senza cambiare pagina, e a conferma deve restare nella stessa pagina (cancellareil modulo, ok, ma tenere tutto il resto di quel layout).. inoltre devo inserirla su estensione .html

Ditemi, dimmi, che c'è una soluzione...
franc3s non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 26-06-08, 14:40   #4 (permalink)
Esperta
 
L'avatar di pikadilly
 
Data di registrazione: Dec 2006
Ubicazione: Old City
Messaggi: 6,290
Invia un messaggio tramite ICQ a pikadilly
Ma questa ad errore non cambia pagina, ti segna rosso i campi che non hai riempito bene. Anche dopo l'invio non cambia pagina, è sempre la stessa...Per l'estensione in html credo che non so aiutarti, questa form richiede php, ma se conosci qualche tecnica di url rewrite puoi provare a renderla html.
pikadilly non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 26-06-08, 14:43   #5 (permalink)
User
 
L'avatar di franc3s
 
Data di registrazione: Jul 2007
Ubicazione: Genova
Messaggi: 72
Grazie Pikadilly,
si puo fare con htacces l'interpretazione del php su html, solo che su Register non funziona mannaggia (altrove si, appena provato). Ho aperto un topic piu specifico.
Grazie della risposta!
franc3s non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 27-06-08, 12:36   #6 (permalink)
User
 
L'avatar di franc3s
 
Data di registrazione: Jul 2007
Ubicazione: Genova
Messaggi: 72
AutoEdit. sorry!!! Cancellate pure!

Ultima modifica di franc3s : 27-06-08 12:45.
franc3s non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 28-02-09, 15:33   #7 (permalink)
User
 
Data di registrazione: May 2007
Messaggi: 58
Riprendo questo topic perchè avrei bisogno di un piccolo aiuto, nell'implementazione di un captcha. Nella mia precedente form utilizzavo il codice di seguito nella pagina "invia.php", per confrontare le due stringhe:

Codice:
session_start();
$utente = $_POST['captcha'];
$validato = $_SESSION['veri'];

--------------------------
if($utente == $validato){
}else{
ecc...
ho provato a riadattarlo ma non effettua alcun confronto del codice. Come posso fare? Vi ringrazio in anticipo
__________________
Il sito dedicato al pc!
Chrys non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 04-04-09, 22:02   #8 (permalink)
User
 
Data di registrazione: Mar 2006
Ubicazione: cesena
Messaggi: 121
Question e con allegati in mail?


Ultima modifica di Andrez : 03-07-09 20:25.
stefana non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 06-06-09, 19:11   #9 (permalink)
User
 
Data di registrazione: Apr 2009
Messaggi: 18
aggiungere campi

Ciao,
innanzitutto complimenti per lo script.
Se volessi aggiungere dei campi al form e renderli obbligatori, cosa dovrei modificare?
Ho provato ad aggiungere il campo nome ed il campo cognome così:
Codice PHP:
define("errore_nome_predefinito","Non ha inserito il nome!");
define("errore_cognome_predefinito","Non ha inserito il cognome!");
define("segnaposto_nome","Inserisca il Suo nome");
define("segnaposto_cognome","Inserisca il Suo cognome");
function 
generaModulo($oggetto=segnaposto_oggetto,$email=segnaposto_email,$messaggio=segnaposto_messaggio,$nome=segnaposto_nome,$cognome=segnaposto_cognome,$errore_oggetto="",$errore_email="",$errore_messaggio="",$errore_nome="",$errore_cognome=""){ 
e poi:
Codice PHP:
<tr>
    <td>Nome*</td>
    <td><label>
    <?php if (!$errore_nome=="") { echo"<span><strong>$errore_nome</strong></span>";} else { echo"";}?><br />
      <input name="nome" type="text" id="nome" value="<?php echo $nome;?>" />
    </label></td>
  </tr> 
  <tr>
    <td>Cognome*</td>
    <td><label>
    <?php if (!$errore_cognome=="") { echo"<span><strong>$errore_cognome</strong></span>";} else { echo"";}?><br />
      <input name="nome" type="text" id="cognome" value="<?php echo $cognome;?>" />
    </label></td>
  </tr>
E ancora:
Codice PHP:
<?php if (!isset($_POST['bottone_invio']))  {
    
generaModulo();
} else  {
      
$nome = isset($_POST['nome']) ? stripslashes ($_POST['nome']) : "";
      
$cognome = isset($_POST['cognome']) ? stripslashes ($_POST['cognome']) : "";
      
$oggetto = isset($_POST['oggetto']) ? stripslashes ($_POST['oggetto']) : "";
      
$email   = isset($_POST['email'])   ? stripslashes ($_POST['email']) : "";
      
$messaggio = isset($_POST['messaggio']) ? stripslashes ($_POST['messaggio']) : "";
  
      
$error  false;
      
$errore_nome '';
      
$errore_cognome '';
      
$errore_oggetto '';
      
$errore_email '';
   
$errore_messaggio '';
         if (
controlla($oggetto,1) or ($oggetto==segnaposto_oggetto)) {
          
$error true;
          
$errore_oggetto errore_oggetto_predefinito;
      }
   
      if ((
controlla($nome,1)) or ($nome==segnaposto_messaggio)) { 
          
$error true;
          
$errore_nome errore_nome_predefinito;
      }
      
      if ((
controlla($cognome,1)) or ($cognome==segnaposto_messaggio)) { 
          
$error true;
          
$errore_cognome errore_cognome_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($nome,$cognome,$oggetto,$email,$messaggio,$errore_nome,$errore_cognome,$errore_oggetto,$errore_email,$errore_messaggio);
      }
      else {
   
?>
   <p>
   Ha inserito i seguenti dati:<br />
   <br />
   <b>Nome:</b> <?php echo $nome ?>
   <br />
   <b>Cognome:</b> <?php echo $cognome ?>
   <br />
   <b>Oggetto:</b> <?php echo $oggetto ?>
   <br />
   <b>Email:</b> <?php echo $email ?>
   <br />
   <b>Messaggio:</b> <?php echo $messaggio ?>
   <br />
   </p>
          <?php
ma se provo a far generare l'errore mi compare la frase di errore dell'email nel campo nome, la frase dell'oggetto nel campo cognome...
Cosa sbaglio?
Grazie
adwmaster non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 03-07-09, 14:19   #10 (permalink)
User
 
Data di registrazione: Mar 2009
Messaggi: 47

Ultima modifica di Andrez : 03-07-09 20:25.
BlueDragon89 non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 19-08-09, 19:02   #11 (permalink)
User Newbie
 
Data di registrazione: Aug 2009
Messaggi: 3
Salve ho provato a inserire il form e spedirmi una e-mail ma perchè mi dice di impostare smtp?
Premetto che provo tutto in locale dopo aver impostato il server remoto e questo è quello che appare dopo che provo a inviare l'email

Notice: Use of undefined constant segnaposto_telefono - assumed 'segnaposto_telefono' in C:..... alla linea 122

Notice: Undefined variable: telefono in C: percorso...alla linea 122

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost:9000" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set oppure mi dice di settarlo in C: sul server remoto

errore alla linea 122 e 123...io ho cambiato l'indirizzo di posta solo nella prima parte devo fare altro? Ringrazio chiunque in anticipo

Ultima modifica di Leonov : 20-08-09 21:25. Motivo: Maiuscola. ;-)
rezaur non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 19-08-09, 22:44   #12 (permalink)
User Newbie
 
Data di registrazione: Aug 2009
Messaggi: 3
Grazie a tutti ma ho risolto era solo la configurazione smtp nel file php.ini che non avevo impostato. Ciao e complimenti davvero utile

Ultima modifica di Leonov : 20-08-09 21:26. Motivo: Maiuscola.
rezaur non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 19-08-09, 22:50   #13 (permalink)
User Newbie
 
Data di registrazione: Aug 2009
Messaggi: 3
Purtroppo non ne capisco molto di php, ho solo un dubbio in locale tutto funziona...se io mettessi in linea il sito avrei bisogno anche del database o mi basta aver messo il modulo in una pagina con estensione php? Grazie per la risposta
rezaur non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 25-08-09, 23:02   #14 (permalink)
Moderatore
 
L'avatar di Thedarkita
 
Data di registrazione: Aug 2006
Ubicazione: Messina
Messaggi: 6,205
Invia un messaggio tramite Skype a Thedarkita
Ciao rezaur,

Lo script non utilizza database, pertanto non è necessario.
Thedarkita non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Vecchio 20-12-09, 21:36   #15 (permalink)
Moderatore
 
L'avatar di expertwers
 
Data di registrazione: Oct 2009
Ubicazione: Pesaro
Messaggi: 148
Scusate, riapro questo bel topic per due o tre domande:

Se volessi che dopo il click su "Invia", ci fosse prima un ulteriore messaggio di conferma del tipo: Confermi l'invio della mail? ad esempio con un bottone che confermi e invii definitivamente la mail.. ad esempio dopo aver cliccato su Invio sotto appaia un bottone con scritto "Confermi?"

secondo: per inserire un captcha come potrei fare?

e per inserire altri campi come checkbox o menu a tendina, potreste farmi un esempio pratico?

e ultima cosa semplice semplice.. per inserire nella pagina di ringraziamento un redirect, quindi nella pagina che appare dopo l'invio effettuato, conviene usare un metatag per questo?

Grazie

Ultima modifica di expertwers : 20-12-09 22:28.
expertwers non in linea  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Segnalo this Post!OKNO this Post!
Rispondi citando
Rispondi


Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 05:26.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.