Formulario de Contacto y adjunto Flash

Tengo un formulario de contacto en flash que envía todas las variables al php incluyendo el adjunto, las cuales llegan perfectas al php salvo que TODAS o sea me llega esto + el adjunto:
uploadImage = [type Function]
imageDownloaded = [type Function]
downloadImage = [type Function]
listener = [object Object]
imageFile = [object Object]
name = leandra
email = [email protected]
subject = formulario de comentarios
message = verificando por ultima vez el formulario
uploadfile = logolp.png
i = name
Además me llega en dos mails por separados... Probé el php con otro formulario y llega perfecto así que es la forma en la que se envían las variables lo que hace que se envíen por separado y en exceso...
Ahora el flash...
Principalmente tengo el formulario dentro de un movieclip dentro del mismo todos los botones y campos imputables y en la primera frame el siguiente script:
//Comienza el código del funcionamiento del formulario de contacto
stop();
String.prototype.isNumbers = function ()
{
    if (this.length < 1)
    {
        return false;
    }
    i = 0;
    while (i < this.length)
    {
        code = this.charCodeAt(i);
        if (this.charAt(i) != " " && code < 48 || code > 57)
        {
            return false;
        }
        ++i;
    }
    return true;
}
;
String.prototype.isMail = function ()
{
    if (this.indexOf("@") > 0 && this.indexOf("@") == this.lastIndexOf("@"))
    {
        if (this.lastIndexOf(".") > this.indexOf("@") + 1 && this.lastIndexOf(".") < this.length - 2)
        {
            return true;
        }
    }
}
;
nom.tabIndex = 1;
em.tabIndex = 2;
bar.tabIndex = 3;
com.tabIndex = 4;
nom.onSetFocus = function ()
{
    mensaje_error = "";
}
;
em.onSetFocus = function ()
{
    mensaje_error = "";
}
;
bar.onSetFocus = function ()
{
    mensaje_error = "";
}
;
com.onSetFocus = function ()
{
    mensaje_error = "";
}
;
bEnviar.onRollOver = bLimpiar.onRollOver = function ()
{
    this.gotoAndPlay("sobre");
}
;
bEnviar.onRelease = function ()
{
    if (nom.length < 1)
    {
        mensaje_error = "Introduzca su nombre";
        return;
    }
    if (!em.text.isMail())
    {
        mensaje_error = "Introduzca e-mail valido";
        return;
    }
    if (bar.length < 3)
    {
        mensaje_error = "Introduzca su barrio";
        return;
    }
    if (com.length < 4)
    {
        mensaje_error = "Introduzca su comentario";
        return;
    }
    loadVariables("carga.php", "", "POST");
    mensaje_error = "Mensaje enviado";
}
;
//termina el código de funcionamiento del formulario de contacto
//comienza el código de funcionamiento del upload de archivos
import flash.net.FileReference;
var reference:FileReference = new FileReference();
var referenceListener:Object = {};
var scriptLocation:String = 'carga.php';
uploadButton_mc._visible = false;
reference.addListener(referenceListener);
referenceListener.onSelect = activateUploadButton;
referenceListener.onProgress = updateProgress;
referenceListener.onComplete = restart;
referenceListener.onHTTPError = handleError;
referenceListener.onIOError = handleError;
referenceListener.onSecurityError = handleError;
chooseButton_mc.onRelease = choose;
uploadButton_mc.onRelease = uploadCurrent;
function activateUploadButton():Void {
    display_txt.text = reference.name;
    uploadButton_mc._visible = true;
}
function choose():Void {
    reference.browse([{description:'All Files (*.*)', extension:'*.*'}]);
}
function handleError(errorName:String, detail:Object):Void {
    restart();
    if (arguments.length === 2) {
        if (typeof detail === 'number') {
            display_txt.text = 'HTTP Error #'+detail;
        } else {
            display_txt.text = 'Security Error: '+detail;
        }
    } else {
        display_txt.text = 'IO Error';
    }
}
function uploadCurrent():Void {
    chooseButton_mc._visible = false;
    reference.upload(scriptLocation);
}
//termina el código de funcionamiento del upload de archivos
Como verás es un lio bárbaro ya que los dos formularios en un principio estaban configurados para usarse por separado y yo quise juntarlos (porque los necesito en un mismo formulario) embrollando las cosas...
¿Podrías ayudarme a unificar los códigos y a especificar qué variables quiero que se envíen al php? Ya que sería muy engorroso para mi cliente descifrar el mail como le llegaría si lo dejo así...
Mil disculpas hace varios días que estoy tratando de arreglarlo pero solo lo empeoro más... Por lo menos así funciona! Mal pero funciona al fin...

1 Respuesta

Respuesta
1
downloadImage = [type Function]
Si te llega type function, significa que la palabra / variable "downloadImage" esta duplicada, es decir, que nombras la variable y la función de la misma palabra. Por eso no te llega el contenido de la variable pero te llega asignación interna de flash función. Las funciones, variables objetos, instancias tienen que tener el nombre único.
listener = [object Object]
Una cosa parecida te pasa aquí, pero con algún objeto que llamas igual que la variable que quieres enviar
las funciones, variables objetos, instancias tienen que tener el nombre único.
No sé que puede ser pero revisé todo el código y las instancias (que es el mismo que te copié antes) y no tengo ninguno repetido...
Tengo básicamente 4 funciones principales:
function activateUploadButton()   --   function choose()  --  function handleError(errorName:String, detail:Object)  -- function uploadCurrent()
Al ver el código y el contenido del archivo tampoco encontré nada con los nombres:
imageDownloaded   -- downloadImage  --  imageFile  --  uploadfile
Si utilicé (i = name) para el bucle String.prototype.isNumbers para que verificara el ingreso de contenido al campo...
En cambio el listener lo utilicé en esta area:
var referenceListener:Object = {};
reference.addListener(referenceListener);
referenceListener.onSelect = activateUploadButton;
referenceListener.onProgress = updateProgress;
referenceListener.onComplete = restart;
referenceListener.onHTTPError = handleError;
referenceListener.onIOError = handleError;
referenceListener.onSecurityError = handleError;
Lo que no pude tampoco es integrar la carga de las variables en una sola función y que funcionase ahora está en estas dos por separado:
loadVariables("carga.php", "", "POST"); // en la primer parte del código
var scriptLocation:String = 'carga.php'; // en la segunda parte del código
Con la llamada de esta función para su utilización :
function uploadCurrent():Void {
    chooseButton_mc._visible = false;
    reference.upload(scriptLocation);
}
¿Puede ser que los nombres duplicados son partes del código php o del código AS?
Bueno, también se me ocurre que es el tema de nombre de instancias, eso me surge la pregunta:
¿Los campos de texto los nombras por variable o por instancia?
Si es por variable, tienes que escribir variable sola, tal como esta, pero si es por instancia tienes que usar punto text, algo así:
variable_para_php = micampodetexto.text;
Pero bueno, en tu caso el flash te lo pone claro, en la variable flash recoja una función o un objeto y eso envía.
Uff ya no sé que hacer probé cambiando el nombre de las variables, las extensiones a.txt o _txt... cambié el nombre de las funciones... no encontré nada en el php pero tengo 2 modelos que funcionan bien en otras planillas con adjuntos utilicé los dos y sigue dando exactamente el mismo error! ... Este es el php:
<?php
    function form_mail($sPara, $sAsunto, $sTexto, $sDe){
        $bHayFicheros = 0;
        $sCabeceraTexto = "";
        $sAdjuntos = "";
        if ($sDe)$sCabeceras = "From:".$sDe."\n"; else $sCabeceras = "";
        $sCabeceras .= "MIME-version: 1.0\n";
        foreach ($_POST as $sNombre => $sValor)
             $sTexto = $sTexto."\n".$sNombre." = ".$sValor;
        foreach ($_FILES as $vAdjunto){
             if ($bHayFicheros == 0){
                 $bHayFicheros = 1;
                 $sCabeceras .= "Content-type: multipart/mixed;";
                    $sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";
                    $sCabeceraTexto = "----_Separador-de-mensajes_--\n";
                    $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
                    $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";
                    $sTexto = $sCabeceraTexto.$sTexto;
             }
             if ($vAdjunto["size"] > 0){
                 $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
                 $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
                    $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
                    $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";                 
                 $oFichero = fopen($vAdjunto["tmp_name"], 'r');
                    $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
                    $sAdjuntos .= chunk_split(base64_encode($sContenido));
                    fclose($oFichero);
             }
        }
        if ($bHayFicheros)
            $sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
        return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
    }
    //Ejemplo de como usar:
    if (form_mail("[email protected]",
                 "Activación de formulario",
                 "Los datos introducidos en el formulario son:\n\n",
                 "[email protected]"
                 )
        )
        echo "Su formulario ha sido enviado con exito";
?>
Lo que tienes que cambiar es el nombre de la variable en el escripto.
Si el campo de texto en su instancia se llama "email", en el escripto tiene que figurar como email.text
Si, ya hice eso y sigue dando el mismo error...
uploadImage = [type Function]
Pues cambia el nombre de uploadImage por quploadImage.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas