Ir para conteúdo

POWERED BY:

Arquivado

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

infonet

FORM com ANEXO limitando TAMANHO DA IMAGEM

Recommended Posts

Oi pessoal!

Estou tentando limitar o tamanho do anexo que vai ser enviado pelo meu formulario, mas não estou conseguindo...

Seguinte: Quando faço o teste na minha máquina, tudo funciona normalmente, mas quando eu hospedo os arquivos, no servidor,

não funciona direito.

----------------

COMO DEVE FUNCIONAR: Imagem acima de 500KB tem que dar erro. Abaixo disso, vai "direitinho",

Na minha máquina funciona, mas on-line não funciona.

----------------

Alguém pode me ajudar? Segue o código:

---------------

email.htm

--

<html>
<head>
<script language="javascript" type="text/javascript">

function checa_formulario(email){

   if (email.nome.value == ""){ 
 alert("Por Favor não deixe o seu nome em branco!!!");
  email.nome.focus();
   return (false); 
}

   if (email.email_from.value == ""){ 
 alert("Por Favor não deixe o seu email em branco!!!");
  email.email_from.focus();
   return (false); 
}

   if (email.email.value == ""){ 
 alert("não deixe o email destinatario em branco!!!");
  email.email.focus();
   return (false); 
}

   if (email.assunto.value == ""){ 
 alert("não deixe o assunto em branco!!!");
  email.assunto.focus();
   return (false); 
}

}
</script>
<title>Certificação - NIC</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.email {
text-transform: lowercase;
}
.texto {
color: #0000FF
}
.style1 {color: #FF0000}

-->
</style>
</head>

<body onLoad="document.email.nome.focus();">
<form onsubmit="return checa_formulario(this)" action="envia.php" method="post" enctype="multipart/form-data" name="email">
 <h1 align="center" class="style1">
<font face="Arial" color="#5B5B5B" style="font-size: 15pt">Certificação - 
NIC</font>
<input name="email" readonly="true" value="[b]email_recebedor@gmail.com[/b]" type="text" class="email" style="border: 0px solid transparent; color:#ffffff; font-family:Arial; font-size:1pt; font-weight:" /></h1>
 <table width="42%"  border="0" align="center">
   <tr>
     <td><div align="left"><font face="Arial"><span class="texto">
	<font color="#5B5B5B" style="font-size: 9pt">Nome:</font></span></font></div></td>
     <td><input name="nome" type="text" id="nome" size="66"></td>
   </tr>
   <tr>
     <td width="12%"><div align="right" class="texto">
	<p align="left">
	<font face="Arial" color="#5B5B5B" style="font-size: 9pt">Seu e-mail:</font></div></td>
     <td width="86%">
	<input name="email_from" type="text" class="email" size="66"></td>
   </tr>
   <tr>
     <td><div align="right" class="texto">
	<p align="left">
	<font face="Arial" color="#5B5B5B" style="font-size: 9pt">Assunto:</font></div></td>
     <td>
	<input name="assunto" type="text" id="assunto" size="50" value="Certificação do NIC" readonly="true" style="border: 0px solid transparent; color:#5B5B5B; font-family:Arial; font-size:10pt; font-weight:" /></td>
   </tr>
   <tr>
     <td valign="top"><div align="right" class="texto">
	<p align="left">
	<font face="Arial" color="#5B5B5B" style="font-size: 9pt">Mensagem:</font></div></td>
     <td><textarea name="mensagem" cols="50" rows="10" id="mensagem"></textarea></td>
   </tr>
   <tr>
     <td><div align="right" class="texto">
	<p align="left">
	<font face="Arial" color="#5B5B5B" style="font-size: 9pt">Anexo:</font></div></td>
     <td><input name="arquivo" type="file" size="51"></td>
   </tr>
   <tr>
     <td> </td>
     <td><input type="submit" name="Submit" value="Enviar"></td>
   </tr>
 </table>
</form>
</body>
</html>

------------------

envia.php

--

<?php

//pego os dados enviados pelo formulario

$nome = $_POST["nome"];
$email = $_POST["email"];
$mensagem = $_POST["mensagem"];
$assunto = $_POST["assunto"];
$email_from = $_POST["email_from"];

//formato o campo da mensagem
$mensagem = wordwrap( $mensagem, 50, "<br>", 1);

//valido os emails
if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email)){

echo"<center>Erro ao enviar!</center>";
echo "<center><a href=\"javascript:history.go(-1)\">Voltar</center></a>";
exit;

}

if (!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$", $email_from)){

echo "<center>Digite seu e-mail corretamente!</center>";
echo "<center><a href=\"javascript:history.go(-1)\"><center>Voltar</center></a>";
exit;
}

$arquivo = isset($_FILES["arquivo"]) ? $_FILES["arquivo"] : FALSE;

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); 

$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"; //plain
$mens .= "$mensagem\n";
$mens .= "--$boundary\n";
$mens .= "Content-Type: ".$arquivo["type"]."\n"; 
$mens .= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n"; 
$mens .= "Content-Transfer-Encoding: base64\n\n"; 
$mens .= "$anexo\n"; 
$mens .= "--$boundary--\r\n"; 

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

//envio o email com o anexo 
mail($email,$assunto,$mens,$headers); 

echo"Email enviado com sucesso COM ANEXO!"; 

} 


//se não tiver anexo

else {

if($_FILES['arquivo']['filesize'] > 500000){

} else {

die("<script language='javascript'>alert('Sua imagem excedeu o tamanho máximo permitido de 500Kb!');history.go(-1);</script>");
exit;
}

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: \"$nome\" <$email_from>\r\n";

//envia o email sem anexo
mail($email,$assunto,$mensagem, $headers);

echo"Email enviado com sucesso SEM ANEXO!"; 
}
?>

-------------------

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo que eu percebi voce esta pegando o tamanho dos arquivos assim

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

 

imagino que o mais facil e preciso seria assim

$anexo = $_FILES["arquivo"]["size"]; //aqui pega o tamanho em bytes 

 

assim ele paga o tamanho em bytes dai é so fazer uma conversão basica e voce tem o tamanho em KBs

 

flws !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Carlos Coelho e mexicanox, obrigado, mas o problema não é transformar em KB...

O problema é que não dá erro...

Tá enviando tudo, mesmo os arquivos acima de 500KB

Na verdade eu adicionei as linhas que descrevo a seguir:

-----------------------

if($_FILES['arquivo']['filesize'] > 500000){ //Aqui COMPARA o tamanho do arquivo, mas não estou sabendo resolver o problema.

 

} else {

 

die("<script language='javascript'>alert('Sua imagem excedeu o tamanho máximo permitido de 500Kb!');history.go(-1);</script>");

exit;

}

-----------------------

No original não era para impedir nada, mas eu não quero receber arquivos grandes demais, por isso limitei para 500KB (500000 by).

Tenho o ApacheTriad instalado e qndo faço o teste OFF-LINE, funciona (ESTÁ IMPEDINDO O ENVIO DE ARQUIVOS ACIMA DE 500KB),

mas qndo hospedo (ON-LINE) o "form" envia tudo sem impedir os arquivos acima de 500kb, carregando a page "envia.php".

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja a diferença...

 

De

if( $_FILES[ 'arquivo' ][ 'size' ] > ( 1024 * 500 ) )

 

Para

if( $_FILES[ 'arquivo' ][ 'filesize' ] > 500000 )

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.