- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- Form Flash e PHP
-
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&";
}
}
}
}
?>
-
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.
-
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
-
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 headerif(!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
-
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: asdfasdfasdfasdssssssssssssssssPraticamente 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
-
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.
-
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
-
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.
-
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.
-
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.
-
Ma tu hai il fla e il php se me lo mandi vedo anche io se riesco a risolvere
-
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)?
-
Ci penso io Jokerinos a mandarti il manloppo.
-
Fatto sulla mail fastweb.
-
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.gifCome 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