Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [PHP] Invio mail

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104

    [PHP] Invio mail

    Salve a tutti.
    Sto imparando un po' di php e ho un problema con l'invio di una mail da una form.
    Ecco il codice:

    Codice PHP:
    <?php 
    $to 
    "lulyluna@hotmail.it";  

    $object "Modulo di contatto - matrimonirc";  


    $body "Contenuto della mail:\n\n";
    $body .= "Nome: " . ($_POST["nome"]) . "\n";
    $body .= "Cognome: " . ($_POST["cognome"]) . "\n";
    $body .= "Recapito: " . ($_POST["recapito"]) . "\n";
    $body .= "Testo: " . ($_POST["testo"]) . "\n";  

    if (@
    mail($to$object$body)) {    
    echo 
    "La richiesta è stata inoltrata con successo!";
    } else {    
    echo 
    "Siamo spiacenti, si è verificato un errore!";}

    ?>

    Il problema è sicuramente nei campi, perché l'email arriva ma con i campi vuoti
    Praticamente il contenuto del messaggio che arriva è:

    Contenuto della mail;
    Nome:
    Cognome:
    Recapito:
    Testo:

    tutto vuoto. gli id degli input (del codice html) corrispondono con i nomi utilizzati qui nel codice php
    Ultima modifica di LuLyLuNa; 19-12-2014 a 18:52

  2. #2
    Posta anche il form HTML.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    questo è il form
    codice HTML:
    <form name="contacts-form" id="contacts-form" action="dati.php" method="post">
    <fieldset>Inviaci la tua richiesta di preventivo e sarai ricontattato dal nostro staff: <br><br>                                <label for="nome">Nome<br /></label>
    <input id="nome" type="text" name="nome" onkeydown="controlla(event);"/><br><br>
    <label for="cognome">Cognome<br/></label>
    <input id="cognome" type="text" name="cognome" onkeydown="controlla(event);"/> <br><br>
    <label for="recapito">Recapito<br /></label>
    <input id="recapito" type="text" name="recapito" /> <br><br>
    <label for="testo">Testo</label><br>
    <textarea id="testo" name="testo" rows="7" cols="40"></textarea><input type="button" value="Invia i dati" onclick="controllaForm()"/>                                
    </fieldset></form>

    questi i controlli sui dati inseriti
    codice HTML:
    <script type="text/javascript">  
    function controlla(ev) {                       
    if (ev.which==32 && ev.target.value.length==0) {                            
    ev.preventDefault();                        
    }                        
    if ((ev.which<65 || ev.which>90) &&                            
    ev.which!=8 && ev.which!=9 && ev.which!=32 && ev.which!=46 && (
    ev.which<37 || ev.which>40) ) {                            
    ev.preventDefault();                        
    }                    
    }                                        
    
    function controllaForm(){                        
    var errori=false;                        
    if (document.getElementById("nome").value==""){                            
    errori=true;                        
    } else if (document.getElementById("cognome").value=="") {                            
    errori=true;                        
    } else if (document.getElementById("recapito").value=="") {                            
    errori=true;                            
    } else if (document.getElementById("testo").value=="") {                            
    errori=true;                        
    }                                                
    
    if (errori) {                            
    window.alert("Errore: compilare tutti i campi correttamente!");                        
    } else {                            
    window.open('dati.php','nuovapagina','width=500, height=400, left=350, top=200');                            
    document.getElementById("nome").value =  "";                            
    document.getElementById("cognome").value =  "";                            
    document.getElementById("recapito").value =  "";                            
    document.getElementById("testo").value =  "";                        
    }                    
    }                
    </script>

  4. #4
    Credo che window.open non faccia effettivamente un submit dei dati, ma non sono ferratissimo in javascript.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Credo che window.open non faccia effettivamente un submit dei dati
    Confermo.

    Potresti modificare così:
    HTML
    codice:
    <!-- nota il target nel tag form e l'evento onsubmit al posto dell'evento onclick sul pulsante di invio-->
    <form name="contacts-form" id="contacts-form" action="dati.php" method="post" target="nuovapagina" onsubmit="return controllaForm()">
    <fieldset>Inviaci la tua richiesta di preventivo e sarai ricontattato dal nostro staff: <br><br>                                <label for="nome">Nome<br /></label>
    <input id="nome" type="text" name="nome" onkeydown="controlla(event);"/><br><br>
    <label for="cognome">Cognome<br/></label>
    <input id="cognome" type="text" name="cognome" onkeydown="controlla(event);"/> <br><br>
    <label for="recapito">Recapito<br /></label>
    <input id="recapito" type="text" name="recapito" /> <br><br>
    <label for="testo">Testo</label><br>
    <textarea id="testo" name="testo" rows="7" cols="40"></textarea><input type="submit" value="Invia i dati"/>                                
    </fieldset></form>
    Javascript:
    codice:
    <script type="text/javascript">  
    function controlla(ev) {                       
    if (ev.which==32 && ev.target.value.length==0) {                            
    ev.preventDefault();                        
    }                        
    if ((ev.which<65 || ev.which>90) &&                            
    ev.which!=8 && ev.which!=9 && ev.which!=32 && ev.which!=46 && (
    ev.which<37 || ev.which>40) ) {                            
    ev.preventDefault();                        
    }                    
    }                                        
    
    function controllaForm(){                        
    var errori=false;                        
    if (document.getElementById("nome").value==""){                            
    errori=true;                        
    } else if (document.getElementById("cognome").value=="") {                            
    errori=true;                        
    } else if (document.getElementById("recapito").value=="") {                            
    errori=true;                            
    } else if (document.getElementById("testo").value=="") {                            
    errori=true;                        
    }                                                
    
    if (errori) {                            
    alert("Errore: compilare tutti i campi correttamente!");
    return false;                        
    } else {                            
    window.open('about:blank','nuovapagina','width=500, height=400, left=350, top=200');                     
    }                    
    }                
    </script>
    Comunque i popup sono da web 1.0

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    sempre email vuota...
    cosa mi suggerisci riguardo i popup? sto imparando, ogni consiglio è ben accetto

    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Confermo.

    Potresti modificare così:
    HTML
    codice:
    <!-- nota il target nel tag form e l'evento onsubmit al posto dell'evento onclick sul pulsante di invio-->
    <form name="contacts-form" id="contacts-form" action="dati.php" method="post" target="nuovapagina" onsubmit="return controllaForm()">
    <fieldset>Inviaci la tua richiesta di preventivo e sarai ricontattato dal nostro staff: <br><br>                                <label for="nome">Nome<br /></label>
    <input id="nome" type="text" name="nome" onkeydown="controlla(event);"/><br><br>
    <label for="cognome">Cognome<br/></label>
    <input id="cognome" type="text" name="cognome" onkeydown="controlla(event);"/> <br><br>
    <label for="recapito">Recapito<br /></label>
    <input id="recapito" type="text" name="recapito" /> <br><br>
    <label for="testo">Testo</label><br>
    <textarea id="testo" name="testo" rows="7" cols="40"></textarea><input type="submit" value="Invia i dati"/>                                
    </fieldset></form>
    Javascript:
    codice:
    <script type="text/javascript">  
    function controlla(ev) {                       
    if (ev.which==32 && ev.target.value.length==0) {                            
    ev.preventDefault();                        
    }                        
    if ((ev.which<65 || ev.which>90) &&                            
    ev.which!=8 && ev.which!=9 && ev.which!=32 && ev.which!=46 && (
    ev.which<37 || ev.which>40) ) {                            
    ev.preventDefault();                        
    }                    
    }                                        
    
    function controllaForm(){                        
    var errori=false;                        
    if (document.getElementById("nome").value==""){                            
    errori=true;                        
    } else if (document.getElementById("cognome").value=="") {                            
    errori=true;                        
    } else if (document.getElementById("recapito").value=="") {                            
    errori=true;                            
    } else if (document.getElementById("testo").value=="") {                            
    errori=true;                        
    }                                                
    
    if (errori) {                            
    alert("Errore: compilare tutti i campi correttamente!");
    return false;                        
    } else {                            
    window.open('about:blank','nuovapagina','width=500, height=400, left=350, top=200');                     
    }                    
    }                
    </script>
    Comunque i popup sono da web 1.0
    Ultima modifica di LuLyLuNa; 20-12-2014 a 23:18

  7. #7
    L'ho testato con Chrome, Firefox, IE e Safari ed ha sempre inviato la mail correttamente
    www.lucavizzi.it/luly

    Riguardo il popup non saprei cosa consigliarti, dovrei vedere il sito, magari potresti usare come target un iframe nascosto, per restare sulla stessa pagina.
    Ultima modifica di lucavizzi; 21-12-2014 a 00:11

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    L'ho testato con Chrome, Firefox, IE e Safari ed ha sempre inviato la mail correttamente
    www.lucavizzi.it/luly

    Riguardo il popup non saprei cosa consigliarti, dovrei vedere il sito, magari potresti usare come target un iframe nascosto, per restare sulla stessa pagina.
    trovato il problema... elimino come hai fatto tu i
    document.getElementById che mi "svuotavano" il box di input,
    così la mail arriva correttamente... erano quei comandi che impostavano valore vuoto prima di inviare...
    come faccio quindi a non fare andare in conflitto le due cose e, quindi, a eliminare i dati inseriti dopo che clicca invia?
    Ultima modifica di LuLyLuNa; 21-12-2014 a 18:01

  9. #9
    Dovresti resettare dal file dati.php

    Codice PHP:
    <?php
    $to 
    "lulyluna@hotmail.it";  

    $object "Modulo di contatto - matrimonirc";  


    $body "Contenuto della mail:\n\n";
    $body .= "Nome: " . ($_POST["nome"]) . "\n";
    $body .= "Cognome: " . ($_POST["cognome"]) . "\n";
    $body .= "Recapito: " . ($_POST["recapito"]) . "\n";
    $body .= "Testo: " . ($_POST["testo"]) . "\n";  

    if (@
    mail($to$object$body)) {    
    echo 
    "La richiesta è stata inoltrata con successo!";
    } else {    
    echo 
    "Siamo spiacenti, si è verificato un errore!";}
    ?>
    <script type="text/javascript">
    window.opener.document.getElementById('contacts-form').reset();
    //senza cancellarli uno ad uno ;-)
    </script>
    Dai un'occhiata qui anche:
    http://www.w3schools.com/tags/att_input_required.asp

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.