Form per invio mail

PinkBetta

Utente Attivo
21 Lug 2009
1.414
0
0
www.pinkbetta.com
Ho provato a corregerla (il tuo file l'ho visto dopo) e ora va!
Mi sono inviata una mail ed è arrivata, però senza mittente.
La tua invece non è arrivata.
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
ciao
trovato l'errore, ho mi ero dimenticato io o nel tuo copy/paste era saltato

la riga 95 è la seguente

/preparo delle variabili chi mi possono servire

era saltato un slash, correggi in

//preparo delle variabili chi mi possono servire

oppure tira via completamente la riga (ocio a non tirar via altro) e riraricare e provare

Questo errore era già stato segnalato nel post numero 13. Ragazzi, leggete bene i 3D per evitare di allungare inutilmente le discussioni :)
 

aphexx

Nuovo Utente
5 Ott 2010
14
0
0
VE
ciao borgo,

premettendo che di php non so nulla, se volessi aggiungere allo script che hai fornito a pinkbetta un ulteriore controllo nel quale mi accerto che l'utente abbia preso visione dell'informativa privacy, cosa dovrei modificare/aggiungere?
Grazie per l'aiuto. Michele
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
nella parte html (prima del pulsante di submit devi inserire
HTML:
accetto bala...bla..bla...
<input name="privacy" type="checkbox" value="ok">
nella parte php
PHP:
<?php
//......quello che viene prima
$messaggio=$_POST['messaggio'];
$privacy=$_POST['privacy'];
//e li verifico
if($privacy){$privacy !="ok"){//se diverso da ok privacy non spuntata
	$ok_ko.="<br>NON hai accettato la privacy";//o il testo che preferisci
}
//ecc.. tutto quello che viene dopo....
?>
 

aphexx

Nuovo Utente
5 Ott 2010
14
0
0
VE
Ti ringrazio, pare funzionare bene.
Ho solo dovuto fare una piccola modifica alla parte IF in quanto Dreamweaver mi dava errore, mentre così pare andar bene.
PHP:
if($privacy !="ok"){//se diverso da ok privacy non spuntata
$ok_ko.="<br>NON hai accettato la privacy";//o il testo che preferisci

Un'ultima domanda, vorrei fare una modifica allo script in modo che l'oggetto della mail che viene ricevuta non sia un generico "richiesta di informazioni" ma quello inserito nell'apposito campo del form.
Ho provato a fare le modifiche del caso prendendo spunto dal tuo codice, ora però non so come fare in modo che l'oggetto venga effettivamente incorporato nella mail che ricevo.
Ti posto il codice da me modificato qui di seguito:

Grazie ancora!

PHP:
<?php
//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_oggetto($ob){
    //suddivido per "didattica", ma poi puoi semplificare
    $ob=trim($ob);//tolgo gli spazi iniziali e finali, si vuota se messo solo spazi
    $ob=strip_tags($ob);//tolgo tutti i tag html
    if($ob==""){
        return "*#*";//non è stato inserito il nome o solo spazi
    }else{
        return $ob;//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'];
    $subject=$_POST['subject'];
    $messaggio=$_POST['messaggio'];
    $privacy=$_POST['privacy']; 
    //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";
    }
    $subject=valida_oggetto($subject);
    if($subject=="*#*"){//il nome è vuoto
        $ok_ko.="<br>NON hai inserito l'oggetto del messaggio o errato";
    }
    $messaggio=valida_testo($messaggio);
    if($messaggio=="*#*"){//il nome è vuoto
        $ok_ko.="<br>NON hai inserito il testo";
    }
    if($privacy !="ok"){//se diverso da ok privacy non spuntata
    $ok_ko.="<br>NON hai accettato la privacy";//o il testo che preferisci
    }
    //fine verifiche se la variabile $ok_ko è rimasta vuota tutto OK
    //quindi posso spedire
    if($ok_ko==""){
        
        //preparo delle variabili chi mi possono servire
        $destinatario="[email protected]";//qui devi mettere il tuo indirizzo
        $inviata_il="email inviata il ".date("d/m/y",time())."<br>";//questa è per bellezza
        $inviata_da="email da: ".$email."<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($destinatario,$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;
}
?> 
<div id="container">
<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>Oggetto:</p>
<input type=text name="subject">
<p>Messaggio:</p>
<textarea name="messaggio" cols="40" rows="5"></textarea>
<br>
<br>
<input name="privacy" type="checkbox" value="ok">
<br />
<input type="Submit" value="invio" name="invio">
</form>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto una cosa, visto che sei un neofita:
se non erro hai fatto la funzione valida_oggetto($ob), se noti è uguale alla valida_nome($no), uno dei motivi per cui si usano le funzioni (o le classi) è per non ripetere sempre lo stesso codice, quini puoi toglerla e puoi scrivere al posto di

PHP:
    $subject=valida_oggetto($subject); 
    if($subject=="*#*"){//il nome è vuoto 
        $ok_ko.="<br>NON hai inserito l'oggetto del messaggio o errato"; 
    }
questo



PHP:
    $subject=valida_nome($subject); 
    if($subject=="*#*"){//il nome è vuoto 
        $ok_ko.="<br>NON hai inserito l'oggetto del messaggio o errato"; 
    }

fatto questo alla riga di invio

if(mail($destinatario,$oggetto,$testo,$headers)){

sostituisci $oggetto con $subject (o viceversa)

p.s.
nella parte if avevo fatto degli errori per il copia/incolla :(
 
Ultima modifica:

aphexx

Nuovo Utente
5 Ott 2010
14
0
0
VE
Ciao, funziona alla perfezione!

Il passo successivo sarà quello di implementare i controlli a livello dei singoli box ma per quello mi par di capire che sia necessario ricorrere al javascript...

Grazie mille ancora. Michele
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se li metti per bellezza ok, altrimenti sono meglio i controlli lato server (vedi quelli che hai in php). i controlli js sono facilmente aggirabili
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
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
T form per invio mail PHP 38
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

Discussioni simili