Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Validazione campi di un form invio mail

    Ciao a tutti. Mi sono permesso di inserire questa domanda anche in Php, visto che potrebbe essere risolta con entrambe le metodologie, e visto che il codice è ibrido. Spero che questo non violi il regolamento del forum.
    Devo realizzare un form invio mail con controllo dei dati e più di un allegato.
    Fino ad oggi per l'invio email avevo usato questo form con controllo dati, ma senza la possibilità di inviare allegati.

    Codice PHP:
    <?php 
     
    $FriendName 
    $_POST['FriendName']; 
    $FriendEmail $_POST['FriendEmail']; 
    $Nome $_POST['Nome']; 
    $Cognome $_POST['Cognome']; 
    $Anni $_POST['Anni']; 
    $Professione $_POST['Professione']; 
    $Email $_POST['Email']; 
    $Commento $_POST['Commento']; 
    $massimo 500
    $string $_SERVER['QUERY_STRING']; 
     
    ?> 
    <html><head> 
    <script language="JavaScript" type="text/JavaScript"> 
    <!-- 
    function MM_findObj(n, d) { //v4.01 
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { 
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} 
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
      if(!x && d.getElementById) x=d.getElementById(n); return x; 

     
    function MM_validateForm() { //v4.0 
      var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; 
      for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); 
        if (val) { nm=val.name; if ((val=val.value)!="") { 
          if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); 
            if (p<1 || p==(val.length-1)) errors+='- '+nm+' deve contenere un indizzo Email valido.\n'; 
          } else if (test!='R') { num = parseFloat(val); 
            if (isNaN(val)) errors+='- '+nm+' must contain a number.\n'; 
            if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); 
              min=test.substring(8,p); max=test.substring(p+1); 
              if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n'; 
        } } } else if (test.charAt(0) == 'R') errors += '- Il campo '+nm+'  necessario.\n'; } 
      } if (errors) alert('Si sono verificati i seguenti errori:\n'+errors); 
      document.MM_returnValue = (errors == ''); 

    //--> 
    </script> 
    <style type="text/css"> 
    <!-- 
    body{  
       overflow:hidden  
       } 
    .Stile2 {color: #FF0000; text-align:} 
    .Stile3 { 
        font-size: 12px; 
        font-family: Arial; 

    .Stile5 { 
        color: #FFFFFF; 
        font-size: 2px; 

    </style> 
     
    <script type="text/javascript"> 
    var massimo = 700; 
    window.onload = function() 

        document.form1.conta.value = massimo; 

    function ContaCaratteri() 

        document.form1.conta.value = massimo - document.form1.Commento.value.length; 
        if (document.form1.Commento.value.length > massimo) 
        { 
            document.form1.Commento.value = document.form1.Commento.value.substr(0, massimo); 
            document.form1.conta.value = 0; 
            alert("Massimo " + massimo + " caratteri!"); 
        } 
     

    </script> 
     
     
    </head> 
    <body> 
    <?php 
    if (!$FriendEmail) { 
    ?> 
    <form name="form1" onSubmit="MM_validateForm('Nome','','R','Anni','','R','Email','','RisEmail','FriendName','','R','FriendEmail','','RisEmail','Commento','','R');return document.MM_returnValue" action="" method="POST"> 
    <div align="center"> 
    <table width="647" border="0" cellspacing="0" cellpadding="3"> 
      <tr> 
        <td align="right" valign="top"></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td><div align="right" class="Stile3">I campi <span class="Stile2">*</span> sono obbligatori </div></td> 
      </tr> 
      <tr>  
        <td width="178" align="right" valign="top"></td> 
        <td width="5"><font face="Verdana" size="2"></font></td> 
        <td width="108"><font face="Verdana" size="2">Nome:<span class="Stile2">*</span></font></td> 
        <td width="108"><font face="Verdana" size="2">Cognome:</font></td> 
        <td width="192"><font face="Verdana" size="2">Et:<span class="Stile2">*</span></font></td> 
      </tr> 
      <tr>  
        <td align="right" valign="top"><font face="Verdana" size="2">[b]I tuoi dati :[/b]</font></td> 
        <td></td> 
        <td><font face="Verdana"><input type="text" name="Nome" size="18"><font size="2"></font></font></td> 
        <td><font face="Verdana"><input type="text" name="Cognome" size="18"><font size="2"></font></font></td> 
        <td><font face="Verdana"> 
          <input type="text" name="Anni" size="4"> 
          <font size="2"></font></font></td> 
      </tr> 
      <tr> 
        <td align="right" valign="top"></td> 
        <td></td> 
        <td width="108"><font face="Verdana" size="2">Professione:</font></td> 
        <td><font face="Verdana" size="2">E-mail:<span class="Stile2">*</span></font></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td align="right" valign="top"></td> 
        <td></td> 
        <td><font face="Verdana"> 
          <input type="text" name="Professione" size="18"> 
          <font size="2"></font></font></td> 
        <td colspan="2"><font face="Verdana"><input type="text" name="Email" size="30"></font></td> 
        </tr> 
      <tr>  
        <td align="right" valign="top"><font face="Verdana" size="2">[b]Il tuo commento:[/b]</font></td> 
        <td></td> 
        <td colspan="3" valign="top">  
          <font face="Verdana"> 
          <textarea name="Commento" cols="56" rows="6" style="font-family: Trebuchet MS; font-size: 10pt" onKeyUp="ContaCaratteri()"></textarea> 
          <span class="Stile2">*</span>      </font></td> 
      </tr> 
      <tr>  
        <td align="right"></td> 
        <td><font face="Verdana" size="2"> </font> </td> 
        <td colspan="2">  
          <div align="left"><font face="Verdana"><font size="2"> </font> </font>    <font face="Verdana"> 
            <input type="text" size="4" name="conta" readonly> 
          </font><font face="Verdana" size="2">Caratteri rimanenti </font></div></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td colspan="5" align="right" class="Stile5">.</td> 
        </tr> 
      <tr> 
        <td align="right"></td> 
        <td></td> 
        <td><font face="Verdana"> 
          <input type="submit" value="Invia" name="Submit"> 
        </font></td> 
        <td></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td align="right"></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td align="right"></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td align="right" valign="top"><font face="Verdana" size="2">[b]Stai scrivendo a:[/b]</font></td> 
        <td></td> 
        <td><font face="Verdana"> 
          <input type="text" name="FriendName" size="18" value="Redazione Terr&agrave;" readonly=""> 
          <font size="2"> </font> </font> </td> 
        <td colspan="2"><font face="Verdana"> 
          <input type="text" name="FriendEmail" size="32" value="lamiaemail@gmail.com" readonly=""> 
          <font size="2" ></font></font></td> 
      </tr> 
    </table> 
    </div> 
    </form> 
    <?php 

    else { 
    if (
    $FriendEmail) { mail$FriendEmail"Messaggio da $Nome"$FriendName,  \n\n".$Commento ."\n\n$Nome"." "."$Cognome"." "."$Anni"." anni"." "."$Professione""From: $Email");  
     
      } 
     
     
    echo 
    "<center>

    <font face=Verdana size=2>Grazie <font color=red>
    $Nome</font>.  Il tuo commento sar pubblicato previa supervisione della redazione. 

    [url='java-script:window.close();']Chiudi questa finestra[/url]</font>"


    ?> 


    </p> 
    </body> 
    </html>

  2. #2
    Cercando nel forum ho visto che il modo più semplice per allegare più di un file è ricorrere alla classe PHPMailer. Bene... Ho provato a modificare il codice in questo modo:

    Codice PHP:
    <?php 
     
    $FriendName 
    $_POST['FriendName']; 
    $FriendEmail $_POST['FriendEmail']; 
    $Nome $_POST['Nome']; 
    $Cognome $_POST['Cognome']; 
    $Anni $_POST['Anni']; 
    $Professione $_POST['Professione']; 
    $oggetto $_POST['oggetto']; 
    $Email $_POST['Email']; 
    $Commento $_POST['Commento']; 
    $massimo 500
    $string $_SERVER['QUERY_STRING']; 
    $allegato_1 $_FILE['allegato_1'];  
    $allegato_2 $_FILE['allegato_2'];  
    $allegato_3 $_FILE['allegato_3'];  
     
    ?> 
    <html><head> 
    <script language="JavaScript" type="text/JavaScript"> 
    <!-- 
    function MM_findObj(n, d) { //v4.01 
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { 
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} 
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
      if(!x && d.getElementById) x=d.getElementById(n); return x; 

     
    function MM_validateForm() { //v4.0 
      var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; 
      for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); 
        if (val) { nm=val.name; if ((val=val.value)!="") { 
          if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); 
            if (p<1 || p==(val.length-1)) errors+='- '+nm+' deve contenere un indizzo Email valido.\n'; 
          } else if (test!='R') { num = parseFloat(val); 
            if (isNaN(val)) errors+='- '+nm+' must contain a number.\n'; 
            if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); 
              min=test.substring(8,p); max=test.substring(p+1); 
              if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n'; 
        } } } else if (test.charAt(0) == 'R') errors += '- Il campo '+nm+'  necessario.\n'; } 
      } if (errors) alert('Si sono verificati i seguenti errori:\n'+errors); 
      document.MM_returnValue = (errors == ''); 

    //--> 
    </script> 
    <style type="text/css"> 
    <!-- 
    body{  
       overflow:hidden  
       } 
    .Stile2 {color: #FF0000; text-align:} 
    .Stile3 { 
        font-size: 12px; 
        font-family: Arial; 

    .Stile5 { 
        color: #FFFFFF; 
        font-size: 2px; 

    </style> 
     
    <script type="text/javascript"> 
    var massimo = 700; 
    window.onload = function() 

        document.form1.conta.value = massimo; 

    function ContaCaratteri() 

        document.form1.conta.value = massimo - document.form1.Commento.value.length; 
        if (document.form1.Commento.value.length > massimo) 
        { 
            document.form1.Commento.value = document.form1.Commento.value.substr(0, massimo); 
            document.form1.conta.value = 0; 
            alert("Massimo " + massimo + " caratteri!"); 
        } 
     

    </script> 
     
     
    </head> 
    <body> 
    <?php 
    if (!$FriendEmail) { 
    ?> 
    <form name="form1" onSubmit="MM_validateForm('Nome','','R','Anni','','R','Email','','RisEmail','FriendName','','R','FriendEmail','','RisEmail','Commento','','R');return document.MM_returnValue" action="" method="POST"> 
    <div align="center"> 
    <table width="647" border="0" cellspacing="0" cellpadding="3"> 
      <tr> 
        <td align="right" valign="top"></td> 
        <td></td> 
        <td></td> 
        <td width="108"></td> 
        <td><div align="right" class="Stile3">I campi <span class="Stile2">*</span> sono obbligatori </div></td> 
      </tr> 
      <tr> 
        <td align="right" valign="top"><font face="Verdana" size="2">[b]Oggetto :[/b]</font></td> 
        <td></td> 
        <td><font face="Verdana"> 
          <input type="text" name="oggetto" size="18"> 
        </font></td> 
        <td></td> 
        <td></td> 
      </tr> 
      <tr>  
        <td width="178" align="right" valign="top"></td> 
        <td width="5"><font face="Verdana" size="2"></font></td> 
        <td colspan="2"><font face="Verdana" size="2">Nome e Cognome:</font></td> 
        <td width="192"><font face="Verdana" size="2">Et:<span class="Stile2">*</span></font></td> 
      </tr> 
      <tr>  
        <td align="right" valign="top"><font face="Verdana" size="2">[b]I tuoi dati :[/b]</font></td> 
        <td></td> 
        <td colspan="2"><font face="Verdana"><input type="text" name="Nome" size="28"><font size="2"></font></font><font face="Verdana"><font size="2"></font></font></td> 
        <td><font face="Verdana"> 
          <input type="text" name="Anni" size="4"> 
          <font size="2"></font></font></td> 
      </tr> 
      <tr> 
        <td align="right" valign="top"></td> 
        <td></td> 
        <td width="108"><font face="Verdana" size="2">Professione:</font></td> 
        <td><font face="Verdana" size="2">E-mail:<span class="Stile2">*</span></font></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td align="right" valign="top"></td> 
        <td></td> 
        <td><font face="Verdana"> 
          <input type="text" name="Professione" size="18"> 
          <font size="2"></font></font></td> 
        <td colspan="2"><font face="Verdana"><input type="text" name="Email" size="30"></font></td> 
        </tr> 
      <tr>  
        <td align="right" valign="top"><font face="Verdana" size="2">[b]Il tuo commento:[/b]</font></td> 
        <td></td> 
        <td colspan="3" valign="top">  
          <font face="Verdana"> 
          <textarea name="Commento" cols="56" rows="6" style="font-family: Trebuchet MS; font-size: 10pt" onKeyUp="ContaCaratteri()"></textarea> 
          <span class="Stile2">*</span>      </font></td> 
      </tr> 
      <tr>  
        <td align="right"></td> 
        <td><font face="Verdana" size="2"> </font> </td> 
        <td colspan="2">  
          <div align="left"><font face="Verdana"><font size="2"> </font> </font>    <font face="Verdana"> 
            <input type="text" size="4" name="conta" readonly> 
          </font><font face="Verdana" size="2">Caratteri rimanenti </font></div></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td colspan="5" align="right" class="Stile5">.</td> 
        </tr> 
      <tr> 
        <td colspan="5" align="right" class="Stile5"></td> 
      </tr> 
      <tr> 
        <td>Allega file:</td> 
        <td colspan="3"><input type="file" name="allegato_1" /></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td>Allega file:</td> 
        <td colspan="3"><input type="file" name="allegato_2" /></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td>Allega file:</td> 
        <td colspan="3"><input type="file" name="allegato_3" /></td> 
        <td></td> 
      </tr> 
     
      <tr> 
        <td colspan="5" align="right" class="Stile5"></td> 
      </tr> 
      <tr> 
        <td align="right"></td> 
        <td></td> 
        <td><font face="Verdana"> 
          <input type="submit" value="Invia" name="Submit"> 
        </font></td> 
        <td></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td align="right"></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td align="right"></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
      </tr> 
      <tr> 
        <td align="right" valign="top"><font face="Verdana" size="2">[b]Stai scrivendo a:[/b]</font></td> 
        <td></td> 
        <td><font face="Verdana"> 
          <input type="text" name="FriendName" size="18" value="Sicilia Report" readonly=""> 
          <font size="2"> </font> </font> </td> 
        <td colspan="2"><font face="Verdana"> 
          <input type="text" name="FriendEmail" size="32" value="lamiaemail@gmail.com" readonly=""> 
          <font size="2" ></font></font></td> 
      </tr> 
    </table> 
    </div> 
    </form> 
    <?php 

    else { 
    if (
    $FriendEmail) {  
    require_once(
    "class.phpmailer.php");  
        
    $mail = new PHPMailer();  
        
    $mail->From     $Email
        
    $mail->FromName $Nome
        
    $mail->AddAddress($FriendEmail); 
        
    $mail->IsHTML(true);  
        
    $mail->Subject  =  $oggetto
        
    $mail->Body     =  $Commento."
    "
    .$Nome
        
    $mail->AltBody  =  $bodytxt;  
    $mail->AddAttachment($_FILES['allegato_1']['tmp_name'],$_FILES['allegato_1']['name']);  
    $mail->AddAttachment($_FILES['allegato_2']['tmp_name'],$_FILES['allegato_2']['name']);  
    $mail->AddAttachment($_FILES['allegato_3']['tmp_name'],$_FILES['allegato_3']['name']);  
     
      } 
     
     
    echo 
    "<center>

    <font face=Verdana size=2>Grazie <font color=red>
    $Nome</font>.  Il tuo commento sar pubblicato previa supervisione della redazione. 

    [url='java-script:window.close();']Chiudi questa finestra[/url]</font>"


    ?> 


    </p> 
    </body> 
    </html>
    Non arriva più nessuna email.
    Eppure ho provato la classe in un altro modo, utilizzando i dati che ho trovato in due, tre discussioni, e funziona. L'unico inconveniente è che nel secondo modo non ho il controllo dati, e non riesco ad inserirlo.
    Questo è il secondo modo:
    il form
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>
     
    <body>
    <form action="formmail.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="destinatario" value="giuseppe.dibaudo@gmail.com">
    <table border="0">
    <tr>
      <td>Nome e Cognome:</td>
      <td><input type="text" name="nominativo" value="" /></td>
    </tr>
    <tr>
      <td>Tua Mail:</td>
      <td><input type="text" name="mittente" value="" /></td>
    </tr>
    <tr>
      <td>Oggetto:</td>
      <td><input type="text" name="oggetto" value="" /></td>
    </tr>
    <tr>
      <td>Messaggio:</td>
      <td><textarea cols="20" rows="4" name="messaggio"></textarea></td>
      </tr>
    <tr>
      <td>Allega file:</td>
      <td><input type="file" name="allegato_1" /></td>
    </tr>
    <tr>
      <td>Allega file:</td>
      <td><input type="file" name="allegato_2" /></td>
    </tr>
    <tr>
      <td>Allega file:</td>
      <td><input type="file" name="allegato_3" /></td>
    </tr>
    <tr>
      <td colspan="2"><input type="submit" value="Invia" /></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    e questa è la pagina php che invia la mail:
    Codice PHP:
    <?php 
    // Recupero il valore dei campi del form 
    $destinatario $_POST['destinatario'];  
    $nominativo $_POST['nominativo'];  
    $mittente $_POST['mittente'];  
    $oggetto $_POST['oggetto'];  
    $messaggio $_POST['messaggio'];  
    $allegato_1 $_FILE['allegato_1'];  
    $allegato_2 $_FILE['allegato_2'];  
    $allegato_3 $_FILE['allegato_3'];  
     
    require_once(
    "class.phpmailer.php");  
    $mail = new PHPMailer();  
    $mail->From     $mittente;  
    $mail->FromName $nominativo;  
    $mail->AddAddress($destinatario);  
    $mail->AddCC($mittente);  
    $mail->AddReplyTo($mittente);  
    $mail->IsHTML(true);  
    $mail->Subject  =  $oggetto;  
    $mail->Body     =  $messaggio."
    "
    .$nominativo;  
    $mail->AltBody  =  $bodytxt;  
    $mail->AddAttachment($_FILES['allegato_1']['tmp_name'],$_FILES['allegato_1']['name']);  
    $mail->AddAttachment($_FILES['allegato_2']['tmp_name'],$_FILES['allegato_2']['name']);  
    $mail->AddAttachment($_FILES['allegato_3']['tmp_name'],$_FILES['allegato_3']['name']);  
     
    if(!
    $mail->Send()){  
        echo 
    "Si è verificato un errore nell'invio della mail";  
    }else{  
        echo 
    "Mail inviata con successo";  
    }  
    ?>
    Avrei bisogno di aiuto per completare una delle due modalità in modo che sia funzionante sia la validazione dei dati, sia l'invio di più allegati.
    Cosè più semplice? Aggiungere gli allegati alla prima soluzione, o aggiungere la validazione dati alla seconda soluzione ?
    Vi prego aiutatemi...sto impazzendo

  3. #3
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Prova con una Live Validate sui campi, non su PHP.
    è veloce e inoltre fa un controllo onsubmit e onchange.

    Puoi scaricarla da quì: http://livevalidation.com/

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: Validazione campi di un form invio mail

    Originariamente inviato da GiuseppeWeb
    Mi sono permesso di inserire questa domanda anche in Php, visto che potrebbe essere risolta con entrambe le metodologie, e visto che il codice è ibrido. Spero che questo non violi il regolamento del forum.
    Secondo me si
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.