Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: invio email

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216

    invio email

    ho questo script:
    codice:
    <?php 
    // Processo di recupero dei dati del form
    $nome = $_POST['nome'];
    $nome = $_POST['cognome'];
    $email = $_POST['mail'];
    $oggetto = $_POST['oggetto'];
    $testo = $_POST['testo'];
    
    // Processo di configurazione dell'email impostare destinatario e mtittente
    
    // [Destinatario, mittente, ecc] 
    $mail_to = "indirizzo@mail.com";
    $mail_from = "$mail";
    $mail_subject = "$oggetto";
    $mail_body = "$testo";
    
    // Intestazioni HTML
    $mail_in_html = "MIME-Version: 1.0\r\n";
    $mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $mail_in_html .= "From: <$mail_from>";
    
    // Processo di invio della mail
     mail($mail_to, $mail_subject, $mail_body, $mail_in_html)
    
    ?>
    e questo form:
    codice:
    <form action="#" name="modulo" method="post">
    Nome
    
    <input name="nome" type="text"/>
    
    Cognome
    
    <input name="cognome" type="text"/>
    
    E-Mail
    
    <input name="mail" type="text"/>
    
    Oggetto
    
    <input name="oggetto" type="text"/>
    
    Il tuo messaggio
    
    <textarea cols="40" rows="10"></textarea>
    
    <input type="submit" value="Invia" />
    </form>
    come faccio a fargli mandare l'email al click del pulsante???
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    in <form action="#" name="modulo" method="post"> cambia # con il nome dell'altro script... se p.es. fosse mail.php <form action="mail.php" name="modulo" method="post">

    ...lo script mail.php se non genera output comporterebbe una pagina "bianca" nel browser... potresti (1)aggiungere dell'output, (2)mostrare l'esito dell'invio o (3)rimandare l'utente su un'altra pagina (da aggiungere "in coda" se non c'è altro nello script):

    1) ...(tutto l'output HTML che vuoi)...
    2) if ($mail) { print 'OK'; } else { print 'ERRORE'; };
    3) header('location: nomepagina.php'); // alla pagina che vuoi tu

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    scusami mi sono spigato male...

    lo script e il form sono sulla stessa pagina...

    quindi dovrei, credo, richiamare lo script al click del pulsante
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non importa se sono nella stessa pagina: la risposta è valida lo stesso... sarebbe meglio modificare il pulsante di invio assegnando un nome (es.: <input type="submit" value="Invia" name="inviato"/>) e racchiudere tutto il blocco di invio in un controllo:

    Codice PHP:
    if (isset($_POST['inviato'])) {
      ...
    }; 
    in modo che venga eseguito solo all'invio del form

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    ok perfetto...

    ti chiedo un'ultima cosa
    dallo script che ti ho postato, come faccio a fare dei controlli se i campi sono stati inseriti e sulla validità dell'email???
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se accedi all'IF significa che l'utente ha inviato i dati, quindi devi "solo" controllarne la forma, p.es.

    if ((strlen($_POST['nome']))<10) { ... } // se vuoi nomi di almeno 10 caratteri

    e così via...

    per controlli più precisi dovresti usare le regexp che ti permettono di controllare la forma con dei "pattern"... a seconda della versione PHP puoi anche fare:

    if (filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL)) { ... };

    che è true solo se la mail è valida, v. filter_var.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    Originariamente inviato da eiyen
    se accedi all'IF significa che l'utente ha inviato i dati, quindi devi "solo" controllarne la forma, p.es.
    ma io devo contrallare che siano stati inseriti tutti, cioè li devo rendere obbligatori...

    in più devo contrallare la validità dell'email...
    avevo trovato questo script ma non so ne vome la devo richiamare ne se funziona

    codice:
    function ControlloEmail($email){
    	$result = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$email);
    	if($result == false){
    		return false;
    	}else{
    		return true;
    	}
    }
    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    il controllo che ti ho detto va bene... se imposti una lunghezza minima (o anche controlli semplicemente con un !='') puoi tenere traccia degli "errori": se poi alla fine hai anche un solo errore il form lo riproponi.

    Inoltre ti consiglio di mettere anche un controllo lato client che impedisca a priori l'invio se i campi sono vuoti (->JavaScript)

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    216
    perfetto ti ringrazio del consiglio...

    ma ho un problemino:
    ho fatto un javascript che fa il controllo e se va tutto bene invia la pagina a quella che contiene lo script per l'invio.

    entrambi gli script funzionano ma insieme non riesco a inviare la mail; cioè il controllo sui campi lo fa, quindi se qualcosa non "gli piace" non va alla pagina di invio, ma se tutto va bene non invia la mail

    gli script:

    pagina contatti.php
    codice:
    <script language="javascript">
    <!--
    function Modulo() {
    var nome = document.modulo.nome.value;
    var cognome = document.modulo.cognome.value;
    var mail = document.modulo.mail.value;
    var oggetto = document.modulo.oggetto.value;
    var testo = document.modulo.testo.value;
    
    var email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    
            //Effettua il controllo sul campo NOME
            if ((nome == "") || (nome == "undefined")) {
               alert("Il campo Nome è obbligatorio.");
               document.modulo.nome.focus();
               return false;
            }
            //Effettua il controllo sul campo COGNOME
            else if ((cognome == "") || (cognome == "undefined")) {
               alert("Il campo Cognome è obbligatorio.");
               document.modulo.cognome.focus();
               return false;
    		}
    		//Effettua il controllo sul campo EMAIL
    		else if (!email.test(mail) || (mail == "") || (mail == "undefined")) {
               alert("Inserire un indirizzo email corretto.");
               document.modulo.mail.focus();
               return false;
            }
    		 //Effettua il controllo sul campo OGGETTO
            else if ((oggetto == "") || (oggetto == "undefined")) {
               alert("Il campo Oggetto è obbligatorio.");
               document.modulo.oggetto.focus();
               return false;
    		}
    		//Effettua il controllo sul campo TESTO
            else if ((testo == "") || (testo == "undefined")) {
               alert("Il campo è obbligatorio.");
               document.modulo.testo.focus();
               return false;
    		}
    		     //INVIA IL MODULO
            else {
               document.modulo.action = "invio.php";
               document.modulo.submit();
            }}
    		-->
    		</script>
    
    -------------------------------------------------------------------------------
    
    <form name="modulo" method="post" >
    Nome
    
    <input name="nome" type="text"/>
    
    Cognome
    
    <input name="cognome" type="text"/>
    
    E-Mail
    
    <input name="mail" type="text"/>
    
    Oggetto
    
    <input name="oggetto" type="text"/>
    
    Il tuo messaggio
    
    <textarea cols="40" rows="10" name="testo"></textarea>
    
    <input type="button" value="Invia" name="inviato" onClick="Modulo()"/>
    </form>
    invio.php

    Codice PHP:
    if (isset($_POST['inviato'])) { 
    // Processo di recupero dei dati del form
    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $email $_POST['mail'];
    $oggetto $_POST['oggetto'];
    $testo $_POST['testo'];

    // Processo di configurazione dell'email impostare destinatario e mtittente

    // [Destinatario, mittente, ecc] 
    //$mail_to = "indirizzo@mail.ext";
    $mail_to "indirizzo@mail.ext";
    $mail_from "$email";
    $mail_subject "$oggetto";
    $mail_body "Da $nome $cognome$email
    $testo";

    // Intestazioni HTML
    $mail_in_html "MIME-Version: 1.0\r\n";
    $mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $mail_in_html .= "From: <$mail_from>";

    // Processo di invio della mail
     
    mail($mail_to$mail_subject$mail_body$mail_in_html);

    Server utilizzato: MySQL


    (cit.)
    Un misto tra pazzia ed intelligenza

  10. #10
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, utilizza la classe PHPMailer, invece della funzione nativa PHP mail()...la trovi qui, sono sicuro che non avrai più problemi nell'invio di mail in futuro.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.