alvarogtc 1 Denunciar post Postado Agosto 23, 2010 Ola pessoal, tenho um script q faz a insercao de dados no banco de dados e envio de 1 imagem e 1 video, o problema é q nao checa a extensão do arquivo ou seja, podem enviar arquivos php etc pelo form, tentei de varias maneiras criar um condicao que verifica-se isso porem nao consegui, se alguem puder ajudar, segue o codigo q utilizo. if($acao== "insertbd"){ $dir = "../img"; //echo "$dir"; $uploaddir = "$dir/"; if($imagem != "none") { if (@copy($_FILES['imagem']['tmp_name'], $uploaddir . $_FILES['imagem']['name'])) { $imagem1 = $_FILES['imagem']['name']; //echo "<strong>$imagem1</strong> enviada com sucesso!<BR>"; } } if($imagem2 != "none") { if (@copy($_FILES['imagem2']['tmp_name'], $uploaddir . $_FILES['imagem2']['name'])) { $imagem3 = $_FILES['imagem2']['name']; //echo "<strong>$imagem3</strong> enviada com sucesso!<BR>"; } } $sql = "INSERT INTO $tabela VALUES ('$id','$nome','$email','$imagem1','$imagem3','$tema')"; $sql2 = mysql_query($sql, $conexao); $mgs = "<b>$palavra</b> Inserida com Sucesso!"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
RODSbermudez 0 Denunciar post Postado Agosto 24, 2010 o $_FILES tem uma propriedade do arquivo chamada type você já deu uma olhada nisso? olha aqui o $_FILES['nomeArq']['type'] te devolve o tipo de arquivo ... ai você tem que tratar a informação Compartilhar este post Link para o post Compartilhar em outros sites
alvarogtc 1 Denunciar post Postado Agosto 24, 2010 o $_FILES tem uma propriedade do arquivo chamada type você já deu uma olhada nisso? olha aqui o $_FILES['nomeArq']['type'] te devolve o tipo de arquivo ... ai você tem que tratar a informação eu acrescentei assim: antes da execução $f_type = $_FILES['imagem']['type']; $FotoTipo = $f_type; e assim caso a imagem seje !none if($FotoTipo == "image/pjpeg" or $FotoTipo == "image/jpg" or $FotoTipo == "image/jpeg" or $FotoTipo == "image/png" or $FotoTipo == "image/PNG") { nesse caso se você tenta uppar um arquivo php, exe, etc nao faz o upload porem ao mesmo tempo eu coloquei PNG e png e se tento enviar um png nao vai de maneira nenhuma, mesma coisa no segundo upload q seria para flv tbm nao vai.. alguma dica? Compartilhar este post Link para o post Compartilhar em outros sites
RODSbermudez 0 Denunciar post Postado Agosto 24, 2010 tenta assim $tipos=array( 'image/gif', 'image/jpeg', 'image/png', ); if (in_array($_FILES["imagem"]["type"], $tipos)){ } não precisa usar PNG e png -> usa uma dessas para converter: o strtolower() ou o strtoupper() tenta dar um print no arquivo flv para ver que type ele retorna <?=$_FILES['NOMEARQ']['type']; ?> Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 24, 2010 http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://forum.imasters.com.br/index.php?/topic/400522-contenttype-de-arquivo/page__view__findpost__p__1575026 Compartilhar este post Link para o post Compartilhar em outros sites
alvarogtc 1 Denunciar post Postado Agosto 24, 2010 tenta assim $tipos=array( 'image/gif', 'image/jpeg', 'image/png', ); if (in_array($_FILES["imagem"]["type"], $tipos)){ } não precisa usar PNG e png -> usa uma dessas para converter: o strtolower() ou o strtoupper() tenta dar um print no arquivo flv para ver que type ele retorna <?=$_FILES['NOMEARQ']['type']; ?> EU FIZ assim e nao faz nada $tipos=array('image/gif', 'image/jpeg', 'image/jpg', 'image/png',); $dir = "../img"; //echo "$dir"; $uploaddir = "$dir/"; if($imagem != "none") { if (in_array($_FILES["imagem"]["type"], $tipos)){ if (@copy($_FILES['imagem']['tmp_name'], $uploaddir . $_FILES['imagem']['name'])) { $imagem1 = $_FILES['imagem']['name']; //echo "<strong>$imagem1</strong> enviada com sucesso!<BR>"; } } } Compartilhar este post Link para o post Compartilhar em outros sites
alvarogtc 1 Denunciar post Postado Agosto 24, 2010 Bem, eu consegui a minha maneira ainda q nao seje algo moderno, funcinou a principio... se alguem tiver alguma sugestao mais segura ou mais correta, agradeço/ no caso do video flv fiz assim $f_type = $_FILES['arquivo']['type']; $VideoTipo = $f_type; e depois coloquei a condição na hora de fazer o upload tive q colocar x-flv pq foi assim q o mine estava retornando. if($VideoTipo == "video/flv" or $VideoTipo == "video/x-flv") { e para imagens ficou a mesma coisa $f_type = $_FILES['arquivo']['type']; $FotoTipo = $f_type; e depois coloquei a condição na hora de fazer o upload tive q colocar x-png pq foi assim q o mine estava retornando. if($FotoTipo == "image/jpg" or $FotoTipo == "image/x-png") { Compartilhar este post Link para o post Compartilhar em outros sites
cassiano óliver 1 Denunciar post Postado Agosto 24, 2010 Posso estar enganado, mas o mime retornado para FLV no IE é diferente... não lembro qual exatamente, faça um teste... envie o .flv e dá um echo no $_FILES['arquivo']['type']... Compartilhar este post Link para o post Compartilhar em outros sites
alvarogtc 1 Denunciar post Postado Agosto 24, 2010 Posso estar enganado, mas o mime retornado para FLV no IE é diferente... não lembro qual exatamente, faça um teste... envie o .flv e dá um echo no $_FILES['arquivo']['type']... eu fiz usando ie8 e ie7 retornou x-flv print $_FILES['arquivo']['type']; video/x-flv talvez pode estar confundindo com swf q retorna application/x-shockwave-flash Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Agosto 24, 2010 Posso estar enganado, mas o mime retornado para FLV no IE é diferente... Se ele utilizar o método que sugeri aqui, tanto faz se for enviada pelo IE, Firefox, Safari ou qualquer user agent Compartilhar este post Link para o post Compartilhar em outros sites