Jump to content


Photo

Imagem Chega Toda "encriptada"


  • Faça o login para participar
11 replies to this topic

#1 Marcell Marra

Marcell Marra

    Expert

  • Usuários
  • 569 posts
  • Sexo:Não informado
  • Localidade:São José dos Campos - SP

Posted 17/09/2006, 13:49

Beirando o suicídio.

Consegui o script aqui no forum.

Apenas coloquei alumas variaveis pros campos adicionais do Formulario com anexo.

Dêem uma olhada:

<?
if ($action != "upload")
{


print '
<FORM METHOD="post"  ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000">
<INPUT TYPE="hidden" NAME="action" VALUE="upload">
<TABLE BORDER="1">

 <TR>
  <TD>E-mail: </TD>
  <TD><input type="text" name="from" size=40><BR></TD>
 </TR>
<TR>
  <TD>Nome: </TD>
  <TD><input type="text" name="nome" size=40><BR></TD>
 </TR>
   <TD>Idade: </TD>
  <TD><input type="text" name="idade" size=40><BR></TD>
 </TR>
	<TD>Escolaridade: </TD>
  <TD><input type="text" name="escolaridade" size=40><BR></TD>
 </TR>
	<TD>Rua: </TD>
  <TD><input type="text" name="rua" size=40><BR></TD>
 </TR>
	 <TD>Bairro: </TD>
  <TD><input type="text" name="bairro" size=40><BR></TD>
 </TR>
	 <TD>Complemento: </TD>
  <TD><input type="text" name="complemento" size=40><BR></TD>
 </TR
	  <TD>Porque você gostaria de trabalhar no Buffet?</TD>
  <TD><input type="text" name="pergunta" size=40><BR></TD>
 </TR
	   <TD>Outras(Complemento): </TD>
  <TD><input type="text" name="outras" size=40><BR></TD>
 </TR
<TR>
<TD>Mensagem: </TD>
  <TD><TEXTAREA NAME="xxxxxx" ROWS="10" COLS="50"></TEXTAREA></TD>
 </TR>
 
 <TR>
  <TD>Anexo: </TD>
  <TD><INPUT TYPE="file" NAME="anexo"></TD>
 </TR>

 <TR>
  <TD COLSPAN="2"><INPUT TYPE="submit" VALUE="Enviar"></TD>
 </TR>
</TABLE>
</FORM>
';
}

if ($action == "upload")

{
$mime_list = array("html"=>"text/html","htm"=>"text/html", "txt"=>"text/plain", "rtf"=>"text/enriched","csv"=>"text/tab-separated-values","css"=>"text/css","gif"=>"image/gif");

$ABORT = FALSE;

$boundary = "XYZ-" . date(dmyhms) . "-ZYX";

$message = "--$boundary\n";
$message .= "Content-Transfer-Encoding: 8bits\n";
$message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n\n";
$message .= "Nome:";
$message .= $nome;
$message .= "\n";
$message .= "Idade:";
$message .= $idade;
$message .= "\n";
$message .= "Escolaridade:";
$message .= $escolaridade;
$message .= "\n";
$$message .= "Rua:";
$message .= $rua;
$message .= "\n";
$message .= "Bairro:";
$message .= $bairro;
$message .= "\n";
$message .= "Complemento:";
$message .= $complemento;
$message .= "\n";
$message .= "Porque você gostaria de trabalhar no Buffet?";
$message .= $pergunta;
$message .= "\n";
$message .= "Outras(Complemento):";
$message .= $outras;

$attachments[1] = $anexo;

foreach ($attachments as $key => $full_path) {
if ($full_path !='') {
	  if (file_exists($full_path)){
			if ($fp = fopen($full_path,"rb")) {
					$filename = array_pop(explode(chr(92),$full_path));
					$contents = fread($fp,filesize($full_path));
					$encoded = base64_encode($contents);
					$encoded_split = chunk_split($encoded);
					fclose($fp);
					$message .= "--$boundary\n";
					$message .= "Content-Type: $anexo_type\n";
					$message .= "Content-Disposition: attachment; filename=\"$anexo_name\" \n";
					$message .= "Content-Transfer-Encoding: base64\n\n";
					$message .= "$encoded_split\n";
			}
			else {
			echo "Impossível abrir o arquivo$key: $filename";
			$ABORT = TRUE;
			}
	  }
	  else {
	  echo "O arquivo$key não existe: $filename";
	  $ABORT = TRUE;
	  }

}
}

$message .= "--$boundary--\r\n";

$headers = "MIME-Version: 1.0\n";
$headers .= "From: <$from>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";


$mensagem=mail("desamarrado@gmail.com", "SITE BPG / Trabalhe Conosco", $message, $headers);
if ($mensagem) {
   print "Mensagem enviada!";

} else {
   print "O envio da mensagem falhou!";
}

}
?>

