Elaborazione form

  • Creatore Discussione Creatore Discussione delfina
  • Data di inizio Data di inizio
Devi chiudere l'if, mancava una tonda
PHP:
if(mail("[email protected]","oggetto:...", $messaggio,$header)){

Ok ora funziona ma ci sono gli stessi problemi di prima.... mi dice che indirizzo e numero civico non sono corretti e me lo dice in una nuova finestra invece che nella finestra del form... come risolvo e soprattutto perchè quei campi non vanno bene?
 
ciao
corrggi numero_civico, la chfra tre le {} indiva di quanti caratteriri deve essere le stringa, per il CAP va bene 5, ma il numero cinico può essere da 1 a un massimo (credo che 3 possa andare bene)

correggi
PHP:
if($utente_numerocivico=="" || !preg_match("/^[0-9]{5}$/",)){
in
PHP:
if($utente_numerocivico=="" || !preg_match("/^[0-9]{1,3}$/",)){

ora guardo che pattern hai messo su indirizzo

edit
analogo per il numero di telefono: devi mettere il minimo e il massimo (e se tra prefisso e numero ci può essere uno spazio)
 
Ultima modifica:
eh avevo già notato e risolto... ora funziona tutto.. il problema è un altro... la mail mi arriva ma senza corpo della mail.... che ho sbagliato? Il codice ora è questo...
(ultimo sforzo... magari ci riesco... )
PHP:
<!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>Form da compilare</title>
<script language="Javascript">
function ControllaForm()

{

var controllo=false;		

if (document.form1.utente_nome.value == "" )

{

controllo=true;
alert("Attenzione: Hai lasciato vuoto un campo obbligatorio.\nIl form non sarÃ* inviato");
}

if (document.form1.utente_cognome.value == "" )

{

controllo=true;
alert("Attenzione: Hai lasciato vuoto un campo obbligatorio.\nIl form non sarÃ* inviato");
}

if (document.form1.utente_indirizzo.value == "" )

{

controllo=true;
alert("Attenzione: Hai lasciato vuoto un campo obbligatorio.\nIl form non sarÃ* inviato");
}

if (document.form1.utente_numerocivico.value == "" )

{

controllo=true;
alert("Attenzione: Hai lasciato vuoto un campo obbligatorio.\nIl form non sarÃ* inviato");
}

if (document.form1.utente_citta.value == "" )

{

controllo=true;
alert("Attenzione: Hai lasciato vuoto un campo obbligatorio.\nIl form non sarÃ* inviato");
}

if (document.form1.utente_provincia.value == "" )

{

controllo=true;
alert("Attenzione: Hai lasciato vuoto un campo obbligatorio.\nIl form non sarÃ* inviato");
}

if (document.form1.utente_cap.value == "" )

{

controllo=true;
alert("Attenzione: Hai lasciato vuoto un campo obbligatorio.\nIl form non sarÃ* inviato");
}

if (document.form1.utente_email.value.indexOf("@") == -1 ) 

{

controllo=true;
alert("Attenzione: L'E-MAIL inserita non e' valida.\nIl form non sarÃ* inviato");
}

if (document.form1.utente_numeroditelefono.value == "" )

{

controllo=true;
alert("Attenzione: Hai lasciato vuoto un campo obbligatorio.\nIl form non sarÃ* inviato");
}

if (document.form1.utente_msg.value == "" )

{

controllo=true;
alert("Attenzione: Hai lasciato vuoto un campo obbligatorio.\nIl form non sarÃ* inviato");
}		

if (controllo){return false}else{return true}	

}

// -->
</SCRIPT>
</head>
<body>
<?php
if(isset($_POST['invia'])){
    
    $utente_nome=trim($_POST['utente_nome']);
    $utente_cognome=trim($_POST['utente_cognome']);
    $utente_indirizzo=trim($_POST['utente_indirizzo']);
    $utente_numerocivico=trim($_POST['utente_numerocivico']);
    $utente_cap=trim($_POST['utente_cap']);
    $utente_citta=trim($_POST['utente_citta']);
    $utente_provincia=trim($_POST['utente_provincia']);
    $utente_cap=trim($_POST['utente_cap']);
    $utente_telefono=trim($_POST['utente_telefono']);
    $utente_email=trim($_POST['utente_email']);
    $utente_msg=strip_tags(trim($_POST['utente_msg']));
    
    $errore="";
    if($utente_nome ==""){
        $errore.="non hai inserito il nome<br />";
    }
    if($utente_cognome ==""){
        $errore.="non hai inserito il cognome<br />";
    }
    if($utente_indirizzo ==""){
        $errore.="non hai inserito il indirizzo<br />";
    }
   if($utente_numerocivico=="" || !preg_match("/^[0-9]/",$utente_numerocivico)){
        $errore.="numero civico non valido o vuoto<br />";
    } 
    if($utente_cap=="" || !preg_match("/^[0-9]{5}$/",$utente_cap)){
        $errore.="CAP non valido o vuoto<br />";
    }
    if($utente_citta ==""){
        $errore.="non hai inserito la città<br />";
    }
    if($utente_provincia ==""){
        $errore.="non hai inserito la provincia<br />";
    }
    if($utente_telefono=="" || !preg_match("/^[0-9]{10}$/",$utente_telefono)){
        $errore.="telefono non valido o vuoto<br />";
    }
    if(!filter_var($utente_email, FILTER_VALIDATE_EMAIL)){
        $errore.="indirizzo mail non valido<br />";
    }
    
    if($errore !=""){
        echo $errore;
                
        echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    }else{
        
 if(mail("[email protected]","oggetto:...", $messaggio,$header)){  
             echo "email inviata correttamente, sarai contatta quanto prima";
            
           echo "<meta http-equiv='Refresh' content='3; URL=https://www.google.it/'>"; 
        }else{
            echo "c'è stato un errore di trasmissione, riprova più tardi";
            echo "<meta http-equiv='Refresh' content='3; URL=http://prinkbe.com/formtisana/prova.php'>"; 
        }
    }
}else{
?>

<form method="post" name="form1" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" OnSubmit="return ControllaForm(this)">
Nome*:<br>
<input type="text" name="utente_nome" size="20"><br>
Cognome*:<br>
<input type="text" name="utente_cognome" size="20"><br>
Indirizzo*:<br>
<input type="text" name="utente_indirizzo" size="20"><br>
Numero civico*:<br>
<input type="text" name="utente_numerocivico" size="20"><br>
Città*:<br>
<input type="text" name="utente_citta" size="20"><br>
Provincia*:<br>
<input type="text" name="utente_provincia" size="20"><br>
CAP*:<br>
<input type="text" name="utente_cap" size="5"><br>
Numero di telefono*:<br>
<input type="text" name="utente_telefono" size="20"><br>
Indirizzo email*:<br>
<input type="text" name="utente_email" size="20"><br>
<br>
Messaggio:<br>
<textarea name="utente_msg" cols="40" rows="4"></textarea><br>
<br>
<input type="submit" name= "invia" value="INVIA"> 
</form>
<?php
}
?>
</body>
</html>
 
Ultima modifica di un moderatore:
ciao
per forza, devi costruire il corpo del messaggio e l'header

PHP:
<?php
//.....
}else{
	//qui devi costruire il messaggio e l'header ti schematizzo poi prosegui
	$messaggio= "da $utente_nome $utente_cognome \n";
	$messaggio .= "indorizzo $utente_indirizzo n°$utente_numerocivico\n";
	//ecc.. con tutti i campi che hai ricevuto
	$messaggio .= "---------------------------------------\n";
	$messaggio .= "$utente_msg\n";
	$header="from $utente_email \n";
	if(mail("[email protected]","oggetto:...", $messaggio,$header)){
	echo "email inviata correttamente, sarai contatta quanto prima";
//......
?>

p.s.
quando scrivi del codice racchiudilo tra gli appositi tag (seconda riga formattazione del post ultime 3 iconcine, nell'ordine CODE, HTML, PHP)
 
Me l ostavo propri ochiedendo sul come si faceva a scrivere sto codice :-)

Cmq ora tutto bene. Funziona ma c'è una piccola cosa che vorrei sapere se si può fare... invece di dare il messaggio in una nuova pagina è possibile fare una cosa del genere?

Allora io scrivo il nome, cognome. Arrivo all'indiirzzo mail. Lo scrivo sbagliato. Mi si apre una finestra di popup in cui mi dice l'errore che ho fatto. clicco su ok e reinserisco la mail... si può fare?

Oppure almeno una volta visualizzati i messaggi essere insirizzati al form ma con i campi giusti già compilati?

PS=Grazie mille per l'aiuto... non so come avrei fatto senza di te credimi :-)
 
Ultima modifica:
ciao
se il pop è l'alert di js, una volta che hai cliccato su OK puoi riscrivere il dato corretto.
se invece intendi il messaggio che ti da php per fare in modo che si possa correggere solo il dato errato, mentre gli altri rimangono come scritti, si deve passare alle sessioni (o ai cookie).
però bisogna rimettere le mani su tutto lo script e ci vuole un po' di pazienza

p.s.
come ho fatto io la pagina è la stessa, sparisce il form quando dai il submit in quanto è dentro l'if else
 
ciao
se il pop è l'alert di js, una volta che hai cliccato su OK puoi riscrivere il dato corretto.
se invece intendi il messaggio che ti da php per fare in modo che si possa correggere solo il dato errato, mentre gli altri rimangono come scritti, si deve passare alle sessioni (o ai cookie).
però bisogna rimettere le mani su tutto lo script e ci vuole un po' di pazienza

p.s.
come ho fatto io la pagina è la stessa, sparisce il form quando dai il submit in quanto è dentro l'if else

Il problema è che con l'alert di js non posso controllare se i dati inseriti sono corretti. insomma una persona può tranquillamente scrivermi un "Ciao" al posto della sua mail e io lo saprò solo al momento in cui guardo la mail. Non esiste una funzione di php che possa dare un popup. Tra l'altro i popup di js vengono dati tutti insieme e non uno alla volta.. insomma se ometto tutti i campi il popup mi viene visualizzato il numero di volte corrispondente al numero di campi... cosa che vorrei evitare... suggerimenti su qualche guida da seguire o su come procedere?
 

Discussioni simili