• User Attivo

    [Risolto] problema di comunicazione tra flash e php

    Spero ci sia qualcuno in grado di darmi una risposta.
    Dunque ho un form in flash che invia delle variabili ad un file php, una volta che questo le ha inviate via mail deve restituirmi una variabile, tale variabile deve essere caricata in un campo di testo dinamico in flash, il problema è che la variabile non viene inviata perché probabilmente non so come farla inviare dal file php, in ogni caso quando la mail viene inviata e quindi non vi sono errori che bloccano l'esecuzione del file php, in flash viene caricata la funzione che dovrebbe essere caricata se non viene inviata e viceversa, non riesco a capire il perché.
    Premetto che esporto in versione 7 e con ActionScript 2, posto i codici.

    codice del file swf
    stop();
    _root.pulsanteinvia.invia.onRelease = function() {
    var sendMail:LoadVars = new LoadVars();
    sendMail.nome = nome.text;
    sendMail.cognome = cognome.text;
    sendMail.ragsol = ragsol.text;
    sendMail.naz = naz.text;
    sendMail.cit = cit.text;
    sendMail.cap = cap.text;
    sendMail.ind = ind.text;
    sendMail.tel = tel.text;
    sendMail.cell = cell.text;
    sendMail.fax = fax.text;
    sendMail.email = email.text;
    sendMail.testomail = testomail.text;
    sendMail.destinatario = [EMAIL="'[email protected]'"]'[email protected]'[/EMAIL];
    sendMail.sendAndLoad('Flash/mail.php', sendMail, 'POST');
    sendMail.onLoad = function(success) {
    if (success) {
    nome.text = '';
    cognome.text = '';
    ragsol.text = '';
    naz.text = '';
    cit.text = '';
    cap.text = '';
    ind.text = '';
    tel.text = '';
    cell.text = '';
    fax.text = '';
    email.text = '';
    testomail.text = '';
    controllo = controllo;
    } else {
    controllo = errore;
    }//end if
    };//end function onLoad
    };//end function onRelease

    codice del file php
    <?
    $destinatario = stripslashes($_POST['destinatario']);
    $controllo = 'email inviata correttamente';
    $errore = 'email non inviata, riprovare';
    if ( isset($HTTP_POST_VARS))
    if (mail("$destinatario","NUOVO CONTATTO","Nome: $_POST[nome] \nCognome: $_POST[cognome] \nRagione Sociale: $_POST[ragsol] \nNazione: $_POST[naz] \nCittà: $_POST[cit] \nCAP: $_POST[cap] \nIndirizzo: $_POST[ind] \nTel.: $_POST[tel] \nCell.: $_POST[cell] \nFax: $_POST[fax] \ne-mail: $_POST[email] \nTesto: $_POST[testomail]","From: $_POST[email]"))
    {echo "controllo = $controllo;"}
    else {echo "errore = $errore;"}
    ?>

    grazie.


  • Super User

    Ciao,
    nel php, fai l' echo con il valore che vuoi, ma usa solo un nome.
    Cioè dovresti usare un :
    echo "risposta=".$risposta;

    tieni la variabile $risposta come unica variabile di ritorno.

    Poi da Flash sai che ti arriva sempre una variabile con nome risposta e controlli il suo valore.


  • User Attivo

    Salve, un paio di correzioni al codice di Adriano

    1. la funzione "onLoad" dell'oggetto "LoadVars" fallisce "if (success)" solo se la pagina php non è raggiungibile (indirizzo sbagliato o server down), quindi quella variabile "errore" rimarrà sempre bianca.
    2. nel file php assicurati che l'UNICA cosa scritta sia "&risposta=".$risposta, poi dai a $risposta il valore che vuoi.
      Così funzionerà, testato!!
      Momino

  • User Attivo

    Prima di tutto vi ringrazio, ho fatto un passo avanti, non avevo compreso bene la funzione onLoad, credevo di dover inserire la variabile di errore nel php mentre bastava dare un valore nel codice del file swf
    Dunque, ho fatto come dite, credo..

    nel codice php ho dato un valore alla variabile $risposta e l'ho richiamato stampando echo "&risposta=".$risposta;
    ho provato anche senza la e commerciale, la variabile però non viene caricata in flash nel quale la stringa inserita è controllo = risposta; dove controllo è la variabile del campo di testo dinamico.
    Mi direte, (ma perché non scrivi semplicemente controllo = "email inviata";?) certo, così funzionerebbe senza bisogno di passare la variabile dal php, il problema è che voglio capire come si possono inviare variabili da un file php ad un codice ActionScript, una volta capito questo potrò fare molte + cose di quelle che ho imparato in questi giorni, premetto che sino a poco tempo fa non sapevo nulla o quasi di programmazione in flash e php.

    il codice del file php è il seguente
    <?
    $destinatario = stripslashes($_POST['destinatario']);
    $risposta = 'email inviata';
    if ( isset($HTTP_POST_VARS))
    if (mail("$destinatario","NUOVO CONTATTO","Nome: $_POST[nome] \nCognome: $_POST[cognome] \nRagione Sociale: $_POST[ragsol] \nNazione: $_POST[naz] \nCittà: $_POST[cit] \nCAP: $_POST[cap] \nIndirizzo: $_POST[ind] \nTel.: $_POST[tel] \nCell.: $_POST[cell] \nFax: $_POST[fax] \ne-mail: $_POST[email] \nTesto: $_POST[testomail]","From: $_POST[email]")) {echo "&risposta=".$risposta;}
    ?>

    dove sbaglio?


  • User Attivo

    altro problemino riscontrato, ho inserito adesso un clip filmato nel secondo fotogramma, sia il primo che il secondo fotogramma hanno il loro stop ();
    il problema si presenta solo su internet explorer, ovvero se carico la prima volta il file swf nessun problema ma se viene caricato una seconda volta passa al secondo fotogramma, come mai?
    vi do il link per capire meglio il problema
    http://www.jumboscreen.it/nuovosito/Contattaci.html
    poi non capisco, come mai firefox ricarica sempre il nuovo file swf cogni qual volta premo F5 mentre internet explorer no?
    grazie ancora.


  • User Attivo

    Ho provato a modificare il file php in modo da far validare la mail prima dell'invio, ma la mail non viene inviata in nessun caso, lo so che siamo nella sezione AcrinScript ma non vorrei aprire mille discussioni per un problema che riguarda sempre lo stesso form.

    questo è il codice del php

    <?
    global $destinatario = stripslashes($_POST['destinatario']);
    global $email = stripslashes($POST['email']);//richiamo la mail del mittente
    global $risposta = 'email inviata';
    global $erroremail = 'email non valida';
    if (!eregi("^[a-z0-9][
    .a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $email))//controllo l'indirizzo email
    {echo "&risposta=".global $erroremail;//Indirizzo email non valido
    }
    else {//in caso di indirizzo mal valido eseguo l'invio dei dati
    if ( isset($HTTP_POST_VARS))
    if (mail("$destinatario","NUOVO CONTATTO","Nome: $_POST[nome] \nCognome: $_POST[cognome] \nRagione Sociale: $_POST[ragsol] \nNazione: $_POST[naz] \nCittà: $_POST[cit] \nCAP: $_POST[cap] \nIndirizzo: $_POST[ind] \nTel.: $_POST[tel] \nCell.: $_POST[cell] \nFax: $_POST[fax] \ne-mail: $_POST[email] \nTesto: $_POST[testomail]","From: $_POST[email]))
    {echo "&risposta=".global $risposta;}//invio una variabile di risposta al file swf che informa dell'avvenuto invio della mail
    }
    ?>

    dov'è l'errore adesso?


  • Super User

    Questo è il codice che uso per inviare una mail:

     <?php
    $to = "[email protected]";
    $subject = ($_POST['titolo']);
    $message = ($_POST['messaggio']);
    $message .= "\n\n---------------------------\n";
    $message .= "E-mail inviata da: " . $_POST['nome'] . " <" . $_POST['email']  . ">\n";
    $headers = "From: " . $_POST['nome'] . " <" . $_POST['email'] . ">\n";
    if(@mail($to, $subject, $message, $headers))
    {
        echo "answer=ok";
    } 
    else 
    {
        echo "answer=error";
    }
    ?>
    

  • User Attivo

    ma answer è la variabile che invii a flash o questo codice lo usi per un form html?
    Il mio problema non è riuscire ad inviare una mail con i dati inseriti nei campi, a questo ci sono arrivato, ora devo riuscire a far si che l'utente debba compilare i campi obbligatori e che venga avvisato in maniera corretta se per esempio non ha compilato il campo nome o ha scritto in maniera errata la mail. Dopo che sarò riuscito a far questo mi piacerebbe poter memorizzare in un db i dati di chi invia le mail magari dando anche un messaggio del tipo, bentornato mario rossi.
    Ci riuscirò? Io sono fiducioso, quando finirò il codice lo posterò come toutorial.


  • User Attivo

    continuo ad avere sempre lo stesso problema, non riesco ad inviare il valore della variabile a flash, ho provato nei seguenti modi.

    echo "risposta=".$risposta;
    echo "&risposta=".$risposta;
    echo "risposta="$risposta;
    echo "&risposta="$risposta;
    echo "&risposta=.$risposta;";

    poi ho provato dando un valore TRUE

    echo "risposta = TRUE;";
    echo "&risposta = TRUE;";
    echo "<h1>risposta = TRUE;</h1>";
    echo "<h1>&risposta = TRUE;</h1>";

    credo di aver provato anche in altre maniere ma nulla, non viene inviato nessun valore, in molti casi se inserisco la & la mail non viene inviata ed in flash la funzione success risulta false

    sto facendo ricerche su vari forum ma ancora non riesco a trovare nulla che mi dice come devo definire una variale che possa essere caricata dal onload in flash. AIUTOOOOOOOO!!!!!!!!


  • User Attivo

    Il problema sta nel codice ActionScript.
    Quando richiami la variabile di php che hai inviato con
    [PHP]echo "&risposta=".$risposta;[/PHP]
    nella funzione onLoad devi prenderla con

    this["risposta"]
    

    e quindi assegnarla al campo di testo con

    controllo = this["risposta"]; 
    

    Sicuramente ti manca questo


  • User Attivo

    Problema risolto, per chi volesse vedere come, può visitare il post in cui si discute di altri piccoli problemi del form.
    ** FINALMENTE FUNZIONA form in flash con php

    questa discussione può èssere chiusa.
    **