Form mail php - ajax

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Buongiorno a tutti,
ho utillizzato un form mail in ajax e php. Il problema è che nella mail ricevo soltanto il testo del campo messaggio e non riesco ad inviare gli altri campi ( ragione, telefono, partita )

Qualcuno può aiutarmi a capire perché?
Grazie mille :D
PHP:
// Clean up the input values
foreach($_POST as $key => $value) {
	if(ini_get('magic_quotes_gpc'))
		$_POST[$key] = stripslashes($_POST[$key]);
	
	$_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
}

// Assign the input values to variables for easy reference
$ragione = $_POST['ragione'];
$email = $_POST['email'];
$partitaiva = $_POST['partita'];
$telefono = $_POST['telefono'];
$message = $_POST['message'];

// Test input values for errors
$errors = array();
if(strlen($ragione) < 2) {
	if(!$ragione) {
		$errors[] = "Devi inserire la tua ragione sociale.";
	} else {
		$errors[] = "La ragione sociale deve essere minimo di 2 caratteri.";
	}
}

if(!$email) {
	$errors[] = "Devi inserire un'email.";
} else if(!validEmail($email)) {
	$errors[] = "Devi inserire un'email valida.";
}
$errors = array();
if(strlen($partitaiva) < 11) {
	if(!$ragione) {
		$errors[] = "Devi inserire la tua partita iva.";
	} else {
		$errors[] = "La partita iva deve essere minimo 11 caratteri.";
	}
	
	
}

if($errors) {
	// Output errors and die with a failure message
	$errortext = "";
	foreach($errors as $error) {
		$errortext .= "<li>".$error."</li>";
	}
	die("<span class='failure'>Spiacenti!<br />Ci sono stati problemi:<ul>". $errortext ."</ul>Riprova</span>");
}

// Send the email
$to = "[email protected]";
$subject = "Messaggio ricevuto da: $ragione";
$message = "$message";
$headers = "From: $email";

mail($to, $subject, $message, $headers);

// Die with a success message
die("<span class='success'>Complimenti!<br /><br /> Il tuo messaggio e' stato inviato correttamente!</span>");

// A function that checks to see if
// an email is valid
function validEmail($email)
{
   $isValid = true;
   $atIndex = strrpos($email, "@");
   if (is_bool($atIndex) && !$atIndex)
   {
      $isValid = false;
   }
   else
   {
      $domain = substr($email, $atIndex+1);
      $local = substr($email, 0, $atIndex);
      $localLen = strlen($local);
      $domainLen = strlen($domain);
      if ($localLen < 1 || $localLen > 64)
      {
         // local part length exceeded
         $isValid = false;
      }
      else if ($domainLen < 1 || $domainLen > 255)
      {
         // domain part length exceeded
         $isValid = false;
      }
      else if ($local[0] == '.' || $local[$localLen-1] == '.')
      {
         // local part starts or ends with '.'
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $local))
      {
         // local part has two consecutive dots
         $isValid = false;
      }
      else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
      {
         // character not valid in domain part
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $domain))
      {
         // domain part has two consecutive dots
         $isValid = false;
      }
      else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
                 str_replace("\\\\","",$local)))
      {
         // character not valid in local part unless 
         // local part is quoted
         if (!preg_match('/^"(\\\\"|[^"])+"$/',
             str_replace("\\\\","",$local)))
         {
            $isValid = false;
         }
      }
      if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
      {
         // domain not found in DNS
         $isValid = false;
      }
   }
   return $isValid;
}
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Guardandolo così mi sembra il tuo codice invia la mail anche se vengono trovati degli errori.
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Controlla il loro valore.
E vuoi che la mail venga inviata anche se vengono trovati errori?
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
No certo,
ma di quali errori parli? Il messaggio che mi da, una volta premuto il bottone invia è :" il messaggio è stato inviato correttamente"

I valori corrispondono nell'html il codice è questo:
HTML:
<form id="contactform" action="processForm.php" method="post">
				<table id="modulo_contatti">
                <tr>
                	<td></td>
                   <td></td>
                
                </tr>
					<tr>
                    	
						<td><label for="ragione">Ragione Sociale:</label></td>
						<td><input type="text" id="ragione" name="ragione" /></td>
					</tr>
					<tr>
						<td><label for="email">Email:</label></td>
						<td><input type="text" id="email" name="email" /></td>
                        
					</tr>
                    <tr>
						<td><label for="partita">Partita Iva:</label></td>
						<td><input type="text" id="partita" name="partita" /></td>
                        
					</tr>
                    <tr>
						<td><label for="telefono">Telefono:</label></td>
						<td><input type="text" id="telefono" name="telefono" /></td>
                        
					</tr>
					<tr>
						<td><label for="message">Messaggio:</label></td>
						<td><textarea id="message" name="message" rows="5" cols="20"></textarea></td>
					</tr>
					<tr>
						<td></td>
						<td><input type="submit" value="Invia" id="send" class="button" /></td>
                        
					</tr>
                   		
						
				</table>
			</form>
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Gli errori di inserimento che tu raggruppi nell'array $errors[]
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Ok,
ho corretto gli errori.
Però quello che non riesco a fare è stampare nel corpo della mail i dati del telefono, partita iva e ragione sociale.
Puoi aiutarmi a capire come fare?
Ti ricopio il codice corretto
PHP:
// Clean up the input values
foreach($_POST as $key => $value) {
	if(ini_get('magic_quotes_gpc'))
		$_POST[$key] = stripslashes($_POST[$key]);
	
	$_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
}

// Assign the input values to variables for easy reference
$ragione = $_POST['ragione'];
$email = $_POST['email'];
$partitaiva = $_POST['partita'];
$telefono = $_POST['telefono'];
$message = $_POST['message'];

// Test input values for errors
$errors = array();
if(strlen($ragione) < 2) {
	if(!$ragione) {
		$errors[] = "Devi inserire la tua ragione sociale.";
	} else {
		$errors[] = "La ragione sociale deve essere minimo di 2 caratteri.";
	}
}

if(!$email) {
	$errors[] = "Devi inserire un'email.";
} else if(!validEmail($email)) {
	$errors[] = "Devi inserire un'email valida.";
}
$errors = array();
if(strlen($partitaiva) < 11) {
	if(!$partitaiva) {
		$errors[] = "Devi inserire la tua partita iva.";
	} else {
		$errors[] = "La partita iva deve essere minimo 11 caratteri.";
	}
	
	
}

if($errors) {
	// Output errors and die with a failure message
	$errortext = "";
	foreach($errors as $error) {
		$errortext .= "<li>".$error."</li>";
	}
	die("<span class='failure'>Spiacenti!<br />Ci sono stati problemi:<ul>". $errortext ."</ul>Riprova</span>");
}

// Send the email
$to = "[email protected]";
$subject = "Messaggio ricevuto da: $ragione";
$message = "$message";
$headers = "From: $email";

mail($to, $subject, $message, $headers);

// Die with a success message
die("<span class='success'>Complimenti!<br /><br /> Il tuo messaggio e' stato inviato correttamente!</span>");

// A function that checks to see if
// an email is valid
function validEmail($email)
{
   $isValid = true;
   $atIndex = strrpos($email, "@");
   if (is_bool($atIndex) && !$atIndex)
   {
      $isValid = false;
   }
   else
   {
      $domain = substr($email, $atIndex+1);
      $local = substr($email, 0, $atIndex);
      $localLen = strlen($local);
      $domainLen = strlen($domain);
      if ($localLen < 1 || $localLen > 64)
      {
         // local part length exceeded
         $isValid = false;
      }
      else if ($domainLen < 1 || $domainLen > 255)
      {
         // domain part length exceeded
         $isValid = false;
      }
      else if ($local[0] == '.' || $local[$localLen-1] == '.')
      {
         // local part starts or ends with '.'
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $local))
      {
         // local part has two consecutive dots
         $isValid = false;
      }
      else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
      {
         // character not valid in domain part
         $isValid = false;
      }
      else if (preg_match('/\\.\\./', $domain))
      {
         // domain part has two consecutive dots
         $isValid = false;
      }
      else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
                 str_replace("\\\\","",$local)))
      {
         // character not valid in local part unless 
         // local part is quoted
         if (!preg_match('/^"(\\\\"|[^"])+"$/',
             str_replace("\\\\","",$local)))
         {
            $isValid = false;
         }
      }
      if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
      {
         // domain not found in DNS
         $isValid = false;
      }
   }
   return $isValid;
}
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Intanto prova a fare degli errori tipo mettere una ragione minore di 2 caratteri o altro e vedi se manda la mail.
Poi prova a stampare $ragione e le altre variabili che non si riesci a mandare e vedi il contenuto.
In più l'invio della mail deve avvenire solo se non ci sono errori quindi dovresti mettere una else a if($errors) e mettere la parte dell'invio dentro alla else creata.
 

aledero75

Utente Attivo
6 Apr 2012
88
0
0
Lamezia Terme
Per quanto riguarda il primo punto, la mail la invia solo se non ci sono errori,
Ho provato a stampare i valori di $ragione, $partitaiva e $telefono e mi stampa i valori che ho inserito.
Forse sbaglio qualcosa qui?
PHP:
// Send the email
$to = "[email protected]";
$subject = "Messaggio ricevuto da: $ragione";
$message = "$message";
$headers = "From: $email";

mail($to, $subject, $message, $headers);
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Non vedo errori.
Prova a controllare le variabili $to $subject e $headers e poi ti consiglio di usare phpmailer o swiftmailer per l'invio delle mail.
 
Discussioni simili
Autore Titolo Forum Risposte Data
U PHP bottone per invio mail o ritorno al form PHP 15
I [PHP] inviare form con allegato tramite una mail PHP 1
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
Cosina Andare a capo nel testo della mail ricevuta dal form php PHP 1
paloppa [PHP] Invio mail da form dubbio PHP 17
F Form mail php errore invio PHP 5
allegria [PHP] Ricevo una doppia mail dal form PHP 6
ecosito [PHP] Attivare il form mail di un template PHP 2
utente Form mail php - indirizzo ip PHP 9
Francesco Polese Errore form invio mail+php PHP 22
P invio mail da form con dati php PHP 7
S Form invio mail html, con invio tramite file denominato invio.php PHP 8
S inviare the_title() in una mail tramite form html/php PHP 0
S php form invio mail PHP 3
S Form mail php invia mail senza contenuto PHP 15
A form in php o html per raccolta mail PHP 4
IImanuII Form mail in php e gmail.... PHP 0
P Inviare mail da form php anche al mittente PHP 37
C problema invio mail con form php PHP 0
E allegato via mail tramite form php PHP 7
E aiuto form mail php PHP 8
S passaggio a PHP Version 5.2.6 e la form e mail non funziona piu' PHP 14
S script php che raccoglie form javascript e lo invia tramite mail PHP 0
S form mail asp, php e flash PHP 9
A creare form mail PHP PHP 153
T FORM MAIL flash - php: LETTERE ACCENTATE! PHP 2
I Form mail PHP PHP 9
G Come far fare redirect al form mail in php PHP 3
A form mail flash php Flash 1
S finestra browser php per form-mail PHP 0
A Chi è capace? (Integrazione di form mail php in una pagina che sfrutta script .js) PHP 6
Samuele Ronzani Form mail HTML HTML e CSS 7
I form invio mail HTML e CSS 1
F Form mail HTML e CSS 14
W Estrapolare un indirizzo mail di un form durante l'invio PHP 5
P Creare form e inviare via mail HTML e CSS 2
I invio mail da form PHP 1
R form mail in copiavuote PHP 3
F Problemi con ricezione mail dal form PHP 8
D form mail non funzionante PHP 1
Il Matta Problema Form e invio mail PHP 2
M non ci do fuori con il form mail PHP 1
M Form mail con dreamweaver cs6 PHP 2
B Problema form mail per invio doppio allegato PHP 1
A Problema orario invio mail per form PHP 4
L Sviluppare form mail con allegato PHP 6
S Form per mandare la mail HTML e CSS 2
L Form con invio mail PHP 1
A Form Mail PHP 12
U form mail per inviare tracciabilità corriere PHP 0

Discussioni simili