E olhem como a mensagem chega pra mim

opa@hotmail.coms
para mim
Mais opções 13:43 (0 minutos atrás)
Nome:Marcell
Idade:17
Escolaridade:2° Grau
Rua:Jordao Ferreiras
Bairro:Jd Sao Santo
Complemento:ui
Porque você gostaria de trabalhar no Buffet?sdsd
Outras(Complemento):dsdsdsd

--XYZ-170906010954-ZYX
Content-Type: image/jpeg
Content-Disposition: attachment; filename="DSC00917.jpg"
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAgEASABIAAD/4S4nRXhpZgAASUkqAAgAAAAMAA4BAgAgAAAAngAAAA8BAgAF
AAAAvgAAABABAgAIAAAAwwAAABIBAwABAAAAAQAAABoBBQABAAAAywAAABsBBQABAAAA0wAAACgB
AwABAAAAAgAAADEBAgAbAAAA2wAAADIBAgAUAAAA9gAAABMCAwABAAAAAgAAAKXEBwAcAAAACgEA
AGmHBAABAAAAKAEAAOwCAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAFNPTlkARFND
LVczMABIAAAAAQAAAEgAAAABAAAAQWRvYmUgUGhvdG9zaG9wIENTIFdpbmRvd3MAMjAwNjowOTox
NiAwMDoyODoyNABQcmludElNADAzMDAAAAIAAgABAAAAAQEBAAAAAAAbAJqCBQABAAAAcgIAAJ2C
BQABAAAAegIAACKIAwABAAAAAgAAACeIAwABAAAAUAAAAACQBwAEAAAAMDIyMQOQAgAUAAAAggIA
AASQAgAUAAAAlgIAAAGRBwAEAAAAAQIDAAKRBQABAAAAqgIAAASSCgABAAAAsgIAAAWSBQABAAAA
ugIAAAeSAwABAAAABQAAAAiSAwABAAAAAAAAAAmSAwABAAAAXwAAAAqSBQABAAAAwgIAAACgBwA


m

procuro criatividade

#2 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 17/09/2006, 16:32

Acredito que seja culpa dessa linha aqui ó:

$encoded = base64_encode($contents);

Tudo bem que você queira codigicar a mensagem pra ir pro serviddor e tal. Mas quando for enviar mesmo (tipo perto do mail() ),você tem que, no caso, decodificar os dados

Sacou?

[]'s

#3 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 17/09/2006, 17:15

Quando li esse codigo achei que fosse por causa disso ai também, só que não disse porquê talvrz eu não entenda muito do assunto ai poderia estar falando abobrinha.^^.
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#4 Marcell Marra

Marcell Marra

    Expert

  • Usuários
  • 569 posts
  • Sexo:Não informado
  • Localidade:São José dos Campos - SP

Posted 17/09/2006, 22:54

Acredito que seja culpa dessa linha aqui ó:

$encoded = base64_encode($contents);

Tudo bem que você queira codigicar a mensagem pra ir pro serviddor e tal. Mas quando for enviar mesmo (tipo perto do mail() ),você tem que, no caso, decodificar os dados

Sacou?

[]'s


Jackpot e lwirkk, eu entendi, porém, como sou iniciante em php, não consegui aplicar o "decodificador" no meu código!

$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo base64_decode($str);

no exemplo acima, a variavel $str seria trocada por qual?

Valeu a todos voces!
m

procuro criatividade

#5 Fabio1

Fabio1

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado
  • Localidade:Mogi das Cruzes - SP

Posted 18/09/2006, 04:28

Decodando o "VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==" ficaria "This is an encoded string"!

Isso que queria? Não entendi direito...



Questão da sua dúvida.

Não vejo tanta necessidade de encodar o arquivo. Tente assim!

foreach ($attachments as $key => $full_path)
{
	if ($full_path !='') 
	{	  
		if (file_exists($full_path))
		{			
			if ($fp = fopen($full_path,"rb")) 
			{
				$filename = array_pop(explode(chr(92),$full_path));
				$contents = fread($fp,filesize($full_path));
				fclose($fp);
				$message .= "--$boundary\n";
				$message .= "Content-Type: $anexo_type\n";
				$message .= "Content-Disposition: attachment; filename=\"$anexo_name\" \n";
				$message .= "$contents\n";
			}
			else
			{
				echo "Impossível abrir o arquivo$key: $filename";
				$ABORT = TRUE;
			}
		}
		else 
		{
			echo "O arquivo$key não existe: $filename";
			$ABORT = TRUE;
		}
	}
}

Edição feita por: Fabio1, 18/09/2006, 04:31.


#6 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 18/09/2006, 09:24

Falta um pouco de conceito nessa história toda...

Pq é utilizado base64 no transporte de arquivos no protocolo SMTP?
http://pt.wikipedia.org/wiki/MIME
http://www.ietf.org/rfc/rfc2045.txt

Sugiro ler e usar os exemplos deste endereço:
http://br.php.net/mail
------
Mero mortal!

#7 Marcell Marra

Marcell Marra

    Expert

  • Usuários
  • 569 posts
  • Sexo:Não informado
  • Localidade:São José dos Campos - SP

Posted 18/09/2006, 13:19

Decodando o "VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==" ficaria "This is an encoded string"!

Isso que queria? Não entendi direito...



Valeu Fabio, mas olha como chegou a mensagem após instalar o código, ele não encodou, porém a imagem não chegou:

Nome:fdsf
Idade:sdfsd
Escolaridade:fsdf
Rua:sdfsd
Bairro:fsdf
Complemento:sdfsdf
Porque você gostaria de trabalhar no Buffet Petit Gourmet?dsfsd
Outras(Complemento):fsdfsdf--XYZ-180906010943-ZYX
Content-Type: image/jpeg
Content-Disposition: attachment; filename="foto.jpg"
ÿØÿà


Prog, na verdade o que me interessa no caso é que a imagem chegue no e-mail junto com os dados do formulario! :assobio:

Completando esse processo sem erros, já tá ótimo!

Obrigado a todos, caso consigam me a judar a solucionar, ficarei mais grato ainda.

Edição feita por: Marcell Marra, 18/09/2006, 13:20.

m

procuro criatividade

#8 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 18/09/2006, 17:30

Marcell...

A imagem, assim como qualquer outro arquivo binário, deve ser codificado para base64.

Verifique se todo o seu código esta de acordo com os apresentados no site do PHP, se não resolver, pode ser que o problema seja com o seu cliente de e-mail.
------
Mero mortal!

#9 Marcell Marra

Marcell Marra

    Expert

  • Usuários
  • 569 posts
  • Sexo:Não informado
  • Localidade:São José dos Campos - SP

Posted 18/09/2006, 21:34

Marcell...

A imagem, assim como qualquer outro arquivo binário, deve ser codificado para base64.

