• User Attivo

    Che ti posso dire... può essere un aggiornamento del software o cose del genere ma dubito che uno script base così crei problemi.
    Prova a postare tutto il codice.


  • User

    Html:
    <form action="./mail.php" method="POST">
    <table border="0">
    <tr>
    <td>Nome</td>
    <td><input type="text" name="Nome" size="30"></td>
    </tr>
    <tr>
    <td>Età</td>
    <td><input type="text" name="Anni" size="5"></td>
    </tr>
    <tr>
    <td>Città</td>
    <td><input type="text" name="City" size="30"></td>
    </tr>
    <tr>
    <td>Indirizzo</td>
    <td><input type="text" name="Address" size="30"></td>
    </tr>
    <tr>
    <td valign="top">Note</td>
    <td><textarea rows="6" name="Note" cols="50"></textarea></td>
    </tr>
    <tr>
    <td colspan="2" valign="bottom" align="center" height="30">
    <input type="submit" value="Invia">
    <input type="reset" value="Cancella"></td>
    </tr>
    </table>
    </form>

    php:
    <?php
    $to = "[email protected]";
    $subject = "Modulo proveniente dal sito";
    $body = "Contenuto del modulo:\n\n";
    $body .= "Nome: " . trim(stripslashes($_POST['Nome'])) . "\n";
    $body .= "Età: " . trim(stripslashes($_POST['Anni'])) . "\n";
    $body .= "Città: " . trim(stripslashes($_POST['City'])) . "\n";
    $body .= "Indirizzo: " . trim(stripslashes($_POST['Indirizzo'])) . "\n";
    $body .= "Note: " . trim(stripslashes($_POST['Note'])) . "\n";
    $headers = "From: Modulo utenti[email protected]";
    if(@mail($to, $subject, $body, $headers)) { // SE L'INOLTRO È ANDATO A BUON FINE...
    echo "La mail è stata inoltrata con successo.";
    } else {// ALTRIMENTI...
    echo "Si sono verificati dei problemi nell'invio della mail.";
    }
    ?>

    Se uso questo mi restitusce l'errore... c'è modo di avere dettagli sull'errore?


  • User Attivo

    Per fare qualsiasi tipo di test, basta che crei due file semplicissimi.
    Nell'html crei un form con un campo che avrà come name, per esempio, "nome", il method POST e alla fine del form un pulsante submit. Nella pagina php una semplice riga che stampa a video il nome immesso nel form con:
    <?php echo $_POST['nome']; ?>
    Se così funziona vuol dire che sbagli qualcosa sul codice.

    Ma poi dici che c'è un errore... cosa dice? Qual'è? Gli errori sono la traccia da seguire. Difatti se nel codice ci sono delle chiocciole @ davanti alle funzioni. La @ serve per non stampare a video gli errori, quindi per capire che succede vanno tolte.


  • User

    Test fatti:

    • Html con solo il campo nome: funzionante.
    • Se tolgo la @ continua a darmi la stringa che metto nell'echo.
    • Se non metto la stringa echo mi da pagina bianca, ma email non arriva.
    • Se il formail (caricato su xoom) lo faccio puntare al php su xoom non va.
    • Se il formail (caricato su xoom) lo faccio puntare al php caricato su altervista la mail mi arriva, (file php identici).

    Ci possono essere problemi se il file php lo faccio girare su altervista e lascio tutto il resto su xoom?
    Anche se vorrei risolvere sto problema fastidioso.


  • User Attivo

    Ma poi dici che c'è un errore... cosa dice? Qual'è?
    Potresti fare così ma non riesco a capire:

    • Html con solo il campo nome: funzionante.
      Mica è quello che ti ho detto di fare io. Rileggi bene e poi dimmi... rispondi a tutto però! 😉

  • User

    Come errore mi appare quello che metto io nella stringa echo, niente di più (nel caso sopra: Si sono verificati dei problemi nell'invio della mail.)
    Se tolgo la stringa echo per l'errore mi restituisce pagina bianca.


  • User Attivo

    Come errore mi appare quello che metto io nella stringa echo, niente di più (nel caso sopra: Si sono verificati dei problemi nell'invio della mail.)
    Se tolgo la stringa echo per l'errore mi restituisce pagina bianca.

    Guarda che echo equivale a "Scrivimi la stringa a video" quindi se scrive quello che hai scritto è corretto.
    La funzione mail la si vede dopo che abbiamo stabilito che funziona tutto.

    Se l'errore che dici tu è quello che scrive quello che invii dal form a video allora php funziona correttamente.


  • User

    Vuoi dire che: php funziona quindi il problema è di xoom?

    Ci possono essere problemi se il file php lo faccio girare su altervista e lascio tutto il resto su xoom?

    Aspettando che che xoom mi dia una risposta più decente...


  • User

    Ciao a tutti...ciao portapipe come va?

    avrei bisogno di rendere obbligatori i campi $ragionesociale, $email e $ info

    Si potrebbe avere la soluzione integrata in questo codice?:)

    Innanzitutto grazie :ciauz:
    <?php
    $ragionesociale=$_POST['txtRagioneSociale'];
    $email=$_POST['txtEmail'];
    $info=$_POST['txtInfo'];
    $tutticampi='Ragione Sociale: '.$ragionesociale.' , Email: '.$email.' , Info: '.$info;
    mail("nomedella@mail","Richiesta Di Informazioni", $tutticampi);
    echo 'E-mail inviata con successo!!';
    ?>


  • User

    potresti scrivere così

    [PHP]
    <?php
    $ragionesociale=$_POST['txtRagioneSociale'];
    $email=$_POST['txtEmail'];
    $info=$_POST['txtInfo'];
    if ($ragionesociale) {
    if ($info) {
    if ($email) {
    //questo funziona solo con PHP >= 5.2
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $tutticampi='Ragione Sociale: '.$ragionesociale.' , Email: '.$email.' , Info: '.$info;
    mail("nomedella@mail","Richiesta Di Informazioni", $tutticampi);
    echo 'E-mail inviata con successo!!';
    } else
    echo "email non corretta!";
    } else
    "non hai inserito la email!";
    } else
    "non hai inserito le info!";
    } else
    "non hai inserito la ragione sociale!";
    ?>
    [/PHP]


  • User

    Grazie mille Emulman....adesso provo subito:)
    :ciauz:


  • User

    Ho provato ma non funziona...
    evidentemente non ho una versione di php 5.2 :bho:
    Infatti quando provo , mi esce solo una schermata bianca senza nessuna esecuzione, nemmeno una stringa di errore...nulla
    Come potrei fare per le versioni precedenti?

    grazie in anticipo


  • User Attivo

    Allora, ci sono molti modi per validare un form.
    I migliori sono quelli scritti in javascript e i super belli in jQuery (seguendo le indicazioni riesci a creare cose molto belle con poca conoscenza).
    Il sistema invece più semplice a mio avviso è fare un controllo sui campi.
    Se il campo è uguale a "" (cioè nessun carattere) allora rimanda alla pagina del form con un messaggio.
    Nella pagina form scrivi a video il messaggio mentre nella pagina invia metti il controllo:
    [PHP]
    //lo inserisci dove vuoi che compaia il messaggio
    <?php
    if($_GET['msg']){
    echo $_GET['msg'];
    }
    ?>
    [/PHP]
    In questo modo prenderà il messaggio dalla url solo se questo esiste.
    Nella pagina di invio invece metti per ogni campo:
    [PHP]
    <?php
    // qui dice: SE il campo txtRagioneSociale è uguale a nessun carattere
    if($_POST['txtRagioneSociale']==""){
    //allora reindirizzami alla pagina form passando la variabile msg tramite GET con il valore: Riempire tutti i campi obbligatori!
    header("location:form.php?msg=Riempire tutti i campi obbligatori!");
    }
    ?>
    [/PHP]
    Semplice no? Sono dei semplici controlli.
    Se il campo è vuoto mi reindirizzi. Non c'è bisogno di specificare altro (SE blabla ALTRIMENTI blabla) perché a noi interessa che non sia vuoto. SE è vuoto allora rimandami alla pagina altrimenti continua con lo script.
    Fai così per tutti i campi.
    Se vuoi puoi personalizzare tutti i messaggi oppure ne fai uno unico per tutti, in questo caso allora fai un controllo esteso per risparmiare tempo e spazio:
    [PHP]
    <?php
    // qui dice: SE il campo txtRagioneSociale è uguale a nessun carattere OPPURE (composto dalle due barre verticali) email OPPURE info sono uguali a nessun carattere
    if($_POST['txtRagioneSociale']=="" || $_POST['txtEmail']=="" || $_POST['txtInfo']==""){
    //allora reindirizzami alla pagina form passando la variabile msg tramite GET con il valore: Riempire tutti i campi obbligatori!
    header("location:form.php?msg=Riempire tutti i campi obbligatori!");
    }
    ?>
    [/PHP]

    Non è il sistema migliore ma è intuitivo e semplice per chi è alle prime armi! 🙂


  • User

    <?php
    // qui dice: SE il campo txtRagioneSociale è uguale a nessun carattere OPPURE (composto dalle due barre verticali) email OPPURE info sono uguali a nessun carattere
    if($_POST['txtRagioneSociale']=="" || $_POST['txtEmail']=="" || $_POST['txtInfo']==""){
    //allora reindirizzami alla pagina form passando la variabile msg tramite GET con il valore: Riempire tutti i campi obbligatori!
    header("location:form.php?msg=Riempire tutti i campi obbligatori!");
    }
    ?>

    Direi che questo può andare bene.
    Come viene integrato usando questo script?

    <?php
    $ragionesociale=$_POST['txtRagioneSociale'];
    $email=$_POST['txtEmail'];
    $info=$_POST['txtInfo'];
    $tutticampi='Ragione Sociale: '.$ragionesociale.' , Email: '.$email.' , Info: '.$info;
    mail("[email protected]","Richiesta Di Informazioni", $tutticampi);
    echo 'E-mail inviata con successo!!';

    grazie...:gthi:


  • User Attivo

    Se leggi bene il mio post c'è scritto.
    Se non lo vedi comunque ci arrivi per logica: i file php vengono compilati (diciamo eseguiti) dall'alto in basso quindi il controllo che hai quotato andrà prima della funzione mail.
    Puoi metterla anche all'inizio.
    LEGGI BENE quello che ho scritto nel posto precedente e arrivaci da solo...


  • User

    Ho provato e ci sono quasi riuscito.
    Quando lascio i campi vuoti nel form e premo su INVIA? il messaggio (tutti i campi sono obbligatori) esce correttamente!
    Il problema è che ilo messaggio parte ugualmente e nella mia posta elettronica, la email arriva logicamente priva di dati.
    Come devo fare per evitare che il messaggio parta anche quando i campi sono vuoti?
    Posto i 3 passaggi che ho fatto, per essere più preciso?

    1)Questa è la pagina del form in html presente sul sito:
    <form action="formmail2.php" method="post" name="frmModulo" id="frmModulo" onSubmit="return Convalida()">
    <table width="400"border="0"cellpadding="0"cellspacing="0"bgcolor="yellow">
    <tr>
    <td>Nome e cognome*: </td>
    <td><input name="txtRagioneSociale"type="text"id="txtRagioneSociale"size="34"></td>
    </tr>
    <tr>
    <td>Email*:</td>
    <td><input name="txtEmail"type="text"id="txtEmail"size="34"></td>
    </tr>
    <tr>
    <td valign="top">Messaggio:</td>
    <td><textarea name="txtInfo"cols="27"rows="6"id="txtInfo"></textarea></td>
    </tr>
    <tr>
    <td colspan="2">* Dati obbligatori </td>
    </tr>
    <tr align="right">
    <td colspan="2"><input name="InviaModulo"type="submit"id="InviaModulo"value="Invia">
    <input name="Reimposta"type="reset"id="Reimposta"value="Reimposta"></td>
    </tr>
    </table>
    </form>

    2)Poi ho preparato un file che ho chiamato ?formmail2.php? , inserendoci questo codice
    <?php
    if($_POST['txtRagioneSociale']=="" || $_POST['txtEmail']=="" || $_POST['txtInfo']==""){
    header("location:form.php?msg=Riempire tutti i campi obbligatori!");
    }
    $ragionesociale=$_POST['txtRagioneSociale'];
    $email=$_POST['txtEmail'];
    $info=$_POST['txtInfo'];
    $tutticampi='Ragione Sociale: '.$ragionesociale.' , Email: '.$email.' , Info: '.$info;
    mail("la [email protected]","Richiesta Di Informazioni", $tutticampi);
    echo'E-mail inviata con successo!!';
    ?>

    Ed infine ho creato un altro file denominato ?form.php? e questo è il suo contenuto:
    <?php
    if($_GET['msg']){
    echo $_GET['msg'];
    }
    ?>

    Se non compilo nulla il messaggio (Riempire tutti i campi obbligatori) esce correttamente!
    Se compilo tutto il form, il messaggio (email inviata con successo) esce correttamente
    Il problema pare che sia solo come spiegato all? inizio, ovvero che il messaggio parte comunque anche con i campi vuoti?
    Potresti postarmi per cortesia il codice corretto?Scusami , ma so duro!!


  • User Attivo

    Di sicuro 😉
    Ci sei quasi andato vicino.
    Il file form.php di cui parlavo era il file con il form, nel tuo caso il form in html (che diventerà in php con l'aggiunta del messaggio del GET).
    Quindi sopra il form della pagina html (che rinominerai .php) inserisci quello che hai messo nella pagina form.php.
    Per quanto riguarda il codice basta aggiungere un ALTRIMENTI e così invierà la mail SOLO SE i campi inseriti nella condizione non sono uguali a ""
    [PHP]
    <?php
    if($_POST['txtRagioneSociale']=="" || $_POST['txtEmail']=="" || $_POST['txtInfo']==""){
    header("location:form.php?msg=Riempire tutti i campi obbligatori!");
    }else{
    $ragionesociale=$_POST['txtRagioneSociale'];
    $email=$_POST['txtEmail'];
    $info=$_POST['txtInfo'];
    //se vai a capo quando apri gli apici singoli andrai a capo anche nella mail, quindi verrà tutto più ordinato:
    $tutticampi='
    Ragione Sociale: '.$ragionesociale.'
    Email: '.$email.'
    Info: '.$info;
    mail("la [email protected]","Richiesta Di Informazioni", $tutticampi);
    echo'E-mail inviata con successo!!';
    }
    ?>
    [/PHP]
    Ho fatto una piccola modifica anche alla variabile tutticampi. E' commentata subito sopra.
    ciao

    p.s. se ti sforzi a creare il codice sono contento di darti una mano, ma se devo scrivertelo tutto io allora non mi piace perché non impari e non si raggiunge lo scopo del forum. Sono felice che tu ci abbia provato. Non è più gratificante? :ciaosai:


  • User

    🙂
    Ora è tutto ok...

    Il tuo aiuto è stato prezioso!
    :ciauz: