valtinho 0 Denunciar post Postado Setembro 28, 2007 Olá, novamente preciso de uma ajuda... ... como faço para que um script reconheça uma extensão ".swf"? Estou tentando fazer um up de um banner, mas o script não reconhece a extensão. Tenho o form de envio: <body bgcolor="#FFFFFF"> <form action="r_proc_banners.php?acao=salvar" method="post" enctype="multipart/form-data" name="cadastro" id="cadastro" onSubmit="return validaForm(this)"> <table width="70%" border="0" align="center"> <tr> <td><table width="100%" border="0"> <tr> <td colspan="2"><div align="center">Cadastro de Banner´s - Administrador</div></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td width="32%"><div align="right">Data </div></td> <td width="68%"><input name="data" type="text" id="data" value="<? echo $data; ?>" size="10" maxlength="10" readonly="readonly"> Horário <input name="horario" type="text" id="horario" onKeyPress="formatar(this,'##:##:##');" value="<? echo $hora; ?>" size="8" maxlength="8" readonly="readonly"></td> </tr> <tr> <td><div align="right">Responsável pelo cadastro </div></td> <td><input name="responsavel" type="text" id="responsavel" value="<? echo $_SESSION[nome]; ?>" size="50" readonly="readonly"></td> </tr> <tr> <td><div align="right">Descrição </div></td> <td><input name="descricao" id="descricao3" size="50" /></td> </tr> <tr> <td colspan="2"><div align="center" class="style1 style1">Atenção, extensão válida para envio - "swf"</div></td> </tr> <tr> <td><div align="right">Imagem Banner </div></td> <td><input name="img_banner" type="file" id="img_banner" size="40"></td> </tr> <tr> <td><div align="right"> Banner Ativo </div></td> <td><p> <label> <input name="ativo" type="radio" id="promocao_0" value="1" checked> Sim</label> <label> <input name="promocao" type="radio" id="promocao_1" value="0"> Não</label> <br> </p></td> </tr> <tr> <td><div align="right"></div></td> <td><p> <label></label> </p></td> </tr> <tr> <td colspan="2"><div align="center"> <input type="submit" name="btn_cadastro" value="Cadastrar" id="btn_cadastro"> <input type="reset" name="btn_limpar" value="Limpar" id="btn_limpar"></div></td> </tr> <tr> <td><input type="hidden" name="inserte" value="formArquivo" /></td> <td> </td> </tr> <tr> <td colspan="2"><div align="center"><a href="r_logout.php">Encerrar Sessão</a></div></td> </tr> </table></td> </tr> </table> </form></body></html> e o processo: <? header("Content-type: text/html; charset=iso-8859-1"); error_reporting(E_ALL); require_once("conexao.php"); $erro = $config = array(); // Transforma a data para o formato 0000/00/00 para gravação no bd $dat = explode("-",$data); $dia = $dat[0]; $mes = $dat[1]; $ano = $dat[2]; $data1 = $ano."-".$mes."-".$dia; if ( $acao == "salvar" ) { // verifica se o nome passado pelo formulário já existe no banco de dados mysql_select_db($db, $conn); $query_sql = "SELECT descricao FROM roma_banner WHERE descricao = '$descricao'"; $sql = mysql_query($query_sql, $conn) or die(mysql_error()); $row_sql = mysql_fetch_assoc($sql); $linhas = mysql_num_rows($sql); if ( $linhas > 0 ){ ?> <script > window.alert("Atenção, o banner <? echo $descricao ?>\njá está cadastrado."); window.location.href="r_cad_banners.php"; </script> <? } $erro = $config = array(); // Prepara a variável do arquivo $arquivo = isset($_FILES["img_banner"]) ? $_FILES["img_banner"] : FALSE; // Tamanho máximo do arquivo (em bytes) $config["tamanho"] = 819200; // Formulário postado, executa as ações if($arquivo) { // Verifica se o mime-type do arquivo é de imagem[b] if(!eregi("^image\/(swf)$", $arquivo["type"])) { $erro[] = "Arquivo para Imagem do Produto é um formato não permitido. <br> A imagem deve ser um swf. Envie outro arquivo"; }[/b] else { // Verifica tamanho do arquivo if($arquivo["size"] > $config["tamanho"]) { $erro[] = "Arquivo para Imagem do Produto é tamanho muito grande. <br> A Imagem deve ser de no maximo 800 kb. Envie outro arquivo"; } } // Imprime as mensagens de erro if(sizeof($erro)) { foreach($erro as $err) { echo "<br>"; echo "<br>"; echo "<br>"; echo "<div align='center'>$err</div>"; } echo "<br>"; echo "<div align='center'><a href=\"r_cad_produtos1.php\">Voltar</a></div>"; } // Verificação de dados OK, nenhum erro ocorrido, executa então o upload... else { // Pega extensão do arquivo preg_match("/\.(swf|){1}$/i", $arquivo["name"], $ext); if ((isset($_POST["inserte"])) && ($_POST["inserte"] == "formArquivo")) { $arquivo = $_FILES["img_banner"]; $arquivo_nome = $arquivo["name"]; $img = '/swf/'.$arquivo_nome; $sql = "insert into roma_banner ( data, horario, responsavel, descricao, img_banner, ativo ) values ('$data1', '$horario', '$responsavel', '$descricao', '$img', '$ativo' )"; // Move o arquivo para o diretório especificado set_time_limit(0); $diretorio = "swf"; $id_arquivo = "img_banner"; $nome_arquivo = $_FILES[$id_arquivo]["name"]; $arquivo_temporario = $_FILES[$id_arquivo]["tmp_name"]; move_uploaded_file($arquivo_temporario, "$diretorio/$nome_arquivo"); $sql = mysql_query($sql); ?> <script > window.alert("O banner foi cadastrado com sucesso."); window.location.href="r_cad_banners.php"; </script> <? } } } }?> Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Barral 1 Denunciar post Postado Setembro 28, 2007 Porque você não dá um split() no $_FILES["img_banner"]["name"] e verifica se o array [1] é swf /* pega o nome do arquivo 'uploadado' ex: banner.swf */$nome = $_FILES["img_banner"]["name"];/* divide em arrays onde tiver ponto */$verifica = split("." , $nome);/* só pra garantir q a extensão será SWF coloca o ponteiro do array no ultimo indiceevita que algum espertinho tente upar um banner.swf.exe por exemplo */$verificado = end($verifica);if($verificado == "swf" OR $verificado == "SWF"){echo "extensão aceita";}else {echo "extensão nao aceita";} Acho que é isso.. Abraço. Sem Mais[]'.. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Setembro 28, 2007 não faça verificação do tipo de arquivo baseando-se pela nomenclaturaverifique o valor do índice "type"no seu caso:$tipo_mime = $_FILES["img_banner"]["type"]; Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Barral 1 Denunciar post Postado Setembro 28, 2007 Desculpe, esqueci do type... http://forum.imasters.com.br/public/style_emoticons/default/cry.gif dai só tinha lembrado do name e tmp_name... Mas essa seria a solução mesmo.. Abraço. Sem Mais[]'.. Compartilhar este post Link para o post Compartilhar em outros sites
valtinho 0 Denunciar post Postado Setembro 28, 2007 Olá hinom, você poderia me ajudar?como ficaria essa verificação no script que passei?Se puder me ajudar agradeço...... fica na paz Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Barral 1 Denunciar post Postado Setembro 28, 2007 Suponho que seja da mesma maneira que eu tentei fazer mas com o type // Verifica se o mime-type do arquivo é de imagem $tipo_mime = $_FILES["img_banner"]["type"]; if($tipo_mime != "image/swf") { $erro[] = "Arquivo para Imagem do Produto é um formato não permitido. <br> A imagem deve ser um swf. Envie outro arquivo"; } Em negrito as modificações. Espero ter ajudado. Abraço. Sem Mais[]'.. Compartilhar este post Link para o post Compartilhar em outros sites
valtinho 0 Denunciar post Postado Setembro 28, 2007 Olá, sei que estou enchendo com esse script...... mas agora ele está dizendo que "Arquivo para Imagem do Produto é um formato não permitido. A imagem deve ser um swf. Envie outro arquivo" mesmo com o esquema que o Leandro Barral e hinom me passaram. // Verifica se o mime-type do arquivo é de imagem $tipo_mime = $_FILES["img_banner"]["type"]; if($tipo_mime != "image/swf") { $erro[] = "Arquivo para Imagem do Produto é um formato não permitido. <br> A imagem deve ser um swf. Envie outro arquivo"; }Um dia pensei que conseguiria fazer isso funcionar...... não consigo fazer isso funcionar.Fiquem na paz. Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Barral 1 Denunciar post Postado Setembro 28, 2007 Acho que achei! tenta assim: // Verifica se o mime-type do arquivo é de imagem$tipo_mime = $_FILES["img_banner"]["type"];if($tipo_mime != "application/x-shockwave-flash"){$erro[] = "Arquivo para Imagem do Produto é um formato não permitido. <br>A imagem deve ser um swf. Envie outro arquivo";} P.S.: Agora quem quer ver isso funcionando sou eu.. ^^' Abraço. Sem Mais[]'.. Compartilhar este post Link para o post Compartilhar em outros sites
valtinho 0 Denunciar post Postado Setembro 28, 2007 Bingo, bingo, bingoFuncionou...... Leandro Barral muito obrigado por ter me ajudado.Valeu e fica na paz Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Barral 1 Denunciar post Postado Setembro 28, 2007 Nada, estamos aqui pra isso.Boa sorte.Abraço.Sem Mais[]'.. Compartilhar este post Link para o post Compartilhar em outros sites
Alexandre_Lopes 0 Denunciar post Postado Setembro 30, 2007 E aew Galera... Tudo bem...Só pra emplementar o Código de vcs eu uso esse script para verificar o ARQUIVO:$File_Name = $_FILES['Documento']['name'];// Checa o mime-type do Arquivoif(!eregi('(doc|txt|pdf|xls|htm|html|rtf|gif|jpeg|jpg|png|tiff|swf)',$File_Name)){ // Avisa se o Arquivo é inválido echo 'Documento e/ou Imagem em formato Inválido!'; echo 'O Documento deve ser no formato: doc, txt, pdf, xls, htm, html e/ou rtf.'; echo 'A Imagem deve ser no formato: gif, jpeg, jpg, png, tiff e/ou swf.';}else{ echo "Arquivo aceito.";}Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Setembro 30, 2007 fala Alexandre!valeu pela contribuição, mas tem um erro $File_Name = $_FILES['Documento']['name']; if(!eregi('(doc|txt|pdf|xls|htm|html|rtf|gif|jpeg|jpg|png|tiff|swf)',$File_Name))desse modo o script verifica a nomenclatura e não o content-type.isso é uma falha grave que pode implicar na segurança de um sistema Compartilhar este post Link para o post Compartilhar em outros sites