infonet 1 Denunciar post Postado Setembro 29, 2011 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
mexicanox 7 Denunciar post Postado Setembro 29, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Setembro 29, 2011 Fácil if( $_FILES[ 'arquivo' ][ 'size' ] > ( 1024 * 500 ) ) { echo 'Imagem maior que 500kb'; } Compartilhar este post Link para o post Compartilhar em outros sites
infonet 1 Denunciar post Postado Setembro 30, 2011 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
Kakashi_Hatake 267 Denunciar post Postado Setembro 30, 2011 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
infonet 1 Denunciar post Postado Setembro 30, 2011 Oi Carlos, continua enviando arquivos acima de 500KB... mas quero impedir isso! qq forma, obrigado! Compartilhar este post Link para o post Compartilhar em outros sites