Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Felipe_Flash

[Resolvido] Problema de Formulario para Email

Recommended Posts

Olá amigos....

 

Gostaria de saber qual o problema do código do seguinte tutorial:

http://berseck.wordpress.com/2009/03/25/tutorialformulario-de-e-mail-em-as2-php-anexos/,

 

eu fiz o tutorial inteiro mas quando procuto o arquivo e clico em anexar, este arquivo não é carregado para dentro do data grid

 

se alguém puder me ajudar eu agradeço muito;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, todos estes passos foram feitos, o problema eu acho que não esta no php, o que esta acontecendo é que quando eu anexo um arquivo o mesmo não entra no datagrid, assim quando clico em enviar da erro de envio...

 

Valeu, abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Flash:

 

import mx.controls.gridclasses.DataGridColumn;

import flash.net.FileReference;

System.useCodepage = true;

anexos.setStyle("color", "0×696969");

anexos.setStyle("themeColor", "haloBlue")

anexos.setStyle("fontSize",12);

anexos.setStyle("fontFamily" , "Verdana");

anexar.tabEnabled = false;

procurar.tabEnabled = false;

enviar.tabEnabled = false;

limpar.tabEnabled = false;

nome = "";

email = "";

mensagem = "";

status = "";

anexo = "";

var a:Array = new Array();

var a2:Array = new Array();

var count:Number = 0;

var inic:Number;

var t:Number = 0;

 

anexos._x = 318;

anexos._y = 21;

anexos.setSize(210, 83);

anexos.multipleSelection = true;

 

dgL = new Object();

dgL.cellPress = function(evt_obj:Object){

inic = evt_obj.itemIndex;

}

 

anexos.addEventListener("cellPress", dgL);

var obj_e:LoadVars = new LoadVars();

var obj_b:LoadVars = new LoadVars();

 

excluir.onPress = function(){

obj_e.nome = a[inic];

obj_e.sendAndLoad("excluir.php", obj_b, "POST");

obj_b.onLoad = itemRemoved;

}

 

function itemRemoved(){

if(obj_b.ok == 1){

for(var i = 0; i < a.length; i++){

if(a[inic] != a){

a[t] = a;

t++;

}

}

 

anexos.removeItemAt(inic);

status = "Anexo Removido";

}else{

status = "Anexo não Existe";

}

}

 

var obj_s = new LoadVars();

var obj_l = new LoadVars();

 

enviar.onPress = function(){

if (nome.text == "") {

status = "O nome esta vazio";

selection.setFocus("nome");

} else if (email.text == "") {

status = "O e-mail está vazio";

Selection.setFocus("email");

} else if (email.indexOf("@") == -1 || email.indexOf(".") == -1){

status = "O e-mail inválido";

Selection.setFocus("email");

} else if (mensagem.text == "") {

status = "Faltou a mensagem";

Selection.setFocus("mensagem");

} else {

obj_s.nome = nome;

obj_s.email = email;

obj_s.mensagem = mensagem;

obj_s.anexo = a;

obj_s.num = count;

obj_s.sendAndLoad("mail.php",obj_l,"POST"); //Envio as variáveis para o php

obj_l.onLoad = sentMail;

}

}

 

function sentMail(){

if(obj_l.ok == 1){

nome = "";

email = "";

mensagem = "";

anexo = "";

a = [];

anexados.text = "";

count = 0;

anexos.removeAll();

status = "Mensagem Enviada";

}else {

status = "Erro ao Enviar";

}

}

 

limpar.onPress = function(){

nome = "";

email = "";

mensagem = "";

status = "";

anexo = "";

a = [];

anexados.text = "";

count = 0;

}

 

var frUpload:FileReference = new FileReference();

var objUpload:Object = new Object();

var arquivosPermitidos:Array = new Array();

function initUpload(Void):Void {

arquivosPermitidos[0] = {description:"Imagens (*.jpg)", extension:"*.jpg; *.jpeg"};

 

arquivosPermitidos[1] = {description:"Imagens (*.gif)", extension:"*.giff; *.gif"};

 

arquivosPermitidos[2] = {description:"Documentos (*.doc)", extension:"*.docx; *.doc"};

 

arquivosPermitidos[3] = {description:"Documentos (*.pdf)", extension:"*.pdf"};

 

arquivosPermitidos[4] = {description:"Arquivos (*.rar)", extension:"*.zip; *.rar"};

 

objUpload.onSelect = function(f:FileReference):Void {

anexo = f.name;

a[count] = f.name

count++;

}

frUpload.addListener(objUpload);

 

anexar.onPress = function(Void):Void {

frUpload.upload("upload.php");

status = "carregando";

}

 

procurar.onRelease = function(Void):Void {

frUpload.browse(arquivosPermitidos);

}

 

objUpload.onComplete = function(f:FileReference):Void {

status = "Arquivo Anexado";

var dados:Object = {Anexos:anexo};

anexos.addItem(dados);

}

}

