formail con espressioni regolari

  • Creatore Discussione Creatore Discussione helpdesk
  • Data di inizio Data di inizio

helpdesk

Utente Attivo
30 Set 2009
726
0
0
Pesaro
Salve ragazzi non mi funziona un formail che ho creto mi da errore alla riga 13 ma non si inseriscono così le espressioni regolari per i controlli in un form?



<?php


$Azienda=$_POST['azienda'];
$Persona=$_POST['persona'];
$Provincia=$_POST['provincia'];
$Citta=$_POST['citta'];
$Telefono=$_POST['telefono'];
$Email=$_POST['email'];
$Note=$_POST['note'];


$controllo_azienda=/^[a-zA-Z]{3,}$/;
$controllo_persona=/^[a-zA-Z]{3,}$/;
$controllo_provincia=/^[a-zA-Z]{2,}$/;
$controllo_citta=/^[a-zA-Z]{3,}$/;
$controllo_telefono=/^[0-9]{10,10}$/;
$controllo_mail=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;

$aziendaf ="Inserire Nome azienda";
$personaf="Inserire Nome persona da contattare";
$provincia="Inserire Provincia";
$cittaf="Inserire Città";
$telefonof="Inserire Telefono";
$mailf="Inserire E-mail";


if (!$controllo_azienda.test($aziendaf)){
echo($aziendaf);
}else if(!$controllo_persona.test($personaf)){
echo($personaf);
}else if(!$controllo_provincia.test($provinciaf)){
echo($provinciaf);
}else if(!$controllo_citta.test($cittaf)){
echo($cittaf);
}else if(!$controllo_telefono.test($telefonof)){
echo($telefonof);
}else if(!$controllo_mail.test($mailf)){
echo($mailf);
}else{

$to = "[email protected]";
$subject = "Richiesta informazioni da parte di $Azienda";

$message = $messaggio;
$message .= "\n\n---------------------------\n";
$message .= "DATI CONTATTO:

$azienda.Azienda = $Azienda:
$persona.Persona = $Persona:
$provincia.Provincia =$Provincia:
$citta.Citta=$Citta:
$telefono.Telefono =$Telefono:
$email.E.mail = $Email
$note.Note =$Note:

$mail ";
$headers = "From: " . $Azienda. " " . $Persona. " <" .$email.">\n";
if(@mail($to, $subject, $message, $headers))
{
echo "Messaggio inviato";
}
else
{
echo "errore";
}

}
}

?>
 
