Ir para conteúdo

POWERED BY:

Arquivado

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

lordlex

formulario

Recommended Posts

ola amigos do forum tudo beleza? seguinte tenho um formulario q envia seu conteudo para email ele tem um item para o envio de arquivo porem gostaria q ele envie mais de 1 arquivo no caso q envie 5 arquivos q seriam imagems e gostaria q tivesse um imput para o envio de cada uma tem como fazer? olha so o codigo q estou usando

 

 

formulario:

<form id="formularioContato" method="post" action="form.php" enctype="multipart/form-data">

 <label>
 <span>Nome</span>
<input name="Nome" type="text"  title="Seu nome"/>
</label>
<label>
<span>E-mail</span>
<input name="Email" type="text" title="Seu email" />
</label>
<label>
<span>Cidade</span>
<input name="Cidade" type="text" title="Sua cidade" />
</label>

 <label>
  <span>Arquivo com fotos:</span>  
  <input name="arquivo" type="file" id="arquivo" title="Envie os arquivos de imagems compactados ex:winrar" />
  </label>
  
  <input name="termo" type="checkbox" value=""  class="termo"/>
   <p class="ptermo">Li,entendi e concordo os </p><p class="ptermo"><a href="">Termos de uso.</a></p>
 <input type="submit" value="Enviar" class="btn" />
</form>

form do action:

 

<?
$date = date("d/m/Y h:i");


$nome = $_POST['nome'];
$email = $_POST['email'];
$cidade = $_POST['cidade'];
$anuncio= $_POST['anuncio'];
$arquivo = $_FILES['arquivo'];
$descricao =$_POST['descricao'];
$detalhes =$_POST['detalhes'];
$contato =$_POST['contato'];


$headers = "MIME-Version: 1.0\n";  

$headers.= "From: $email\r\n";

$boundary = "XYZ-" . date("dmYis") . "-ZYX";
// Especificamos o tipo de conteúdo do e-mail
$headers.= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";  
$headers.= "$boundary\n"; 

 abaixo
$corpo_mensagem = "
ENVIADO POR:<br />
Nome: $nome<br />
E-mail: $email<br />
Cidade: $cidade<br />
Anuncio: $anuncio<br />
Descrição: $descricao<br />
Detalhes: $detalhes<br />
Contato: $contato<br />

ENVIADO EM: $date
";




if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){

    $fp = fopen($_FILES["arquivo"]["tmp_name"],"rb"); 

    $anexo = fread($fp,filesize($_FILES["arquivo"]["tmp_name"]));            

    $anexo = base64_encode($anexo);

   fclose($fp); 

   $anexo = chunk_split($anexo);
 arquivo anexado no corpo da mensagem.
    $mensagem = "--$boundary\n"; 
    $mensagem.= "Content-Transfer-Encoding: 8bits\n"; 
    $mensagem.= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n";
    $mensagem.= "$corpo_mensagem\n"; 
    $mensagem.= "--$boundary\n"; 
    $mensagem.= "Content-Type: ".$arquivo["type"]."\n";  
    $mensagem.= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n";  
    $mensagem.= "Content-Transfer-Encoding: base64\n\n";  
    $mensagem.= "$anexo\n";  
    $mensagem.= "--$boundary--\r\n"; 
}

$destinatario = "email@email.com.br";

$assunto = "Formulario ";



echo "<script>window.location='enviado.php'</script>";

?>



obrigado pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum vlw ajuda amigo Leandro encontrei um script la no laboratorio mas nao etendi muito bem onde coloco o email no codigo q sera enviado o formulario ?

 

<?php
if (getenv("REQUEST_METHOD") == "POST")
{

set_time_limit(0);
//só para teste mas auterem essa parte para pegar os dados via post $_POST
$nome	  = "nome";
$email	 = "email";
$mensagem  = "mensagem";
$assunto   = "assunto";
$anexos	= 0;
$boundary = "XYZ-" . date("dmYis") . "-ZYX";

$mens  = "--$boundary\n";	
$mens .= "Content-Transfer-Encoding: 8bits\n";
$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; 
$mens .= "$mensagem\n";
$mens .= "--$boundary\n";

for($i = 0; $i < count($_FILES["file"]["name"]); $i++)
{
	if(is_uploaded_file($_FILES["file"]["tmp_name"][$i])){
		$fp = fopen($_FILES["file"]["tmp_name"][$i], "rb");
		$anexo = chunk_split(base64_encode(fread($fp, $_FILES["file"]["size"][$i])));		 
		fclose($fp);

		$mens .= "Content-Type: ".$_FILES["file"]["type"][$i]."\n name=\"".$_FILES["file"]["name"][$i]."\"\n";
		$mens .= "Content-Disposition: attachment; filename=\"".$_FILES["file"]["name"][$i]."\"\n";		
		$mens .= "Content-transfer-encoding:base64\n\n"; 
		$mens .= $anexo."\n";
		
		if($i + 1 == count($_FILES["file"]["name"])) 
			$mens.= "--$boundary--"; 
		else 
			$mens.= "--$boundary\n"; 
		
		if($_FILES["file"]['error'][$i] == 0) {
			$anexos++;
		}		
	}	
}

$headers  = "MIME-Version: 1.0\n";
$headers .= "Date: ".date("D, d M Y H:i:s O")."\n";
$headers .= "From: \"Remetente\" <email_do_remetente>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";


if(mail($email, $assunto, $mens, $headers)){
	echo "O email foi enviado com sucesso, $anexos anexos";
} else {
	echo "Nao foi possivel enviar o email";
}	
}

?>

obrigado http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

a vlw ajuda amigo Leandro funcionou beleza porem so esta enviando os anexos :unsure: oq se digita nos text field nao vem http://forum.imasters.com.br/public/style_emoticons/default/cry.gif oq pode ser q eu esteje dando problema o so o codigo

 

uploand.php

<?php
if (getenv("REQUEST_METHOD") == "POST")
{

set_time_limit(0);
//só para teste mas auterem essa parte para pegar os dados via post $_POST
$nome = $_POST["nome"];
$telefone= $_POST["telefone"];
$cidade= $_POST["cidade"];
$anexos = 0;
$boundary = "XYZ-" . date("dmYis") . "-ZYX";



$mens  = "--$boundary\n";       
$mens .= "Content-Transfer-Encoding: 8bits\n";
$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; 
$mens .= "$mensagem\n";
$mens .= "--$boundary\n";



for($i = 0; $i < count($_FILES["file"]["name"]); $i++)
{
        if(is_uploaded_file($_FILES["file"]["tmp_name"][$i])){
                $fp = fopen($_FILES["file"]["tmp_name"][$i], "rb");
                $anexo = chunk_split(base64_encode(fread($fp, $_FILES["file"]["size"][$i])));            
                fclose($fp);

                $mens .= "Content-Type: ".$_FILES["file"]["type"][$i]."\n name=\"".$_FILES["file"]["name"][$i]."\"\n";
                $mens .= "Content-Disposition: attachment; filename=\"".$_FILES["file"]["name"][$i]."\"\n";             
                $mens .= "Content-transfer-encoding:base64\n\n"; 
                $mens .= $anexo."\n";
                
                if($i + 1 == count($_FILES["file"]["name"])) 
                        $mens.= "--$boundary--"; 
                else 
                        $mens.= "--$boundary\n"; 
                
                if($_FILES["file"]['error'][$i] == 0) {
                        $anexos++;
                }               
        }       
}

$headers  = "MIME-Version: 1.0\n";
$headers .= "Date: ".date("D, d M Y H:i:s O")."\n";
$headers .= "From: \"Remetente\" <email_do_remetente>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";



if(mail("email@email.com.br", $assunto, $mens, $headers)){
        echo "O email foi enviado com sucesso, $anexos anexos";
} else {
        echo "Nao foi possivel enviar o email";
}       
}

?>


index com os text fields

 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Anexos</title>
<style> 
html, body {
        margin:0;
        padding:0;
}

#conteudo {
        position:absolute;
        width:340px;
        height:60px;
        top:50%;
        left:50%;
        margin-top:-30px;
        margin-left:-170px;
}

.add {
        position:absolute;
        cursor:pointer;
}
</style>
<script type="text/javascript" src="funcoes.js"></script>
</head>

<body>
<form action="upload.php" method="post" enctype="multipart/form-data" id="form1">
        <div id="conteudo">
        <label>
        Nome
        <input name="nome" type="text" id="nome" />
        </label><br />
         <label>
        Telefone
        <input name="telefone" type="text" id="telefone"/>
        </label><br />
          <label>
     Cidade
        <input name="cidade" type="text" id="cidade"  />
        </label><br />
                <input type="file" name="file[]" />
                <input type="button" value="Adicionar" onclick="Add()" />
                <span id="campos"></span><br />         
        <p>
          <input type="submit" name="Submit" value="Enviar" />
        </p>
  </div>
</form>
</body>
</html>

Vlw ajuda http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

e nao ta funcionando so e preciso colocar aquela parte do post para pegar oq foi digitado mas e para mostrar ? onde ele vai mostrar depois la no email? nao ta funcioando so oq digita nos textfields os anexos envia certinho

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

O anexo está OK? Então o problema deve estar no nome dos campos. Coloque este código no início do código

<?php
echo '<pre>';
print_r($_POST);

Poste aqui o que imprimir.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela força amigo Matias isso so nao envia oq e digitado nos textfields os anexos envian perfeito

 

Fiz oq você pediu e testei o upload.php em localhost no endereço http://localhost/testeform/upload.php

 

 

apareceu isso:

 

Array
(
)

era pra testar em localhost isso ?

 

o formulario estou testano em host pago no uol host

 

ficou assim o codigo

<?php
echo '<pre>';
print_r($_POST);
if (getenv("REQUEST_METHOD") == "POST")
{

set_time_limit(0);
//só para teste mas auterem essa parte para pegar os dados via post $_POST
$nome = $_POST["nome"];
$telefone  = $_POST["telefone"];
$cidade  = $_POST["cidade"];
$anexos = 0;
$boundary = "XYZ-" . date("dmYis") . "-ZYX";

$mens  = "--$boundary\n";       
$mens .= "Content-Transfer-Encoding: 8bits\n";
$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; 
$mens .= "$mensagem\n";
$mens .= "--$boundary\n";

for($i = 0; $i < count($_FILES["file"]["name"]); $i++)
{
        if(is_uploaded_file($_FILES["file"]["tmp_name"][$i])){
                $fp = fopen($_FILES["file"]["tmp_name"][$i], "rb");
                $anexo = chunk_split(base64_encode(fread($fp, $_FILES["file"]["size"][$i])));            
                fclose($fp);

                $mens .= "Content-Type: ".$_FILES["file"]["type"][$i]."\n name=\"".$_FILES["file"]["name"][$i]."\"\n";
                $mens .= "Content-Disposition: attachment; filename=\"".$_FILES["file"]["name"][$i]."\"\n";             
                $mens .= "Content-transfer-encoding:base64\n\n"; 
                $mens .= $anexo."\n";
                
                if($i + 1 == count($_FILES["file"]["name"])) 
                        $mens.= "--$boundary--"; 
                else 
                        $mens.= "--$boundary\n"; 
                
                if($_FILES["file"]['error'][$i] == 0) {
                        $anexos++;
                }               
        }       
}

$headers  = "MIME-Version: 1.0\n";
$headers .= "Date: ".date("D, d M Y H:i:s O")."\n";
$headers .= "From: \"Remetente\" <email_do_remetente>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";

$mens .= "Nome: $nome\n";
$mens .= "Telefone: $telefone\n";
$mens .= "Cidade: $cidade\n";



if(mail("faleconosco@funilariabergamasco.com.br", $assunto, $mens, $headers)){
        echo "O email foi enviado com sucesso, $anexos anexos";
} else {
        echo "Nao foi possivel enviar o email";
}       
}

?>

Brigadao pela ajuda http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

a me esqueci qnd envia la pelo fomrmulario hospedado com o codigo q você disse aparece isso na tela

 

Array
(
    [nome] => teste
    [telefone] => teste
    [cidade] => tessste
    [Submit] => Enviar
)
O email foi enviado com sucesso, 1 anexos

so q nao envia o email

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso so nao envia oq e digitado nos textfields os anexos envian perfeito

 

so q nao envia o email

 

Qual das duas situações é verdadeira? Envia o e-mail com o anexo e sem o texto dos campos digitados ou não envia o e-mail?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw ajuda amigo Matias mas vou acabar te confundindo sem querer http://forum.imasters.com.br/public/style_emoticons/default/grin.gif o problema q esta aconteceno e oq disse no começo do post o formulario envia certinho envia os anexos perfeitamente o problema e q ele nao esta enviando oq e digitado nos textfield http://forum.imasters.com.br/public/style_emoticons/default/cry.gif so chega os anexos :(

 

aew você pediu para eu por aquele codigo no começo do php esse:

<?php
echo '<pre>';
print_r($_POST);

 

testei no servidor no servidor ta enviando o email beleza so q aparece isso aew embaixo na tela ( antes de por oq você pediu so aparecia isso "O email foi enviado com sucesso, 1 anexos") manda o anexo mas nao vem oq foi digitado nos textfield tbm :(

 

e aparece isso na tela

 

Array
(
    [nome] => teste
    [telefone] => teste
    [cidade] => teste
    [Submit] => Enviar
)
O email foi enviado com sucesso, 1 anexos

aqui a pagina q estou testano o form no momento

http://teste.funilariabergamasco.com.br/

 

Obrigado pela ajuda http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta colocar os campos do formulário antes do anexo... Assim...

 

$mens = "Nome: $nome\n";
$mens .= "Telefone: $telefone\n";
$mens .= "Cidade: $cidade\n";

$mens .= "--$boundary\n";       
$mens .= "Content-Transfer-Encoding: 8bits\n";
$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; 
$mens .= "$mensagem\n";
$mens .= "--$boundary\n";

for($i = 0; $i < count($_FILES["file"]["name"]); $i++)
{
        if(is_uploaded_file($_FILES["file"]["tmp_name"][$i])){
                $fp = fopen($_FILES["file"]["tmp_name"][$i], "rb");
                $anexo = chunk_split(base64_encode(fread($fp, $_FILES["file"]["size"][$i])));            
                fclose($fp);

                $mens .= "Content-Type: ".$_FILES["file"]["type"][$i]."\n name=\"".$_FILES["file"]["name"][$i]."\"\n";
                $mens .= "Content-Disposition: attachment; filename=\"".$_FILES["file"]["name"][$i]."\"\n";             
                $mens .= "Content-transfer-encoding:base64\n\n"; 
                $mens .= $anexo."\n";
                
                if($i + 1 == count($_FILES["file"]["name"])) 
                        $mens.= "--$boundary--"; 
                else 
                        $mens.= "--$boundary\n"; 
                
                if($_FILES["file"]['error'][$i] == 0) {
                        $anexos++;
                }               
        }       
}

$headers  = "MIME-Version: 1.0\n";
$headers .= "Date: ".date("D, d M Y H:i:s O")."\n";
$headers .= "From: \"Remetente\" <email_do_remetente>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";

Veja se resolve.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Matias vlw a força mais ainda nao deu certo http://forum.imasters.com.br/public/style_emoticons/default/cry.gif nao estou entendeno pq desse problema o codigo ficou assim:

 

<?php

if (getenv("REQUEST_METHOD") == "POST")
{

set_time_limit(0);
//só para teste mas auterem essa parte para pegar os dados via post $_POST
$nome = $_POST["nome"];
$telefone  = $_POST["telefone"];
$cidade  = $_POST["cidade"];
$anexos = 0;
$boundary = "XYZ-" . date("dmYis") . "-ZYX";

$mens = "Nome: $nome\n";
$mens .= "Telefone: $telefone\n";
$mens .= "Cidade: $cidade\n";

$mens .= "--$boundary\n";       
$mens .= "Content-Transfer-Encoding: 8bits\n";
$mens .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; 
$mens .= "$mensagem\n";
$mens .= "--$boundary\n";

for($i = 0; $i < count($_FILES["file"]["name"]); $i++)
{
        if(is_uploaded_file($_FILES["file"]["tmp_name"][$i])){
                $fp = fopen($_FILES["file"]["tmp_name"][$i], "rb");
                $anexo = chunk_split(base64_encode(fread($fp, $_FILES["file"]["size"][$i])));            
                fclose($fp);

                $mens .= "Content-Type: ".$_FILES["file"]["type"][$i]."\n name=\"".$_FILES["file"]["name"][$i]."\"\n";
                $mens .= "Content-Disposition: attachment; filename=\"".$_FILES["file"]["name"][$i]."\"\n";             
                $mens .= "Content-transfer-encoding:base64\n\n"; 
                $mens .= $anexo."\n";
                
                if($i + 1 == count($_FILES["file"]["name"])) 
                        $mens.= "--$boundary--"; 
                else 
                        $mens.= "--$boundary\n"; 
                
                if($_FILES["file"]['error'][$i] == 0) {
                        $anexos++;
                }               
        }       
}

$headers  = "MIME-Version: 1.0\n";
$headers .= "Date: ".date("D, d M Y H:i:s O")."\n";
$headers .= "From: \"Remetente\" <email_do_remetente>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";

if(mail("faleconosco@funilariabergamasco.com.br", $assunto, $mens, $headers)){
        echo "O email foi enviado com sucesso, $anexos anexos";
} else {
        echo "Nao foi possivel enviar o email";
}       
}

?>

mas tbm ainda nao esta aparecendo oq foi digitado nos textfields :(

 

Obrigado pela ajuda http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, o que eu te indicaria é utilizar a classe PHPMailer. É mais fácil de manipular.

 

http://phpmailer.worxware.com/

 

No laboratório de scripts tem alguns exemplos. Um deles.

 

http://forum.imasters.com.br/index.php?/topic/349201-enviar-email-com-anexos-usando-phpmailer/

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza vlw a ajuda amigo Matias fiz pelo phpmailer mas agora ta dano problema nesse tbm http://forum.imasters.com.br/public/style_emoticons/default/cry.gif creio q esta tudo certo mas o bendito fla q e um email invalido :( aparece

 

Invalid address: afaInvalid address: afaYou must provide at least one recipient email address. Mailer Error: You must provide at least one recipient email address.

 

codigo parece beleza =( o smtp do uol host q estou usando usa outra porta q nao e padrao creio eu usa a porta 587 o normal e porta 25 ne?

 

olha a pagina q to testano :

http://teste.funilariabergamasco.com.br/

 

<?php
require 'classes/class.phpmailer.php';

function gpc($str)
{
        return get_magic_quotes_gpc() ? $str : addslashes($str);
}

foreach ($_POST as $var => $str)
{
        $$var = isset($_POST[$var]) ? gpc($str) : NULL;
}

$Host    = 'smtp.funilariabergamasco.com.br';
$Name    = 'faleconosco';
$Username = 'faleconosco@funilariabergamasco.com.br';
$Password = 'xxxxx';

$Subject  = 'Assunto do email';

// PHPMailer
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->IsHTML(true);

$mail->CharSet  = 'utf-8';        // Define o charset da mensagem

$mail->SMTPAuth   = true;                // Permitir autenticação SMTP
$mail->Host        = $Host;             // Define o servidor SMTP
$mail->Username   = $Username;  // SMTP conta de usuário
$mail->Password   = $Password;  // SMTP conta senha

if (isset($_GET['submit']) && $_GET['submit'] == 'true')
{
        $mail->Subject  = $Subject;              // Define o assunto da mensagem
        $mail->Body        = nl2br($mensagem); // Define o corpo da mensagem

        $mail->SetFrom($Username, $Name);        // Adiciona um "From" endereço
        // $mail->AddAddress($Username, $Name);  // Adiciona um "To" endereço
        $mail->AddAddress($email, $nome);  // Adiciona um "To" endereço
        $mail->AddReplyTo($email, $nome);        // Adiciona um "Reply-to" endereço

        $files = $_FILES['files'];
        for ($i=0; $i < sizeof($files); $i++)
        {
                if (is_uploaded_file($files['tmp_name'][$i]))
                {
                        // Adiciona um anexo de um caminho sobre o sistema de ficheiros
                        $mail->AddAttachment($files['tmp_name'][$i], $files['name'][$i]);
                }
        }
        
        if ($mail->Send())
        {
                echo 'Mensagem enviada';
        }
        else
        {
                echo 'Mailer Error: ' . $mail->ErrorInfo;
        }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-BR" lang="pt-BR">

<head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>
        <form enctype="multipart/form-data" action="index.php?submit=true" method="post">
                Nome <input type="text" name="nome" /><br />
                Email <input type="text" name="email" /><br />
                Mensagem <textarea name="mensagem" cols="20" rows="5"></textarea><br />
                <input type="file" name="files[]" /><br />
                <input type="file" name="files[]" /><br />
                <input type="file" name="files[]" /><br />
                <input type="submit" value="Enviar" />
        </form>
</body>

</html>

vlw ajuda

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.