initUpload();

 

upload.php

 

<?php

$dir = "./imagens/";

$file = $_FILES["Filedata"];

echo move_uploaded_file($file["tmp_name"], $dir . "/" . $file["name"]);

?>

 

Não gera nenhum erro no output mas não funciona...

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente mudar permissão da pasta para 777, talvez funcione.

se der certo poste aqui pro pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perguntas assim bem simples:

1 - A dataGrind ta instanciada de Anexos?

2 - você utilizou trace... para ver o que passa de um dado para o outro???

 

Esses campos aqui:

status = "Arquivo Anexado";

var dados:Object = {Anexos:anexo};

 

O campo de texto status ta mostrando os dados??? caso você tenha instanciado como status... eu sugiro mudar para status.text, pois caso contrario não vai mostrar nada e versões mais novas do flash não permitem adicionar variable a campo de texto... e esse código ta como variable.

 

Modifique ai que provavelmente você vai passar a receber as messages do sistema.

Acredito piamente que é pq se não tem permissão para escrever na pasta... como diz o amigo... pq se o upload estivesse fucionando ele poderia não escrever nada na dataGrid, mas estaria colocando na pasta images... e ai sim seria erro do flash, caso contrario não é erro no flash :)

 

E por favor utilize o <> que é o código de code você incia ele como <code> e termina como </code> só que com a utilização de [] em vez de <>

Para fazer o código ficar arrumadinho.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Berseck valeu mesmo, olha eu fiz estas alterações tanto da permissão 777 da pasta quanto do campo status passando para status.text e alterando

var dados:Object = {anexos:anexo} e mais uma alteração que fiz foi objUpload.onComplete = function(f:FileReference):Void { por objUpload.onSelect = function(f:FileReference):Void {; bom notei que quando eu executo o swf e clico em procurar, acho um arquivo e clico no botão ok, se clicar no datagrid ele seleciona como se houvesse o arquivo anexado e não mostra o nome deste arquivo, no status.text apresenta a seguinte mensagem: "arquivo anexado", eu tentei analisar o código para saber o que ha de errado mas não estou conseguindo achar o erro ou o que esta faltando....bom escrevendo assim não sei se fui muito claro mas vou disponibilizar o arquivo que está na minha pasta teste com permissão 777 dentro do wamp(www)...

 

Clique aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu vou perguntar denovo...

Você viu o arquivo anexado na pasta de imagens?????

Se não viu o arquivo anexado o erro está no php... e não no flash

 

Ele colocar uma coisa invisivel no dataGrid significa que o arquivo não foi carregado e por isso a variavel veio vazia... e ele adicionou o vazio no dataGrid.

 

Verifique se você deu as permissões tudo direitinho.

Pois o que ta me parecendo é que não deu...

Vou baixar o arquivo e analisar... mas continuo acreditando que se você não colocou o php certo ele da mensagem errada :)

Pois eu não verifiquei com o php nesse código se o envio foi um sucesso ou não.

 

Ahhhh outra coisa... como você quer que ele adicione alguma coisa se você não colocou o onComplete???

Se não completar o upload fio mio... ele não vai anexar nada nunca!!!!

 

Abraço

 

Resultado geral da pesquisa:

 

Modificar seu campo status para systemMsg

 

Modificiar a função que faz o filereference funcionar:

trocar por essa:

function initUpload(Void):Void {
	arquivosPermitidos[0] = {description:"Imagens (*.jpg)", extension:"*.jpg; *.jpeg"};

	arquivosPermitidos[1] = {description:"Imagens (*.gif)", extension:"*.giff; *.gif"};

	arquivosPermitidos[2] = {description:"Documentos (*.doc)", extension:"*.docx; *.doc"};

	arquivosPermitidos[3] = {description:"Documentos (*.pdf)", extension:"*.pdf"};

	arquivosPermitidos[4] = {description:"Arquivos (*.rar)", extension:"*.zip; *.rar"};

	objUpload.onPress = function(f:FileReference):Void {
		anexo = f.name;
		a[count] = f.name;
		count++;
	};
	frUpload.addListener(objUpload);

	anexar.onPress = function(Void):Void {
		frUpload.upload("upload.php");
	};

	procurar.onRelease = function(Void):Void {
		frUpload.browse(arquivosPermitidos);
	};
	
	objUpload.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
		sytemMsg.text ="onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal;
	}
	
	objUpload.onComplete= function(f:FileReference):Void {
		sytemMsg.text = "Arquivo Anexado";
		var dados:Object = {anexos:anexo};
		anexos.addItem(dados);
	};
	//ação de escolha de um arquivo na caixa de browse…
	objUpload.onSelect = function(f:FileReference):Void {
		anexo = f.name;
		a[count] = f.name
		count++;
	}
	objUpload.onHTTPError = function(file:FileReference):Void {
		sytemMsg.text = "onHTTPError: " + file.name;
	}
	
	objUpload.onIOError = function(file:FileReference):Void {
		sytemMsg.text = "onIOError: " + file.name ;
	}
	
	objUpload.onSecurityError = function(file:FileReference, errorString:String):Void {
		sytemMsg.text = "onSecurityError: " + file.name + " errorString: " + errorString;
	}

}
initUpload();

