form per invio mail

temino

Utente Attivo
22 Gen 2011
47
0
0
Salve a tutti, probabilmente quella che sto per fare è una domanda fatta più e più volte, ma nonostante svariate prove non sono ancora riuscito a trovare una soluzione.
Premetto che ho già letto gli altri topic nel forum senza grandi risultati.
Il mio problema è inserire nel mio sito web (con index in html) una form che permetta l'invio di email.
Ho trovato qualcosa di utile ma i risultati sono stati poco soddisfacenti, per questo chiedo aiuto a voi.
Il problema successivo che mi verrebbe da pensare è il reindirizzamento, cioè mi chiedevo se dopo l'invio della mail fosse possibile tornare alla pagina precedente, magari facendo uscire una finestrella sotto il form mail che indicasse l'invio o meno del messaggio di posta elettronica.

Spero che qualcuno mi sappia dare una mano perchè sono 10 giorni che navigo per i forum e faccio prove do ogni genere... risultati: 0 !!

Vi ringrazio in anticipo
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
non se usi la funzione mail() o qualche classe che invia
prova in questa maniera nella pag php che invia l'email, ipotizzo che tu utilizzi mail()
PHP:
<?php
//tutto quello che c'è prima....
if(mail($indirizzo, $oggetto, $message,$header)){
	echo "messaggio inviato";
	echo "<meta http-equiv='Refresh' content='3; URL=pagina_a_cui_vuoi_tornare.php'>";
}else{
	echo "errore di trasmissione";
	echo "<meta http-equiv='Refresh' content='3; URL=pagina_a_cui_vuoi_tornare.php'>";
}
//ecc....
?>
il content='3 sono i secondi di attesa prima di essere rinviato alla pag che vuoi, puoi mettere da zero in su
 

temino

Utente Attivo
22 Gen 2011
47
0
0
ciao e grazie per avermi risposto. il codice che mi hai dato mi sembra buono, ora però mi manca tutto il resto...

Ne avrò trovato di 10 tipi in questi giorni, ma alla fine ho cancellato tutto e ho deciso di rifarlo da capoo.. quindi m manca il codice da inserire nell'index.html (per la creazione delle text ecc) e il codice .php per l'invio delle mail...
 

temino

Utente Attivo
22 Gen 2011
47
0
0
la discussione che mi hai linkato è stata favolosa!!!
finalmente ho il mio form funzionante!!!

Volevo farti una domanda...

quando esegue questo pezzetto di codice (è uno dei tanti)

if($nome=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il tuo nome e cognome";

esce sopra il form il messaggio "NON hai inserito il tuo nome e cognome"
ma rimane visibile solo per pochi secondi, poi avviene il refresh della pagina e quindi scompare.

la mia domanda è: come posso fare a bloccare la pagina evitando quindi il refresh e dando modo all'utente di sapere l'esito dell'invio o per permettergli di legger eper bene la descrizione dell'errore che ha commesso??
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
scusa non ho capito bene la tua domanda
comunque se l'utente fa uno o più errori appare la lista degli errori e l'email non parte
es.
NON hai inserito l'indirizzo email o errato
NON hai inserito il tuo nome e cognome​
se invece il form è stato compilato in modo giusto appare il messaggio
e se non ci sono errori di trasmissione
Grazie per avermi contattato
ti risponderò quanto prima​
se vuoi che il messaggio sia più visibile, allunghi il suo tempo di permanenza aumentando il valore di content
es. da
echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
a
echo "<meta http-equiv='Refresh' content='6; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
se vuoi aggiungere un ulteriore messaggio, in caso di errore di compilazione, puoi aggiungere
PHP:
<?php
//............
//fine verifiche se la variabile $ok_ko è rimasta vuota tutto OK
//quindi posso spedire
if($ok_ko==""){

//qui c'è tutta la parte di invio

}else{//**** parte da aggiungere
	$ok_ko .= "<br>l'email non verrà inviata";
}//***** parte da aggiungere
//mostri l'avviso se OK o KO
echo $ok_ko;
//e ritorni al form pulito
echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
//se fai due pagine al posto di ".htmlspecialchars($_SERVER['PHP_SELF'])."
//il nome della pagina del form es. URL=contattami.htm
//se vuoi aumentare o diminuire il tempo di permanenza dell'avviso
//modifica il valore di content='4; es. content='2;
}
?>
per cui il messaggio di errore diventerà (es)

