Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    aiuto con codice per formmail

    Un saluto a tutti quelli che leggeranno

    ho un problema che non riesco proprio a risolvere

    Sto facendo un formmail in flash + php, non essendo esperto di linguaggi ne as ne php ho scaricato e seguito le istruzioni dei vari form che si trovano in rete

    tutto bene tranne un piccolo dettaglio

    nel campo messaggio dove chi scrive nel form deve lasciare un messaggio + lungo del nome o indirizzo e quindi magari deve usare l'a capo con l'invio, quando ricevo la mail non vedo quello che si è scritto dopo aver dato l'invio

    ad esempio se nella casella messaggio scrivo:

    Ciao come va?
    A me va tutto bene

    nella mail che ricevo io leggo sempre e solo Ciao come va.

    Ho provato non so quanti formmail per flash + php e nessuno di questi mi ha dato un risultato positivo


    Ho letto che in php esiste un codice che si chiama nl2br(), che dovrebbe dire al form il comando (br) di html, ma non so se e dove metterlo e se è questo il problema

    di seguito vi mostro il codice php

    l'action script di flash non credo serva, altrimenti se a qualcuno serve magari posso mettere pure quello
    (chiaramente in flash ho messo come multiriga la casella di testo)

    Grazie per le eventuali risposte

    Diego



    <?php
    $s=Array('ù');

    foreach($s as $value){
    echo "senza htmlsp ".$value." e poi con htmlsp ".htmlspecialchars($value)."<DIV>";
    }
    if(!empty($_POST)){
    // valori da modificare
    $address = "miamail@miamail.it"; // inserire qui tra le "" la mail a cui va inviato il messaggio
    $site = "http://www.miosito.it"; // facoltativo, potete inserire qui il nome del sito
    $object = "Invio mail dal sito $site"; // oggetto
    //
    // i valori dei due array che seguono vanno modificati in base a quelli presenti negli array con lo stesso nome, nello script di flash
    $campi = array("nome", "ditta", "citta", "provincia", "indirizzo", "mail", "tel", "fax", "messaggio");
    $campiObbligatori = array("nome", "mail", "messaggio");
    //
    // non modificare lo script al di sotto di questa riga
    //---------------------------------------------------------------//
    $body = "";
    $headers = "";
    $o = (object) $_POST;
    $s = implode(",", $campiObbligatori);
    foreach($campi as $value){
    if(substr_count($s, $value) > 0 && is_null($o->$value)){
    echo "&report=KO&";
    break;
    } else {
    if(!is_null($o->mail) && $o->$value == $o->mail){
    $headers.= "From: <".$o->mail.">";
    }
    $body.= $value.": ".$o->$value."\r\n";
    if($value == $campi[count($campi)-1]) {
    if(!mail($address, $object, $body, $headers)) die("&report=KO&");
    else echo "&report=OK&";
    }
    }
    }
    }
    ?>

  2. #2

    Re: aiuto con codice per formmail

    Originariamente inviato da diego1974
    Un saluto a tutti quelli che leggeranno

    ho un problema che non riesco proprio a risolvere

    Sto facendo un formmail in flash + php, non essendo esperto di linguaggi ne as ne php ho scaricato e seguito le istruzioni dei vari form che si trovano in rete

    tutto bene tranne un piccolo dettaglio

    nel campo messaggio dove chi scrive nel form deve lasciare un messaggio + lungo del nome o indirizzo e quindi magari deve usare l'a capo con l'invio, quando ricevo la mail non vedo quello che si è scritto dopo aver dato l'invio

    ad esempio se nella casella messaggio scrivo:

    Ciao come va?
    A me va tutto bene

    nella mail che ricevo io leggo sempre e solo Ciao come va.

    Ho provato non so quanti formmail per flash + php e nessuno di questi mi ha dato un risultato positivo


    Ho letto che in php esiste un codice che si chiama nl2br(), che dovrebbe dire al form il comando (br) di html, ma non so se e dove metterlo e se è questo il problema

    di seguito vi mostro il codice php

    l'action script di flash non credo serva, altrimenti se a qualcuno serve magari posso mettere pure quello
    (chiaramente in flash ho messo come multiriga la casella di testo)

    Grazie per le eventuali risposte

    Diego



    <?php
    $s=Array('ù');

    foreach($s as $value){
    echo "senza htmlsp ".$value." e poi con htmlsp ".htmlspecialchars($value)."<DIV>";
    }
    if(!empty($_POST)){
    // valori da modificare
    $address = "miamail@miamail.it"; // inserire qui tra le "" la mail a cui va inviato il messaggio
    $site = "http://www.miosito.it"; // facoltativo, potete inserire qui il nome del sito
    $object = "Invio mail dal sito $site"; // oggetto
    //
    // i valori dei due array che seguono vanno modificati in base a quelli presenti negli array con lo stesso nome, nello script di flash
    $campi = array("nome", "ditta", "citta", "provincia", "indirizzo", "mail", "tel", "fax", "messaggio");
    $campiObbligatori = array("nome", "mail", "messaggio");
    //
    // non modificare lo script al di sotto di questa riga
    //---------------------------------------------------------------//
    $body = "";
    $headers = "";
    $o = (object) $_POST;
    $s = implode(",", $campiObbligatori);
    foreach($campi as $value){
    if(substr_count($s, $value) > 0 && is_null($o->$value)){
    echo "&report=KO&";
    break;
    } else {
    if(!is_null($o->mail) && $o->$value == $o->mail){
    $headers.= "From: <".$o->mail.">";
    }
    $body.= $value.": ".$o->$value."\r\n";
    if($value == $campi[count($campi)-1]) {
    if(!mail($address, $object, $body, $headers)) die("&report=KO&");
    else echo "&report=OK&";
    }
    }
    }
    }
    ?>

    Come supponevo mi sa che questo è un problema irrisolvibile

    ma tutti i form che ci sono nella rete come li fanno?

  3. #3

    Re: Re: aiuto con codice per formmail

    UP


    scusate l'insistenza ma sono penso due mesi che non ne vengo a capo di sto problema

  4. #4
    Utente di HTML.it L'avatar di vikey89
    Registrato dal
    Apr 2009
    Messaggi
    333
    Ciao Diego, non ho capito bene il tipo problema che hai, cmq ti faccio un esempio molto pratico cosi da poter fare poi ciò che vuoi:

    Supponendo che tu abbia gia creato il form in html, devi creare la pagina invia, cioè quella pagina scritta in Php che ti permette di inviare l'email.
    INIZIAMO:
    Codice PHP:
    <?php
    header 
    ('Refresh: 5; URL=tuapagina.html');//La pagina che verrà mostrata dopo che l'utente ha finito di mandare l'email    
    ?>

    <?php
    //indirizzo email
    $receiverMail    "tuaemail@example.com"//Inserisci l'email dove vuoi ricevere l'email


    //Cattura i dati dal form
    $nome    = ($_POST['nome']);
    $cognome = ($_POST['cognome']);
    $email = ($_POST['email']);

    $messaggio ="<div style=\"margin-left: 10px;\"><h3> L'e-mail &egrave; stata inviata da: <font color=\"red\"><u>[b]$nome $cognome[/b]</u></font>.</h3></div>
    "
    ;

    //Non modificare questo
    $headers = array ();
    $headers [] = 'MIME-Version: 1.0';
    $headers [] = 'Content-type: text/html; charset=iso-8859-1';
    $headers [] = 'Content-Transfer-Encoding: 7bit';
    $headers [] = 'From: ' $email;

    // verifica campi obbligatori
    if(empty($name) || empty($cognome) || empty($email)  {
        echo 
    'Il messaggio non &egrave; stato inviato, Tutti i campi sono obbligatori ';
    }

    // verifica indirizzo email
    elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$email)) {
        echo 
    "Il messaggio non &egrave; stato inviato. L'indirizzo email indicato non &egrave;      valido!";
    }
    else {
      
    // invio del messaggio
        
    mail($receiverMail,  $subject$messaggiojoin("\r\n"$headers));
        echo 
    'Grazie per averci Contattato. Riceverai una risposta il prima possibile a 
     [b]$email[/b].
    Stai per essere rindirizzato alla pagina principale'
    ; }

    ?>
    Ecco qui questo è un esempio semplice di invio di un e-mail, spero di esserti stato d'aiuto.
    Non so se ho fatto qualche errore perchè lo scritto in minuti, Cmq
    se hai bisogno chiedi pure.


  5. #5
    Ciao vikey89, intanto grazie dell'interessamento.

    Ho provato con il tuo codice ma non funziona, se guardi quello che ho postato nel primo messaggio è diverso, diciamo particolare rispetto a tutti gli altri php per formmail, in quanto è un php che prende i dati derivanti da una pagina in flash.

    Il problema mio è che nel campo messaggio quando uno scrive + righe e va a capo con l'invio poi quando arriva la mail si legge solamente quello scritto nella prima riga.

    Questo succede con tutti i formmail che ho trovato per flash (non sono in grado di farne uno da solo da 0)



    Tutti i passaggi della verifica se sono stati inseriti i campi si trovano nell'action script, che come si vede è abbastanza complicato (per me), però credo che non sia in flash il problema in quanto il campo di testo "messaggio" è settato su multiriga, quindi già quello dovrebbe bastare

    Posto il codice action script se per caso a qualcuno serva darci un'occhiata.


    // porto a zero la visibilità degli avvisi
    errore_invio._alpha = 0;
    errore_server._alpha = 0;
    errore_mail._alpha = 0;
    notifica_inviato._alpha = 0;
    // creo una funzione per il fadeIn/fadeOut degli avvisi
    MovieClip.prototype.fadeAlpha = function(to:Number) {
    var t:Object = new mx.transitions.Tween(this, "_alpha", mx.transitions.easing.None.easeNone, this._alpha, to, 1, true);
    t.path = this;
    t.onMotionFinished = function() {
    this.path.onFadeDone();
    };
    };
    // creo una funzione che verifica che il campo richiamato sia stato riempito e non contenga spazi vuoti
    var validate = function (mail_field:String):Boolean {
    var temp = this[mail_field].text.split(" ").join("");
    var r:Boolean = (temp.length<=0) ? false : true;
    return r;
    };
    // creo la funzione di verifica per il campo mail
    var checkMail:Function = function (target:MovieClip, nameField:String):Boolean {
    var temp:String = target[nameField].text;
    temp = temp.split(" ").join("");
    if (temp.length>0) {
    if (temp.lastIndexOf("@")>-1) {
    var temp2 = temp.split("@");
    if (temp2[1].length>5) {
    var temp3 = temp2[1].split(".");
    if (temp3[0].length>2 && temp3[1].length>1) {
    return (true);
    }
    return (false);
    }
    return (false);
    }
    return (false);
    }
    return (false);
    };
    // creo una funzione che viene richiamata al tentativo di invio
    var alert_report:Function = function (c:Number) {
    switch (c) {
    //
    // case 0 -> il primo caso viene richiamato se l'invio è avvenuto correttamente
    case 0 :
    notifica_inviato.onFadeDone = function() {
    this.onFadeDone = undefined;
    var intv = setInterval(function () {
    notifica_inviato.fadeAlpha(0);
    clearInterval(intv);
    }, 1000);
    };
    notifica_inviato.fadeAlpha(100);
    break;
    //
    // case 1 -> il secondo caso viene richiamato se i campi obbligatori non sono stati compilati
    case 1 :
    errore_invio.onFadeDone = function() {
    this.onFadeDone = undefined;
    var intv = setInterval(function () {
    errore_invio.fadeAlpha(0);
    clearInterval(intv);
    }, 1000);
    };
    errore_invio.fadeAlpha(100);
    break;
    //
    // case 2 -> il terzo caso viene richiamato se il server non risponde o se la mail non viene inviata correttamente
    case 2 :
    errore_server.onFadeDone = function() {
    this.onFadeDone = undefined;
    var intv = setInterval(function () {
    errore_server.fadeAlpha(0);
    clearInterval(intv);
    }, 1000);
    };
    errore_server.fadeAlpha(100);
    break;
    case 3 :
    errore_mail.onFadeDone = function() {
    this.onFadeDone = undefined;
    var intv = setInterval(function () {
    errore_mail.fadeAlpha(0);
    clearInterval(intv);
    }, 1000);
    };
    errore_mail.fadeAlpha(100);
    break;
    }
    };
    // creo un array che mi contenga tutti i nomi dei campi di testo che intendo inviare via mail
    var campi:Array = new Array("nome", "ditta", "citta","provincia", "indirizzo", "mail", "tel", "fax", "messaggio");
    // e un altro array che contiene i nomi dei campi obbligatori
    var campiObbligatori:Array = new Array("nome", "mail", "messaggio");
    // entrambi gli array appena creati devono essere riproposti in php secondo le istruzioni del file PHP
    //
    // restringo l'immissione di caratteri nel campo mail a quelli necessari
    this["mail"].restrict = "^ ";
    // attivo il TAB per i campi
    for (var i = 0; i<campi.length; i++) {
    var l:Number = i+1;
    this[campi[i]].tabIndex = l;
    }
    // attivo l'invio della mail sul pulsante "invia_form"
    invia_form.onRelease = function() {
    // creo il LoadVars per la comunicazione con il file PHP
    var lv_sendMail:LoadVars = new LoadVars();
    // avvio un ciclo che mi verifica se i campi obbligatori sono riempiti
    // in caso positivo invia i dati al file PHP
    // in caso negativo attiva l'alert_report -> case 1
    for (var m = 0; m<campi.length; m++) {
    if (campiObbligatori.toString().indexOf(campi[m])>=0) {
    if (validate(campi[m])) {
    if (campi[m] != "mail") {
    lv_sendMail[campi[m]] = this._parent[campi[m]].text;
    } else {
    if (checkMail(this._parent, campi[m])) {
    lv_sendMail[campi[m]] = this._parent[campi[m]].text;
    } else {
    alert_report(3);
    break;
    }
    }
    } else {
    alert_report(1);
    break;
    }
    } else {
    lv_sendMail[campi[m]] = this._parent[campi[m]].text;
    }
    // alla fine delle verifiche, se è tutto apposto, invio i dati
    if (m>=campi.length-1) {
    lv_sendMail.sendAndLoad("sendmail.php", lv_sendMail, "POST");
    }
    }
    // compilo l'evento onLoad della classe LoadVars che mi verifica se l'invio è andato a buon fine o meno
    // nel caso sia stata inviata attiva l'alert_report -> case 0
    // altrimenti attiva l'alert_report -> case 2 (errore del server)
    lv_sendMail.onLoad = function(ok) {
    if (ok) {
    if (this.report == "OK") {
    alert_report(0);
    reset_form.onRelease();
    } else {
    alert_report(2);
    }
    } else {
    alert_report(2);
    }
    };
    };
    // il tasto "reset_form" si occupa di svuotare i campi del form
    reset_form.onRelease = function() {
    for (var r = 0; r<campi.length; r++) {
    this._parent[campi[r]].text = "";
    }
    };

  6. #6
    giusto per magari far capire o ragionare di + chi se ne intende posto anche un altro formmail in flash diverso da quello precedente.

    Anche questo funziona tranne il problema del multiriga nel campo messaggio dato con l'invio


    CODICE PHP


    <?php
    $nome = stripslashes($_POST['nome']);
    $cognome = stripslashes($_POST['cognome']);
    $mittente = stripslashes($_POST['mittente']);
    $richiesta = stripslashes($_POST['richiesta']);
    $sms = '
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Contatti</title>
    </head>
    <body style="margin:0px;">
    <table cellpadding="0" cellspacing="0" style="height:100%;width:500px;">
    <tr>
    <td style="height:100%;padding:20px;vertical-align:top;">
    <table>
    <tr><td colspan="2">
    [img]Url della tua immagine personalizzata[/img]
    </td>
    </tr>
    <tr><td width="110">Nome:</td>
    <td width="300">'.$nome.'</td></tr>
    <tr>
    <td>Cognome:</td>
    <td>'.$cognome.'</td></tr>
    <tr>
    <td>E-mail:</td>
    <td>'.$mittente.'</td></tr>
    <tr>
    <td>Richiesta:</td>
    <td>'.$richiesta.'</td></tr>
    </table></td></tr>
    </table>
    </body>
    </html>';
    $headers = "From: $nome $cognome <$mittente>\n";
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n";

    if(mail($_POST['destinatario'], $oggetto, $sms, $headers)){
    echo '&controllo=invio avvenuto con successo.';
    }
    else{
    echo '&controllo=errore: e-mail non inviata.';
    }
    ?>




    CODICE ACTION SCRIPT


    stop();
    pulsInvio.onRelease = function(){
    var sendMail:LoadVars = new LoadVars();
    sendMail.nome = Nome.text;
    sendMail.cognome = Cognome.text;
    sendMail.mittente = Email.text;
    sendMail.richiesta = Richiesta.text;
    sendMail.destinatario = 'MIAMAIL@MAIL.it';
    sendMail.onLoad = function(success){
    if(success){
    Nome.text = '';
    Cognome.text = '';
    Email.text = '';
    Richiesta.text = '';
    mcMsg.mcTxt.txtMsg.text = this.controllo;
    mcMsg.play();
    }
    }
    sendMail.sendAndLoad('http://www.MIOSITO.it/email.php', sendMail, 'POST');
    }





    Volendo potrei postarvi anche altri esempi diversi ma il risultato non cambia purtroppo.

    Potrebbe essere un problema di interazione flash php a sto punto?

  7. #7
    Utente di HTML.it L'avatar di vikey89
    Registrato dal
    Apr 2009
    Messaggi
    333
    Scusa ma perchè devi usare flash per un form mail?

  8. #8
    Perchè il sito è completamente in flash, il form è parte grafica interna della pagina del sito

    PS: sono un grafico pubblicitario e ho imparato ad usare solo flash per fare le pagine internet purtroppo



    Se può essere utile questo è un altro esempio di formmail in flash (sempre con lo stesso problema)

    http://www.kirupa.com/developer/acti..._php_email.htm


    Mi sorge un dubbio, visto che è strano che tutti gli esempi che ho scaricato usato hanno questo problema dell'a capo con invio, non è che sia un problema del provider in cui metto i file oppure un problema della mia mail (mail di mac)?

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.