Assim se der erros vai mostrar no seu campo de texto enquanto testa.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opá desculpa a demora, bom um dos problemas foi resolvido, para anexar, o caminho dos arquivos estava errado:

 

 

import flash.net.FileReference;
import mx.controls.gridclasses.DataGridColumn;
System.useCodepage = true;
anexos.setStyle("color", "0×696969");
anexos.setStyle("themeColor", "haloBlue")
anexos.setStyle("fontSize",12);
anexos.setStyle("fontFamily" , "Verdana");
anexar.tabEnabled = false;
procurar.tabEnabled = false;
enviar.tabEnabled = false;
limpar.tabEnabled = false;
nome = "";
email = "";
mensagem = "";
systemMsg.text = "";
anexo = "";
var a:Array = new Array();
var a2:Array = new Array();
var count:Number = 0;
var inic:Number;
var t:Number = 0;

anexos._x = 318;
anexos._y = 21;
anexos.setSize(210, 83);
anexos.multipleSelection = true;

dgL = new Object();
dgL.cellPress = function(evt_obj:Object){
inic = evt_obj.selectedIndex;
}

anexos.addEventListener("cellPress", dgL);
var obj_e:LoadVars = new LoadVars();
var obj_b:LoadVars = new LoadVars();

excluir.onPress = function(){
obj_e.nome = a[inic];
obj_e.sendAndLoad("http://localhost/teste/teste_upload/excluir.php", obj_b, "POST");
obj_b.onLoad = itemRemoved();
verifica = obj_b.ok;
}

function itemRemoved(){
if(verifica == 1){
for(var i = 0; i < a.length; i++){
if(a[inic] != a[i]){
a[t] = a[i];
t++;
}
}

anexos.removeItemAt(inic);
systemMsg.text = "Anexo Removido";
}else{
systemMsg.text = "Anexo não Existe";
}
}


var obj_s = new LoadVars();
var obj_l = new LoadVars();

enviar.onPress = function(){
if (nome.text == "") {
systemMsg.text = "O nome esta vazio";
Selection.setFocus("nome");
} else if (email.text == "") {
systemMsg.text = "O e-mail está vazio";
Selection.setFocus("email");
} else if (email.indexOf("@") == -1 || email.indexOf(".") == -1){
systemMsg.text = "O e-mail inválido";
Selection.setFocus("email");
} else if (mensagem.text == "") {
systemMsg.text = "Faltou a mensagem";
Selection.setFocus("mensagem");
} else {
obj_s.nome = nome;
obj_s.email = email;
obj_s.mensagem = mensagem;
obj_s.anexo = a;
obj_s.num = count;
obj_s.sendAndLoad("http://localhost/teste/teste_upload/mail.php",obj_l,"POST"); //Envio as variáveis para o php
obj_l.onLoad = sentMail();
}
}

function sentMail(){
if(obj_l.ok == 1){
nome = "";
email = "";
mensagem = "";
anexo = "";
a = [];
anexados.text = "";
count = 0;
anexos.removeAll();
systemMsg.text = "Mensagem Enviada";
}else {
systemMsg.text = "Erro ao Enviar";
}
}

limpar.onPress = function(){
nome = "";
email = "";
mensagem = "";
systemMsg.text = "";
anexo = "";
a = [];
anexados.text = "";
count = 0;
}

var frUpload:FileReference = new FileReference();
var objUpload:Object = new Object();
var arquivosPermitidos:Array = new Array();
function initUpload(Void):Void {
        arquivosPermitidos[0] = {description:"Imagens (*.jpg)", extension:"*.jpg; *.jpeg"};

        arquivosPermitidos[1] = {description:"Imagens (*.gif)", extension:"*.giff; *.gif"};

        arquivosPermitidos[2] = {description:"Documentos (*.doc)", extension:"*.docx; *.doc"};

        arquivosPermitidos[3] = {description:"Documentos (*.pdf)", extension:"*.pdf"};

        arquivosPermitidos[4] = {description:"Arquivos (*.rar)", extension:"*.zip; *.rar"};

        objUpload.onPress = function(f:FileReference):Void {
                anexo = f.name;
                a[count] = f.name;
                count++;
        };
        frUpload.addListener(objUpload);

        anexar.onPress = function(Void):Void {
                frUpload.upload("http://localhost/teste/teste_upload/upload.php");
        };

        procurar.onRelease = function(Void):Void {
                frUpload.browse(arquivosPermitidos);
        };
        
        objUpload.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
                systemMsg.text ="onprogress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal;
        }
        
        objUpload.onComplete= function(f:FileReference):Void {
                systemMsg.text = "Arquivo Anexado";
                var dados:Object = {anexos:anexo};
                anexos.addItem(dados);
        };
        //ação de escolha de um arquivo na caixa de browse…
        objUpload.onSelect = function(f:FileReference):Void {
                anexo = f.name;
                a[count] = f.name
                count++;
        }
        objUpload.onHTTPError = function(file:FileReference):Void {
                systemMsg.text = "onHTTPError: " + file.name;
        }
        
        objUpload.onIOError = function(file:FileReference):Void {
                systemMsg.text = "onIOError: " + file.name ;
        }
        
        objUpload.onSecurityError = function(file:FileReference, errorString:String):Void {
                systemMsg.text = "onSecurityError: " + file.name + " errorString: " + errorString;
        }

}
initUpload();
Bom fiz as alterações como berseck havia me dito, o problema esta agora eu acho no arquivo mail.php

 

bom o systemMsg.text = Erro ao enviar.

 

arquivo mail.php

da um erro na linha 49: Parse error: parse error in C:\wamp\www\teste\teste_upload\mail.php on line 49

<?
if(isset($_POST['nome']) && isset($_POST['anexo']) && isset($_POST['email'])){
$nome = $_POST['nome'];
$num = $_POST['num'];
$file = $_POST['anexo'];
$file = $_FILES["Filedata"];
$from = $_POST['email'];
$email_from = $from;
$email_subject = "Mail from website";
$email_txt = $_POST['mensagem'];

$email_to = "feliperochaoliveira@gmail.com";

$headers = "From: ".$email_from;

$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";

$email_message =     "Mensagem: $email_txt <br>" . "\n\n" . "–{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . "Mensagem: $email_txt\n\n" . "\n\n";

$email_message .=     "<br><br>" . "Nome: $nome" . "\n\n" . "–{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n";

if($file != ""){
// Anexo os arquivos
// Attach itens to mail
$names = split(',',$file);
foreach($names as $name) {
$anexo = "imagens/" . $name;

/*
* Use fopen if your server dont accept file
* Use fopen se seu servidor não aceita file
*/
//$fileatt = $anexo;
//$fileatt_type = “application/octet-stream”;
//$fileatt_name = $name;
//$file = fopen($fileatt,’rb’);
//$data = chunk_split(base64_encode(fread($file,filesize($fileatt))));
//fclose($file);

/*
* Use file if your server dont accept fopen
* Use file se seu servidor não aceita fopen
*/
//linha 49
$data = chunk_split(base64_encode(join(','file($anexo))));

$email_message .= "–{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" . " name=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
echo unlink("imagens/" . $anexo);
}
}

$email_message .=  "–{$mime_boundary}–\n";

$ok = @mail($email_to, $email_subject, $email_message, $headers);
if(ok){
echo "&ok=1";
}else {
echo "&ok=2";
}
} else {
echo "Email Invalido";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tentou usar o fopen em vez do file??

 

Comente a linha 49 e descomente as outras que tem isso aqui:

$fileatt = $anexo;
$fileatt_type = “application/octet-stream”;
$fileatt_name = $name;
$file = fopen($fileatt,’rb’);
$data = chunk_split(base64_encode(fread($file,filesize($fileatt))));
fclose($file);
Até onde eu sei ta escrito bem claro no código se não funcionar com 1 tente o outro.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tentou usar o fopen em vez do file??

 

Comente a linha 49 e descomente as outras que tem isso aqui:

$fileatt = $anexo;
$fileatt_type = “application/octet-stream”;
$fileatt_name = $name;
$file = fopen($fileatt,’rb’);
$data = chunk_split(base64_encode(fread($file,filesize($fileatt))));
fclose($file);
Até onde eu sei ta escrito bem claro no código se não funcionar com 1 tente o outro.

 

Abraços

 

 

Nossa desculpa minha ignorância no assunto, mas ainda não deu certo, quando eu clico no botão excluir ele diz que não tem arquivo, e quando clico no enviar ele da erro, mas clicando mais de uma vez no botão enviar, ele mostra mensagem enviada e não chega nada no meu email, na pasta imagens ja é possivel ver o arquivo que anexei.... :(

O brother sei que você já deve estar com o saco cheio de mim, mas to precisando muito disso.....valeu mesmo e desculpa ai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O brother sei que você já deve estar com o saco cheio de mim, mas to precisando muito disso.....valeu mesmo e desculpa ai...

I cara rlx :)

Quem pergunta quer saber

 

Bom o fato é que se o arquivo ta na pasta o código não ta alcançando o arquivo.

Você testou enviar o e-mail sem o anexo?? e ver se chega no seu e-mail????

 

Se não chegar teste só o PHP com variáveis fixas e veja o erro que da acessando o mesmo diretamente

Lembrando +1 vez LOCALHOST NÃO ACESSA A FUNÇÃO MAIL DO WINDOWS a não ser que você tenha um sistema de e-mail instalado localmente no apache.

 

Caso contrario nem tente porque não funciona só online.

 

Já testou tudo isso online???

Ou ta testando só localmente até agora?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas Localmente, vou fazer o teste online.....obrigado

 

 

 

Olá, olha ja testei de tudo e nada ainda.......

 

cara eu to com um projeto e esta faltando apenas isso, o arquivo de excluir não esta funcionando, apenas o que quero é escrever o nome, o email, a mensagem, armazenar arquivos mandar para o banco de dados, e depois disponibilizar estes arquivos para download.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você removeu todos aqueles caminhos que você colocou como localhost?

frUpload.upload("http://localhost/teste/teste_upload/upload.php");

E colocou apenas:

 

frUpload.upload("upload.php");
?

 

Fez isso em todos os arquivos que você alterou?

Pois o código base da onde você tirou tenho certeza que não ta dando esses erros, pois já cansei de testar.

 

Como ta seu arquivo de upload e seu arquivo de excluir???

As permissões estão corretas?

 

 

Testou os formulários usando HTML sem o flash para ver quais são os erros PHP???

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você removeu todos aqueles caminhos que você colocou como localhost?

frUpload.upload("http://localhost/teste/teste_upload/upload.php");

E colocou apenas:

 

frUpload.upload("upload.php");
?

 

Fez isso em todos os arquivos que você alterou?

Pois o código base da onde você tirou tenho certeza que não ta dando esses erros, pois já cansei de testar.

 

Como ta seu arquivo de upload e seu arquivo de excluir???

As permissões estão corretas?

 

 

Testou os formulários usando HTML sem o flash para ver quais são os erros PHP???

 

Abraços

 

 

 

Brother deu certo, eu fiz um pouco diferente, em vez de enviar por email eu joguei para o banco de dados e o arquivo eu enviei o caminho para o banco e armazenei em uma pasta...o problema é que meu servidor não trabalha com email e por isso tava dando errado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que maravilha Imagem Postada

 

Não tem função mail hahaha adoro servidor assim...

Que bom que descobriu seu problema

 

Abraços

 

obrigado por tudo, se puder da uma olhada no novo tópico que fiz ai sobre mostrar os arquivos que estão salvos no banco para poder fazer um download.....

 

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.