Verifique se todo o seu código esta de acordo com os apresentados no site do PHP, se não resolver, pode ser que o problema seja com o seu cliente de e-mail.


Prog, pessoas ignorantes como eu existem!

Tentei "codificar" via 8bits mas nao chegou tambem.

O mais estranho de tudo isso é que antes de eu adicionar os campos, a imagem chegava numa boa!

:wacko:
m

procuro criatividade

#10 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 19/09/2006, 10:38

Exemplo funcional:

<?
/*
Exemplo para envio de email com anexo
Criado em 19 set 2006 por Felipe Esteves
Alterado em ...
*/

//=== Inicializar Variaveis

$from="felipe.esteves@xyz.com.br";
$to="felipe.esteves@xyz.com.br";
$subject="Teste de anexo";
$body="Segue anexo arquivo apenas para teste";
$cc="";
$bcc="";
$attach_name="prova_pg1.gif";
$attach="/home/esteves/Desktop/bagunca/$attach_name";
$attach_size=filesize($attach);
$attach_type=mime_content_type($attach);

if (isset($attach)) $attach="nenhum";

//=== Identificar Sistema Operacional

if (strtoupper(substr(PHP_OS,0,3)=='WIN')) {
  $eol="\r\n";
} elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) {
  $eol="\r";
} else {
  $eol="\n";
}

//=== Montar a mensagem

$mailheaders = "From: $from$eol";
$mailheaders .= "Reply-To: $from$eol";
$mailheaders .= "Cc: $cc$eol";
$mailheaders .= "Bcc: $bcc$eol";
$mailheaders .= "X-Mailer: PHP v".phpversion()."$eol";

$msg_body = stripslashes($body);
$body_top="";

if ($attach != "nenhum")
{
  $file = fopen($attach, "r");
  $contents = fread($file, $attach_size);
  $encoded_attach = chunk_split(base64_encode($contents));
  fclose($file);

  $msg_attach = "$eol$eol--Message-Boundary$eol";
  $msg_attach .= "Content-type: $attach_type; name=\"$attach_name\"$eol";
  $msg_attach .= "Content-Transfer-Encoding: BASE64$eol";
  $msg_attach .= "Content-disposition: attachment; filename=\"$attach_name\"$eol$eol";
  $msg_attach .= "$encoded_attach$eol";
  $msg_attach .= "--Message-Boundary--$eol";

  $mailheaders .= "MIME-version: 1.0$eol";
  $mailheaders .= "Content-type: multipart/mixed; ";
  $mailheaders .= "boundary=\"Message-Boundary\"$eol";
  $mailheaders .= "Content-transfer-encoding: 7BIT$eol";
  $mailheaders .= "X-attachments: $attach_name";

  $body_top .= "--Message-Boundary$eol";
  $body_top .= "Content-type: text/plain; charset=US-ASCII$eol";
  $body_top .= "Content-transfer-encoding: 7BIT$eol";
  $body_top .= "Content-description: Mail message body$eol$eol";
}

$msg_body = $body_top . $msg_body . $msg_attach;

//=== Enviar a mensagem

if (mail($to, stripslashes($subject), $msg_body, $mailheaders)) {
		echo "Mensagem enviada.";
}
?>

Este script foi baseado em vários outros que encontrei por aí.
------
Mero mortal!

#11 Marcell Marra

Marcell Marra

    Expert

  • Usuários
  • 569 posts
  • Sexo:Não informado
  • Localidade:São José dos Campos - SP

Posted 19/09/2006, 13:42

Prog, valeu novamente pelo script.

Queria dizer uma coisa: testei o sistema antigo pelo GMAIL, Walla e Yahoo.

Apenas o Walla conseguiu abrir a imagem.

O que será?

Vou testar seu script e posto, muito obrigado.
m

procuro criatividade

#12 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 22/09/2006, 09:31

Vou testar seu script e posto, muito obrigado.


Funcionou?
------
Mero mortal!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq