• User Newbie

    Form Flash e PHP

    Buongiorno a tutti, scrivo per la prima volta in questo forum e ringrazio anticipatamente tutti quelli che mi daranno qualche dritta in merito al mio piccolo (spero) problema

    ho un problema con un formmail (scaricato), in pratica funziona tutto, riesco ad aggiungere campi, modificarli e tutto, ma il campo messaggio quando si scrive e si da un a capo con l'invio poi nella mail non mostra il testo, si vede solo quello scritto nella prima riga fino a quando non si da l' a capo

    Di seguito i codici che ho utilizzato (copiato)

    // 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*].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].text = "";
    }
    };

    codice php

    <?php
    if(!empty($_POST)){
    // valori da modificare
    $address = "mia mail"; // inserire qui tra le "" la mail a cui va inviato il messaggio
    $site = "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&";
    }
    }
    }
    }
    ?>


  • Super User

    Ciao grobert benvenuto sul forum GT, argomento un po spinoso per me, senti è per caso il form di Julius Design, se la risposta è positiva volevo un chiarimento perchè non ho capito bene se il problema di andare a capo lo hai quando si scrive sul form o quando si riceve la mail.
    PS. chiaro che non è il form di Julius il codice è diverso e poi quelo di Julius non da problemi, eppure era un codice che mi sembrava di aver visto.


  • User Attivo

    Salve a tutti come al solito mi intrometto caro utente perche' non ci fai vedere un'anteprima dell'invio del form che ricevi e vedo cosa possiamo fare

    Ok anche uno screenshot

    Visto il codice c'e' qualcosa da cambiare

    We nathan tutto apposto e' piaciuto quel sito


  • User Attivo

    Come ho capito a te arrivano solo l'oggetto del messaggio

    if(!mail($address, $object, $body, $headers)) die("&report=KO&");

    Indirizzo :
    Oggetto :
    Corpo del testo :
    e header

    if(!mail($address, $object, $body, $headers,$campi)) die("&report=KO&");

    prova cosi se non erro ti dovrebbe dare un errore perche' php non accetta piu' di un tot di valore nell'istruzione mail

    fammi sapere


  • User Newbie

    Per prima cosa un super ringraziamento per le risposte rapide che mi avete dato:

    il form di julius l'avevo visto e anche altri sul web, ma questo era quello che mi funzionava meglio, molto facile da modificare per quanto riguarda i campi. Anche in altri che ho provato ho avuto lo stesso problema.

    allora il form l'ho preso da qui

    flash.html.it/movie/demo/415/mail-form/

    img143.imageshack.us/img143/3774/immagine2wy.png

    (http davanti non posso metterlo che non me lo accetta sul forum)

    il risultato della mail è questo:

    nome: s
    ditta: s
    citta: s
    provincia: s
    indirizzo: s
    mail: [email protected]
    tel: s
    fax: s
    messaggio: asdfasdfasdfasdssssssssssssssss

    Praticamente nella casella messaggio, quella dove bisogna lasciare diciamo un commento se scrivo tutto di seguito come vedete arriva tutto, ma se mentre scrivo schiaccio invio e vado a capo come si fa quando si scrive, nella mail arriva solamente quello scritto prima di andare a capo.

    Ho letto che poteva essere un problema di dire testo html, l'ho fatto sulla casella di testo in flash ma non è cambiato niente, chiaramente ho messo anche multiriga.

    Ho letto che dovrei forse mettere un codice html tipo <br> da qualche parte nei vari codici ma chiaramente non so dove metterli, ho provato prima dei campi tra le virgolette nel php ma questo non fa funzionare poi il form.

    Spero di essere stato abbastanza chiaro nella spiegazione.

    Ringrazio anticipatamente per le eventuali risposte.

    PS: ho letto nelle mie ricerche su internet cha altri hanno avuto questo problema, ma non ho trovato risposte se non una persona che ha risolto usando asp invece che php. Io di asp non so neanche pronunciare il nome :):):)

    Ciao Diego


  • Super User

    Hai proprio ragione ho provato sia quello che hai usato tu sia quello pubblicato da Julius, entrambi mandano su un unica riga, sarà una caratteristica o chiamiamolo difetto dei form flash, sinceramente io non so se c'è soluzione, mi sembra strano che se fosse stato possibile fare altrimenti non lo avessero fatto.


  • User Newbie

    Grazie della prova intanto,

    mi sai indicare un'altra strada per fare un form con flash? questo asp è difficile da usare, più che altro è difficile se trovo qualcosa di fatto poi modificarlo.

    PHP lo aprivo con text edit (lavoro con mac), asp con che si usa? E quando poi pubblico il server deve riconoscere asp come il php? visto che il server su cui poi dovrò mettere il tutto mi fa pagare per attivare il php.

    Se mi dai una dritta poi io mi metto alla ricerca e cerco di cavarmela da solo, visto che così facendo riesco anche ad imparare qualcosa che non fa mai male.

    Attendo anche magari qualche buon'anima che abbia un'idea per far funzionare il multiriga con php :):):)

    Saluti Diego


  • Super User

    ASP è di microsoft, sul pc lo apro con dreamweaver, sinceramente non lo conosco neanche io se non per quelle cose che può fare direttamente dreamweaver, il problema di asp poi è che non tutti i server lo supportano, sicuramente lo supporta Aruba, ma la maggior parte che si basa su linux nisba.


  • User Attivo

    Mandami questo fla

    azz io parlo e nessuno mi ascolta bella considerazione

    mandami il fla e il file php vedo come posso riparare la situazione.


  • User Newbie

    Ok grazie comunque,

    provo a scrivere sul sito di julius e vedere se qualcuno risolve, e poi se trovo una soluzione la riporto anche qui che potrebbe essere utile. Anche perchè questo form si modifica nell'aggiunta di voci veramente facilmente.


  • User Attivo

    Ma tu hai il fla e il php se me lo mandi vedo anche io se riesco a risolvere


  • User Newbie

    Scusami, pensavo che il codice e il link da dove ho scaricato bastassero

    Mi sento un pelo ignorante adesso a farti questa domanda ma...

    come faccio a mandarti il file (sono + di uno)?


  • Super User

    Ci penso io Jokerinos a mandarti il manloppo.


  • Super User

    Fatto sulla mail fastweb.


  • User Newbie

    Buongiorno,

    Attenzione il link che ho dato nei post precedenti per scaricare il form ha la grafica identica alla mia, quella che avevo scaricato in principio, ma ha codici diversi

    Il codice invece che ho postato in testa proviene dal mio file quindi è quello che utilizzo.

    jokerinos Se mi lasci la tua mail ti giro i file:

    sendmail.php
    form.swf
    form.html
    form.fla
    form_content.html
    form_alternate.html
    flash_detection.swf
    alternate.gif

    Come vedi sono + di uno, si appoggia anche a degli altri html e non so il perchè proprio

    Comunque credo che il mio problema sia generale e non solo per il mio form visto che provandone altri ho avuto lo stesso problema