Grazie per la risposta ma il tutorial è in inglese e non riesco a capire la sintassi e la logica :(
 
PHP:
<?php
$Azienda=$_POST['azienda'];
$controllo_azienda="/^[a-zA-Z]{3,}$/";

if (preg_match($controllo_azienda, $Azienda)) {
    echo "successo";    // stringa $Azienda rispetta le regole della espresione regolare
} else {
    echo "fallimento";    // stringa $Azienda non rispetta le regole della espresione regolare
}
?>
 
L'ho sostituito ma mi da sempre l'errore alla riga 13 :(

Parse error: syntax error, unexpected '/' in D:\inetpub\vhosts\sito.com\httpdocs\f\php\contact.php on line 13

<?php


$Azienda=$_POST['azienda'];
$Persona=$_POST['persona'];
$Provincia=$_POST['provincia'];
$Citta=$_POST['citta'];
$Telefono=$_POST['telefono'];
$Email=$_POST['email'];
$Note=$_POST['note'];

$controllo_azienda="/^[a-zA-Z]{3,}$/";
$controllo_persona="/^[a-zA-Z]{3,}$/";
$controllo_provincia="/^[a-zA-Z]{2,}$/";
$controllo_citta="/^[a-zA-Z]{3,}$/";
$controllo_telefono="/^[0-9]{10,10}$/";
$controllo_mail="/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/";


if (preg_match($controllo_azienda, $Azienda)) {
echo "successo";
} else if (preg_match($controllo_persona, $Persona)){
echo "successo";
} else if (preg_match($controllo_provincia, $Provincia)){
echo "successo";
if (preg_match($controllo_citta, $Citta)) {
echo "successo";
} else if (preg_match($controllo_mail, $Email)){
echo "successo";
} else if (preg_match($controllo_azienda, $Azienda)){
echo "successo";
}else{

$to = "[email protected]";
$subject = "Richiesta informazioni da parte di $nome $cognome";

$message = $messaggio;
$message .= "\n\n---------------------------\n";
$message .= "DATI CONTATTO:

$azienda.Azienda = $Azienda:
$persona.Persona = $Persona:
$provincia.Provincia =$Provincia:
$citta.Citta=$Citta:
$telefono.Telefono =$Telefono:
$email.E.mail = $Email
$note.Note =$Note:

$mail ";
$headers = "From: " . $Azienda. " " . $Persona. " <" .$email.">\n";
if(@mail($to, $subject, $message, $headers))
{
echo "Messaggio inviato";
}
else
{
echo "errore";
}
}


?>
 
Ultima modifica:
ciao
ho fatto una piccola prova per verificare le espressioni regolari e non mi dà errori
PHP:
<?php
//per semplificare ho tolto i post e modificato gli if
$Azienda='azienda';
$Persona='persona';
$Provincia='provincia';
$Citta='citta';
$Telefono='telefono';
$Email='[email protected]';
$Note='note';
//NON ho modifcato le expreg
$controllo_azienda="/^[a-zA-Z]{3,}$/";
$controllo_persona="/^[a-zA-Z]{3,}$/";
$controllo_provincia="/^[a-zA-Z]{2,}$/";
$controllo_citta="/^[a-zA-Z]{3,}$/";
$controllo_telefono="/^[0-9]{10,10}$/";
$controllo_mail="/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/";
//dagli if ottengo 5 volte successo e non dà l'errore che dici tu
if (preg_match($controllo_azienda, $Azienda)) {
	echo "successo<br>";}
if (preg_match($controllo_persona, $Persona)){
	echo "successo<br>";}
if (preg_match($controllo_provincia, $Provincia)){
	echo "successo<br>";}
if (preg_match($controllo_citta, $Citta)) {
	echo "successo<br>";}
if (preg_match($controllo_mail, $Email)){
	echo "successo<br>";}
?>

p.s.
hai messo nella verifica della città {3,} guarda che in veneto c'è un comune che si chiama Vo

p.s. al p.s.
per la verifica dell'indirizzo email ti conviene usare
filter_var($email, FILTER_SANITIZE_EMAIL)
filter_var($email, FILTER_VALIDATE_EMAIL)
 
Ciao Borgo, grazie per la risposta, si vanno cambiate le espressioni.
Ma con il codice che hai indicato tu non verifico se sbagliano ma solo se digitano correttamente il campo mentre con else if posso in cosa ho sbagliato?
 
Così invece mi dice quando è giusto e quando è sbagliato come faccio a fargli capire che deve inviare la mail quando tutti sono giusti?

PHP:
<?php 
//per semplificare ho tolto i post e modificato gli if 
$Azienda='azienda'; 
$Persona='persona'; 
$Provincia='provincia'; 
$Citta='citta'; 
$Telefono='telefono'; 
$Email='[email protected]'; 
$Note='note'; 
//NON ho modifcato le expreg 
$controllo_azienda="/^[a-zA-Z]{3,}$/"; 
$controllo_persona="/^[a-zA-Z]{3,}$/"; 
$controllo_provincia="/^[a-zA-Z]{2,}$/"; 
$controllo_citta="/^[a-zA-Z]{3,}$/"; 
$controllo_telefono="/^[0-9]{10,10}$/"; 
$controllo_mail="/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/";
 //dagli if ottengo 5 volte successo e non dà l'errore che dici tu 

if (preg_match($controllo_azienda, $Azienda)) {
 echo "successo"; 
} else{
echo"errore";
} 

if (preg_match($controllo_persona, $Persona)){
 echo "successo"; 
} else{ 
 echo"errore";
} 
if (preg_match($controllo_provincia, $Provincia)){
 echo "successo";
  } else{ 
 echo"errore";
} 

if (preg_match($controllo_citta, $Citta)) {
 echo "successo"; 
} else{ 
 echo"errore";
} 

if (preg_match($controllo_mail, $Email)){
 echo "successo"; 
} else{ 
 echo"errore";
} 

if (preg_match($controllo_azienda, $Azienda)){
 echo "successo"; 
 } else{ 
 echo"errore";
} 

?>
 
ciao
avevo semplificato per verificare le espressioni, davi err alla riga 13 che era un'exp.
per verificare se fai giusto o errato ti dico (semplificando) come faccio io
PHP:
<?php
//raccolta dei vari post
$ok_ko="";//stringa vuota
//le varie exp regolari
if (!preg_match($controllo_azienda, $Azienda)) { //nota ! che nega
    $ok_ko.= "non hai inserito l'azienda o caratteri illeciti<br>";  
}
if (!preg_match($controllo_persona, $Persona)){ 
    $ok_ko.= "non hai inserito il tuo nome o caratteri illeciti<br>";  //se anche prima errore si concatenao i due errori
}
//ecc... con i vari controlli
if($ok_ko==""){//se è vuota tutti gli input sono giusti
    //invio l'email
}else{
   echo $ok_ko;//visualizzo gli errori
}
//ecc...
?>


p.s.
racchiudi sempre i codici con i loro tag (vedi la barra di formattazione in alto a dx)
 
Ultima modifica:
Grande Borgo Italia, grazie mille funziona però non so come aggiungere il controllo sul campo checkbox per la scelta per il consenso al trattamento dei dati personali mi da errore se la inserisco in cosa ho sbagliato?

PHP:
<?php 


$Azienda=$_POST['azienda'];
$Persona=$_POST['persona'];
$Provincia=$_POST['provincia'];
$Citta=$_POST['citta'];
$Telefono=$_POST['telefono'];
$Email=$_POST['email'];
$Note=$_POST['note'];
$Check=$_POST['check'];

$controllo_azienda="/^[a-zA-Z]{3,}$/";
$controllo_persona="/^[a-zA-Z]{3,}$/";
$controllo_provincia="/^[a-zA-Z]{2,}$/";
$controllo_citta="/^[a-zA-Z]{3,}$/";
$controllo_telefono="/^[0-9]{10,10}$/";
$controllo_mail="/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/";

$ok_ko=""; 

if (!preg_match($controllo_azienda, $Azienda)) { 
    $ok_ko.= "non hai compilato il campo Azienda <br>";   
} 
if (!preg_match($controllo_persona, $Persona)){  
    $ok_ko.= "non hai compilato il campo Nome <br>";   
 } 
if (!preg_match($controllo_provincia, $Provincia)){  
    $ok_ko.= "non haicompilato il campo Provincia <br>";  
 } 
if (!preg_match($controllo_citta, $Citta)){  
    $ok_ko.= "non hai compilato il campo Citta<br>";  
 } 
if (!preg_match($controllo_telefono, $Telefono)){  
    $ok_ko.= "non hai compilato il campo telefono<br>";  
 } 
if (!preg_match($controllo_mail, $Email)){  
    $ok_ko.= "non hai compilato il campo E-mail <br>";   
 } 
 if (!preg_match($Check,$Check)){  
    $ok_ko.= "non hai dato il consenso al trattamento dei dati personali <br>";   
 } 

if($ok_ko==""){ 
  
$to = "[email protected]"; 
$subject = "Richiesta informazioni da parte di $nome $cognome"; 

$message = $messaggio;
$message .= "\n\n---------------------------\n"; 
$message .= "DATI CONTATTO:

$azienda.Azienda = $Azienda:
$persona.Persona = $Persona:
$provincia.Provincia =$Provincia:
$citta.Citta=$Citta:
$telefono.Telefono =$Telefono:
$email.E.mail = $Email
$note.Note =$Note:

$mail "; 
$headers = "From: " . $Azienda. " " . $Persona. " <" .$email.">\n"; 
if(@mail($to, $subject, $message, $headers)) 
{ 
echo "Messaggio inviato"; 
} 
}else{ 
   echo $ok_ko; 
} 
?>

il checkbox l'ho scritto così nell'html <input name="check" type="checkbox" value="check" checked="checked"/>
 
Ultima modifica:
Ciao Dreamer, grazie per la risposta nel tag nell'html check è uguale sia per il nome che per l'attributo value non ho capito cosa intendi :(
 
Sostituisci questo:
PHP:
 if (!preg_match($Check,$Check)){  
    $ok_ko.= "non hai dato il consenso al trattamento dei dati personali <br>";   
 }
Con questo:
PHP:
if (!isset($_POST['check'])) {  
    $ok_ko.= "non hai dato il consenso al trattamento dei dati personali <br>";   
}
 
ciao
come ha detto alex, oppure anche se non so che valore hai messo per il checkbox, se (ad esempio) hai messo S per sì
io valuterei senza la preg, basta verificare
PHP:
//...
if($Check != "S"){
	$ok_ko.= "non hai dato il consenso al trattamento dei dati personali <br>"; 
}
//...
 

Discussioni simili