NON hai inserito l'indirizzo email o errato
NON hai inserito il tuo nome e cognome
l'email non verrà inviata​
 

temino

Utente Attivo
22 Gen 2011
47
0
0
GRAZIE 1000!!! sei stato gentilissimo... posto qui sotto il codice corretto della pagina "contatti.php" così magari potrà essere utile a qualcuno! =)

<html>
<body>
<?php
//parte riservata all'invio

//qui scrivi le funzioni di controllo di quanto immesso nel form
function valida_email($em){//verifica che l'indirizzo email sia sintatticamente corretto
$em=filter_var($em, FILTER_SANITIZE_EMAIL);
if(!filter_var($em, FILTER_VALIDATE_EMAIL)){
return "*#*";//indirizzo non corretto
}else{
return $em;//indirizzo corretto
}
}
function valida_nome($no){
//suddivido per "didattica", ma poi puoi semplificare
$no=trim($no);//tolgo gli spazi iniziali e finali, si vuota se messo solo spazi
$no=strip_tags($no);//tolgo tutti i tag html
if($no==""){
return "*#*";//non è stato inserito il nome o solo spazi
}else{
return $no;//il nome non dovrebbe essere pericoloso e contiene qualcosa
}
}
function valida_testo($tx){
$tx=trim($tx);
$tx=strip_tags($tx, "<br> <p>");
//in questo modo tolgo tutti i tag esclusi qulle di fine liena e paragrafo
//nel caso l'inio sia in formato html
if($tx==""){
return "*#*";//non è stato inserito alcun testo o solo spazi
}else{
return $tx;//il testo non dovrebbe essere pericoloso e contiene qualcosa
}
}
//fine funzioni controllo sono il minimo del fattibile
//qui inizio a raccogliere i dati inviati dal form
if(isset($_POST['invio'])){//è stato premuto il tasto di submit
//attenta i nomi dentro $_POST devono corrispondere esattamente ai nomi dei campi del form
//metto a stinga vuota una variabile che mi servirà in seguito
$ok_ko.="";
$nome=$_POST['realname'];
$email=$_POST['email'];
$messaggio=$_POST['messaggio'];
//e li verifico
$nome=valida_nome($nome);
if($nome=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il tuo nome e cognome";
}
$email=valida_email($email);
if($email=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito l'indirizzo email o errato";
}
$messaggio=valida_testo($messaggio);
if($messaggio=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il testo";
}
//fine verifiche se la variabile $ok_ko. è rimasta vuota tutto OK
//quindi posso spedire
if($ok_ko==""){

//preparo delle variabili chi mi possono servire
$destinatiario="[email protected]";//qui devi mettere il tuo indirizzo
$inviata_il="emei inviata il ".date("")."<br>";//questa è per bellezza
$inviata_da="email da: ".$nome."<hr>";
$oggetto = "richiesta informazioni a ........";//o altro messaggio
//nel messaggio concateno alcune variabili ottenendo il testo da inviare
$testo=$inviata_il.$inviata_da.nl2br($messaggio);
//invio in formato html
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: $nome <$email>" . "\r\n";
//e qui ti uso la nativa mail() poi visto che l'appetito vien mengiando....
//prima o poi passere alla classe maillerphp
//tento l'invio
if(mail($destinatiario,$oggetto,$testo,$headers)){
$ok_ko.="<br>Grazie per avermi contattato<br>ti risponder&ograve; quanto prima";
}else{
$ok_ko.="<br>c'&eacute; stato un errore di trasmissione: riprova pi&ugrave; tardi";
}

}
//mostri l'avviso se OK o KO
echo $ok_ko;
//e ritorni al form pulito
echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
//se fai due pagine al posto di ".htmlspecialchars($_SERVER['PHP_SELF'])."
//il nome della pagina del form es. URL=contattami.htm
//se vuoi aumentare o diminuire il tempo di permanenza dell'avviso
//modifica il valore di content='4; es. content='2;
}
?>

<!-- parte riservata al form -->
<form method='post' action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>'>
<p> Nome e Cognome:</p>
<input type=text name="realname">
<p>Email:</p>
<input type=text name="email">
<p>Messaggio:</p>
<textarea name="messaggio" cols="40" rows="5"></textarea>
<br>
<br>
<input type="Submit" value="Invia" name="invio">
</form>
</body>
</html>
 

temino

Utente Attivo
22 Gen 2011
47
0
0
nuovo problema! XD

Ora mi trovo davanti ad un nuovo problema...

se apro la pagina dei contatti con explorer, alcuni box model css appaiono spostati... invece nell'index non ci sono problemi...

se uso google chrome non ho problemi..

a cosa può essere dovuto?
 

blackswan

Nuovo Utente
11 Mar 2011
23
0
0
tornare ad una pagina diversa

ciao a tutti!
volevo fare una domanda riferita al form in php che è stato postato sopra.

dopo l' inserimento dei dati e aver cliccato sul tasto invio e dopo esseremi comparsa la scritta grazie per aver inviato l'email ecc.... vorrei che mi tornasse ad una pagina che decido io .
qualcuno può indicarmi come e dove devo cambiare il form.

grazie in anticipo
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
guarda chh te l'avevo scritto come andare ad un altra pagina

PHP:
//.....
//e ritorni al form pulito 
echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
//se fai due pagine al posto di ".htmlspecialchars($_SERVER['PHP_SELF'])." 
//il nome della pagina del form es. URL=contattami.htm 
//se vuoi aumentare o diminuire il tempo di permanenza dell'avviso 
//modifica il valore di content='4; es. content='2; 
//....
oppure un urle a tuo piacere
es.
echo "<meta http-equiv='Refresh' content='4; URL=pagina_a_cui_voglio_andare.php'>";
 

blackswan

Nuovo Utente
11 Mar 2011
23
0
0
si si infatti lo avevo visto allora credo che il problema fosse che la pagina che avevo messo era .html devo invece inserire un .php:) grazie mille per la risposta molto celere:)))
 

blackswan

Nuovo Utente
11 Mar 2011
23
0
0
farti un'altra domanda .....

volendo iserire dei campi aggiuntivi tipo:
data, ora, e un capo con un menu a tendina con delle dicidure da scegliere in base alle esigenze ...sarebbe difficile realizzarlo?:)
grazie ancora per la pazienza
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
....che avevo messo era .html ....
non può essere htm, html, php, asp
tutto dipende da cosa vuoi fare nella pagina a cui riinvii, se ha contenuti dinamici deve essrere o php o asp, altrimenti htm o html
per il resto devi avere pazienza, sono via per alcuni gg
 

blackswan

Nuovo Utente
11 Mar 2011
23
0
0
<?php
//parte riservata all'invio

//qui scrivi le funzioni di controllo di quanto immesso nel form
function valida_email($em){//verifica che l'indirizzo email sia sintatticamente corretto
$em=filter_var($em, FILTER_SANITIZE_EMAIL);
if(!filter_var($em, FILTER_VALIDATE_EMAIL)){
return "*#*";//indirizzo non corretto
}else{
return $em;//indirizzo corretto
}
}
function valida_nome($no){
//suddivido per "didattica", ma poi puoi semplificare
$no=trim($no);//tolgo gli spazi iniziali e finali, si vuota se messo solo spazi
$no=strip_tags($no);//tolgo tutti i tag html
if($no==""){
return "*#*";//non è stato inserito il nome o solo spazi
}else{
return $no;//il nome non dovrebbe essere pericoloso e contiene qualcosa
}
}
function valida_cognome($co){
//suddivido per "didattica", ma poi puoi semplificare
$co=trim($co);//tolgo gli spazi iniziali e finali, si vuota se messo solo spazi
$co=strip_tags($co);//tolgo tutti i tag html
if($co==""){
return "*#*";//non è stato inserito il nome o solo spazi
}else{
return $co;//il nome non dovrebbe essere pericoloso e contiene qualcosa
}
}

function valida_testo($tx){
$tx=trim($tx);
$tx=strip_tags($tx, "<br> <p>");
//in questo modo tolgo tutti i tag esclusi qulle di fine liena e paragrafo
//nel caso l'inio sia in formato html
if($tx==""){
return "*#*";//non è stato inserito alcun testo o solo spazi
}else{
return $tx;//il testo non dovrebbe essere pericoloso e contiene qualcosa
}
}
//fine funzioni controllo sono il minimo del fattibile
//qui inizio a raccogliere i dati inviati dal form
if(isset($_POST['invio'])){//è stato premuto il tasto di submit
//attenta i nomi dentro $_POST devono corrispondere esattamente ai nomi dei campi del form
//metto a stinga vuota una variabile che mi servirà in seguito
$ok_ko.="";
$nome=$_POST['realname'];
$cognome=$POST['realcognome'];
$email=$_POST['email'];
$messaggio=$_POST['messaggio'];
//e li verifico
$nome=valida_nome($nome);
if($nome=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il tuo nome";
}
$cognome=valida_cognome($cognome);
if($cognome=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il tuo cognome";
}

$email=valida_email($email);
if($email=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito l'indirizzo email o errato";
}
$messaggio=valida_testo($messaggio);
if($messaggio=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il testo";
}
//fine verifiche se la variabile $ok_ko. è rimasta vuota tutto OK
//quindi posso spedire
if($ok_ko==""){

//preparo delle variabili chi mi possono servire
$destinatiario="emailmia";//qui devi mettere il tuo indirizzo
//$inviata_il="emeil inviata il: ".$cognome."<br>";//questa è per bellezza
$inviata_da="email da: ".$nome.$cognome."<hr>";
//$inviata_da="email da: ".$cognome."<hr>";
$oggetto = "richiesta informazioni";//o altro messaggio
//nel messaggio concateno alcune variabili ottenendo il testo da inviare
$testo=$inviata_il.$inviata_da.nl2br($messaggio);
//invio in formato html
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: $nome <$email>" . "\r\n";
//e qui ti uso la nativa mail() poi visto che l'appetito vien mengiando....
//prima o poi passere alla classe maillerphp
//tento l'invio
if(mail($destinatiario,$oggetto,$testo,$headers)){
$ok_ko.="<br>Grazie per avermi contattato<br>ti risponder&ograve; quanto prima";
}else{
$ok_ko.="<br>c'&eacute; stato un errore di trasmissione: riprova pi&ugrave; tardi";
}

}
//mostri l'avviso se OK o KO
echo $ok_ko;
//e ritorni al form pulito
echo "<meta http-equiv='Refresh' content='4; URL=index.html'>";
//se fai due pagine al posto di ".htmlspecialchars($_SERVER['PHP_SELF'])."
//il nome della pagina del form es. URL=contattami.htm
//se vuoi aumentare o diminuire il tempo di permanenza dell'avviso
//modifica il valore di content='4; es. content='2;
}
?>


Ho provato ad aggiungere solo il cognome ma devo aver sbagliato in qualcosa perche quando compilo tutto i campi e clicco su invia mi dice sempre cognome non iserito ....
magari tu capisci al volo dove ho errato...
grazie ciao
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
non vedo il $_POST

$cognome=$_POST['cognome'];
o simile
poi non serviva che tu facessi un'altra funzione
function valida_cognome($co){.....
bastava che tu usassi la
function valida_nome($no){......
e per verificare
$cognome=valida_nome($cognome);
se noti le due funzioni sono uguali

poi
if($cognome=="*#*"){//il cognome è vuoto
$ok_ko.="<br>NON hai inserito il tuo cognome";
}
 

blackswan

Nuovo Utente
11 Mar 2011
23
0
0
ciao!! grazie mille per quell'errore che non avevo visto non mi funzionava!grazie davvero!!:)

io vorrei aggiungerci un campo per inserire il numero di telefono.....se per te non è troppo disturbo potresti aiutarmi a crearlo...ho cercato in giro ma non ho trovato nulla...

cmq intanto ti ringrazio per utte le risposte e i problemi che mi hai risolto!
ciao
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
per l'input metti un campo come per nome es.
<input type=text name="telefono">
poi ricavi col solito
$tel=$_POST['telefono'];

PHP:
<?php
function valida_tel($t){
	//guarda che verifica OK numeri solo composti da cartteriri numerici
	//togli tutti gli spazi oltre all'eventuale primo e ultimo
	//trasforma il numere es da 049 33344 a 04933344
	$t=str_replace(" ","",$t);
	if($t=""){
		//c'erano solo spazi
		//se il numero di telefono non è obbligatorio togli return "*#*";
		return "*#*";//non corretto vuoto
		//e metti return "";
		//stesso discorso per gli altri return "*#*";
	}else{
		//qui verifiche la lunghezza del numero
		//eventualmente poi puoi variare la minima e la massima
		$lungo=strlen($t);
		if($lungo < 7 || $lungo > 15){
			return "*#*";//non corretto troppo corto o troppo lungo
		}else{
			$tel_valido="";
			//verifico carattere per carattere
			for($k=0; $k < $lungo; $k++){
				if($t[$k] < "0" || $t[$k] > "9"){
					//ho trovato un carattere che non è numerico esco senza proseguire
					return "*#*";//trovato carattere non corretto
				}else{
					//ricostruisco il numero
					$tel_valido.=$t[$k];
				}
			}//fine for
			//a questo punto il numero è formamlmente corretto
			//sarebbe da verificare che non sia es tutti 0
			return $tel_valido;
		}
	}
}//fine function
//se metti tutti i return ""; o ti restituisce un campo vuoto o il numero di telefono formalmente corretto
?>
poi se il numero è obbligatorio fai l'if
PHP:
<?php
//.....
$tel=valida_tel($t);
if($tel=="*#*"){//il numero è vuoto o non corretto
$ok_ko.="<br>NON hai inserito il tuo numero di telefono o non corretto"; 
} 
//....
?>
se invece il numero non è obbligatorio, quindi può essere vuoto (dopo aver modificato i vari return), basta che tu faccia
senza mettere l'if
PHP:
<?php
//....
$tel=valida_tel($t);
//...
?>

p.s.
la function è un po' arzigogolata, ma è quella che avevo usato tempo fa
 
Discussioni simili
Autore Titolo Forum Risposte Data
U PHP bottone per invio mail o ritorno al form PHP 15
C Come posso integrare il bottone "paga adesso" di paypal e un form php per invio dati? PHP 1
B Problema form mail per invio doppio allegato PHP 1
A Problema orario invio mail per form PHP 4
L Aiuto per ultimazione form invio email PHP 3
P Form per invio mail PHP 27
C Form per invio immagini Javascript 15
P ASP form invio dati + file per email Classic ASP 4
G Aiuto per creare un form di invio file Classic ASP 3
M Collegare iframe e form per l'invio Javascript 3
L form immagini per il database PHP 0
T [PHP] Creare Honeypot per form contatti PHP 10
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
I Guida/Tutorial configurare PHPMailer per inviare mails tramite contact form? PHP 2
M [PHP] Framework per form complessi (configuratore prodotto) PHP 6
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
Z [MySQL] Campi corretti per form... MySQL 2
sandropochi [PHP] Form per creare filtro di ricerca su DB PHP 8
K [WordPress] Plugin per inserire un form per la ricerca in un database.. come si fa? WordPress 1
U [PHP] form per ricerca multipla: Unknown column 'undefined' in 'where clause' PHP 2
S Concatenare due campi di un form per creare un indirizzo web valido Javascript 7
xone Form completo Testi + multiple image per inserimento Annunci PHP 0
A Form per modifica record database PHP 9
F aiuto per funzionamento sito responsive e form contatti HTML e CSS 29
elpirata Idee per personalizzare form HTML e CSS 9
L errore mysql per form di registrazione PHP 3
E Correzione per form PHP/HTML PHP 3
P Recupero dati per select form PHP 9
A consiglio uso jquery php per mostrare parte di un form PHP 6
A consiglio uso jquery per mostrare parte di un form jQuery 0
A Aiuto per Select form dinamica PHP 0
L come passare il campo allegato dal file html al fiel php per spedirlo con un form PHP 12
S Form per mandare la mail HTML e CSS 2
M [risolto] Script ajax per form e mappe Ajax 6
B aiuto per Form di eliminazione record PHP 21
asevenx form per formattare testo e inserirlo in databse PHP 1
U form mail per inviare tracciabilità corriere PHP 0
F Controlli form per Registrazione utenti PHP 9
A Pulsante per compilare una form php in automatico con dati presi da un db PHP 6
F Crear un form Contatti, per un Bed&Breakfast, dinamico, con Wordpress WordPress 3
A form in php o html per raccolta mail PHP 4
A da dove incominciare per fare vari form PHP 2
M Problema con form per accesso area riservata ai soci PHP 2
P Form per ricerca multipla in MYsql PHP 2
A problema con un semplice form per un loggin in php PHP 2
M Sicurezza dati form per insert e select in database PHP 11
C Aiuto per form PHP 5
A Aiuto per form email con allegato PHP 4
YellowMan Form mail per WordPress in italiano WordPress 2
P Mercatino Form annunci per regione Classic ASP 8

Discussioni simili