Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Problema form invio email - NON INVIA !!!

    Su consiglio di skjobax ho usato livevalidation per validare il mio form di invio email.
    Il problema è che adesso non invia più la mail.
    Secondo voi dov'è l'intoppo

    il form:
    codice:
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <link rel="stylesheet" href="style.css" type="text/css">
    <title>Esempio LiveValidation - Validate.Email</title>
    
    <script type="text/javascript" src="livevalidation.js"></script>
    <link rel="stylesheet" href="livevalidation.css" type="text/css">
    
    </head>
    
    <body>
    <form action="formmail.php" method="POST" enctype="multipart/form-data" onSubmit="return false">
    <input type="hidden" name="destinatario" value="giuseppe.dibaudo@gmail.com">
    <table border="0">
    <tr>
      <td>Nome e Cognome:</td>
      <td><input type="text" name="nominativo" id="nominativo" value="" /></td>
    </tr>
    <tr>
      <td>Tua Mail:</td>
      <td><input type="text" name="mittente" id="mittente" value="" /></td>
    </tr>
    <tr>
      <td>Oggetto:</td>
      <td><input type="text" name="oggetto" value="" /></td>
    </tr>
    <tr>
      <td>Messaggio:</td>
      <td><textarea cols="20" rows="4" name="messaggio"></textarea></td>
      </tr>
    <tr>
      <td>Allega file:</td>
      <td><input type="file" name="allegato_1" /></td>
    </tr>
    <tr>
      <td>Allega file:</td>
      <td><input type="file" name="allegato_2" /></td>
    </tr>
    <tr>
      <td>Allega file:</td>
      <td><input type="file" name="allegato_3" /></td>
    </tr>
    <tr>
      <td colspan="2"></td>
    </tr>
    <tr>
      <td colspan="2">Accetta le condizioni:
    
        <input name="checkbox" type="checkbox" id="condizioni" /></td>
    </tr>
    <tr>
      <td colspan="2"></td>
    </tr>
    <tr>
      <td colspan="2"><input type="submit" value="Invia" /></td>
    </tr>
    </table>
    </form>
    <script type="text/javascript">
    var nominativo = new LiveValidation('nominativo', { onlyOnSubmit: true });
    nominativo.add(Validate.Presence);
    var mittente = new LiveValidation('mittente', { onlyOnSubmit: true });
    mittente.add(Validate.Presence);
    mittente.add(Validate.Email);
    var condizioni = new LiveValidation('condizioni', { onlyOnSubmit: true });
    condizioni.add(Validate.Acceptance);
    </script>
    </body>
    </html>
    il file che invia la mail:
    Codice PHP:
    <?php
    // Recupero il valore dei campi del form
    $destinatario $_POST['destinatario']; 
    $nominativo $_POST['nominativo']; 
    $mittente $_POST['mittente']; 
    $oggetto $_POST['oggetto']; 
    $messaggio $_POST['messaggio']; 
    $allegato_1 $_FILE['allegato_1']; 
    $allegato_2 $_FILE['allegato_2']; 
    $allegato_3 $_FILE['allegato_3']; 

    require_once(
    "class.phpmailer.php"); 
    $mail = new PHPMailer(); 
    $mail->From     $mittente
    $mail->FromName $nominativo
    $mail->AddAddress($destinatario); 
    $mail->AddCC($mittente); 
    $mail->AddReplyTo($mittente); 
    $mail->IsHTML(true); 
    $mail->Subject  =  $oggetto
    $mail->Body     =  $messaggio."
    "
    .$nominativo
    $mail->AltBody  =  $bodytxt
    $mail->AddAttachment($_FILES['allegato_1']['tmp_name'],$_FILES['allegato_1']['name']); 
    $mail->AddAttachment($_FILES['allegato_2']['tmp_name'],$_FILES['allegato_2']['name']); 
    $mail->AddAttachment($_FILES['allegato_3']['tmp_name'],$_FILES['allegato_3']['name']); 

    if(!
    $mail->Send()){ 
        echo 
    "Si è verificato un errore nell'invio della mail"
    }else{ 
        echo 
    "Mail inviata con successo"

    ?>
    Prima di inserire il controllo funzionava alla grande...e poi...niente

  2. #2
    Ho provato a eliminare onSubmit="return false" e adesso mi dice che l'email è stata inviata, ma non arriva niente. Non riesco proprio a capire

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ma secondo te quando viene eseguito lo script? appena la pagina e' stata caricata o in risposta all'evento dell'invio del form?

    Devi mettere i controlli in una function da invocare nel tag form...

    <form ... onsubmit="return tuaFunzione()">

    e dalla funzione fatti restituire l'esito dei controlli.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    I controlli vengono eseguiti correttamente.
    Se provo senza controlli sui campi la mail parte, anche senza
    <form ... onsubmit="return miaFunzione()">
    visto che scrivo
    <form action="formmail.php" ...>

    formmail.php, come puoi vedere dal codice che ho postato prima, richiama la famosa classe phpmailer
    require_once("class.phpmailer.php");

    Quindi non credo che il problema sia da imputare alla mancanza di controlli inseriti in una function da invocare nel tag form. Soprattutto visto che i controlli funzionano...
    Qualche altra idea ?

  5. #5
    Credo che l'anomalia sia data dal fatto che livevalidation dovrebbe essere utilizzato differentemente quando si richiama una file php per l'invio della mail.
    Sarei curioso di vedere il codice di un invio mail che sfrutta livevalidation...secondo me le istruzioni sul sito ufficiale te le danno a metà, infatti gli esempi sono fittizi, compreso quello dell'invio email

  6. #6
    Ok, lasciamo stare livevalidatio e proviamo ad inserire un controllino a mano.
    Il controllo potrebbe essere di questo tipo:
    Codice PHP:
     $find "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+.[a-zA-Z]{2,4}$/"
        if(!
    preg_match($findtrim($toCheck))){ 
            return 
    false
        }else{ 
            return 
    true
        } 

    e andrebbe inserito in
    Codice PHP:
    if(!$mail->Send()){   
        echo 
    "Si è verificato un errore nell'invio della mail";   
    }else{   
        echo 
    "Mail inviata con successo";   
    }   
    ?> 
    Ma come ?
    $mail->Send() verifica solo che la mail da inviare non sia completamente vuota.
    Io dovrei verificare inoltre che è scritta correttamente con lo scipt che ho riportato prima, solo che non so come annidiare altre condizioni if else.
    Aiutatemi vi prego

  7. #7
    Is There Anybody Out There? :master:

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ma come caspita pretendi di inserire un controllo javascript in un controllo php??

  9. #9
    Avresti una soluzione alternativa funzionante pratica, non teorica ?
    Di teorie se ne sentono tante, di critiche pure...
    Ma pochi sono quelli che trovano le soluzioni realmente funzionanti.
    Sei in grado di aiutarmi ?

  10. #10
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ora non ho tempo da dedicare al tuo problema

    se hai una lacuna cosi' grande riguardo la logica client/server (fondamentale!) o ti metti a studiare o lasci perdere
    risolvere il problema contingente e' un palliativo

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.