carlim 0 Denunciar post Postado Outubro 16, 2004 Olá colegas, li um artigo sobre Upload de imagens com segurança, etenho tres pequenas duvidas.1ª Dúvida - É o seguinte, tenho um formulário para preenchimento dereceitas de comida.Acontece, que eu tenho na tabela alguns campos grandes como porexemplo ingredientes, modo de fazer, e percebi que quando por algummotivo, da um erro, seja no upload da foto, erro de server, ou atémesmo, um erro de máximo tamanho permitido da imagem, é gerado umecho ou print com a informação do erro, mas, quando eu volto atráspara corrigir o erro, ou escolher a nova foto, os outros campos(ingredientes, modo de fazer) se apagam, e perco toda a digitação,como resolver isso.2ª Dúvida - E se em um determinado cadastro, não for por foto, comofazer para o script nao vetar.3ª Dúvida - Como eu faria para que, com formularios de upload deimagem e textos, cadastrar um texto com por exemplo, 3 figuras emlugares aleatórios do browser.Lembrando que são varios formulários cada qual com suas imagens emlugares diferentes.Tipo informações sobre cidades.Desculpe pela pergunta infantil!Obrigado, Carlos Rocha.segue abaixo o script que estou usando.<? include("../../global/funcoes.php"); ?><? include("../global/autentica_cadastra_receitas.php"); ?><?$erro = $config = array();// Prepara a variável do arquivo$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;// Tamanho máximo do arquivo (em bytes)$config["tamanho"] = 100000;// Largura máxima (pixels)$config["largura"] = 850;// Altura máxima (pixels)$config["altura"] = 850;// Formulário postado... executa as açõesif($arquivo){// Verifica se o mime-type do arquivo é de imagemif(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])){$erro[] = "Arquivo em formato inválido! A imagem deve serjpg, jpeg,bmp, gif ou png. Envie outro arquivo";}else{// Verifica tamanho do arquivoif($arquivo["size"] > $config["tamanho"]){$erro[] = "Arquivo em tamanho muito grande!A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.Envie outro arquivo";}// Para verificar as dimensões da imagem$tamanhos = getimagesize($arquivo["tmp_name"]);// Verifica larguraif($tamanhos[0] > $config["largura"]){$erro[] = "Largura da imagem não deveultrapassar " . $config["largura"] . " pixels";}// Verifica alturaif($tamanhos[1] > $config["altura"]){$erro[] = "Altura da imagem não deveultrapassar " . $config["altura"] . " pixels";}}// Imprime as mensagens de erroif(sizeof($erro)){foreach($erro as $err){echo " - " . $err . "<BR>";}echo "<a href=\"cadastra_receita.php\">Fazer Upload de OutraImagem</a>";}// Verificação de dados OK, nenhum erro ocorrido, executa entãoo upload...else{// Pega extensão do arquivopreg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);// Gera um nome único para a imagem$imagem_nome = md5(uniqid(time())) . "." . $ext[1];// Caminho de onde a imagem ficará$imagem_dir = "../../upload/" . $imagem_nome;// Faz o upload da imagemif(move_uploaded_file($arquivo["tmp_name"], $imagem_dir)){if($link){$titulo = $_POST['titulo'];$ingredientes = $_POST['ingredientes'];$preparo = $_POST['preparo'];$dicas = $_POST['dicas'];$arquivos = $imagem_nome;$fonte = $_POST['fonte'];$sql = "INSERT INTO culinaria(titulo, ingredientes, preparo, dicas,imagem, fonte)VALUES('$titulo','$ingredientes','$preparo','$dicas','$arquivos','$fonte')";$consulta = mysql_query( $sql, $link);if($consulta){echo "<script>alert('Cadastro OK!');document.location='cadastra_receita.php'</script>"; }else {echo "<script>alert('Não foi possivel realizar o Teu cadastropor favor tente novamente...');document.location='cadastra_receita.php'</script>"; }}else {echo "<script>alert('Não foi possivel contatar bd...');document.location='cadastra_receita.php'</script>"; }}else{echo "<script>alert('Erro ao enviar seu arquivo!'</script>"; }/* Fechando a conexão */mysql_close($link);}}?><html><head></head><body><form action="cadastra_receita.php" method="POST"enctype="multipart/form-data"><P><center><H2>Formulário de cadastro de Receitas</H2></center><P><p><TABLE border=2 cellpadding=5 cellspacing=5 align=center width=100%><tr><td colspan=2><TABLE><TR><TD><font size=+1>Titulo:</font></TD><TD><INPUT TYPE="text" NAME="titulo" VALUE="" SIZE=59MAXLENGTH=100></TD></TR><TR><TR><TD><font size=+1>Ingredientes:</font></TD><TD><TEXTAREA NAME="ingredientes" cols="45"rows="20"></TEXTAREA></TD></TR><TR><TD><font size=+1>Preparo:</font></TD><TD><TEXTAREA NAME="preparo" cols="45"rows="30"></TEXTAREA></TD></TR><TR><TD><font size=+1>Dicas:</font></TD><TD><TEXTAREA NAME="dicas" cols="45"rows="05"></TEXTAREA></TD></TR><TR><TD><font size=+1>Foto:</font></TD><TD><INPUT TYPE="file" NAME="foto" SIZE=44 MAXLENGTH=100><INPUT TYPE="hidden" NAME="MAX_FILE_SIZE"value="30000"></TD></TR><TR><TD><font size=+1>Fonte:</font></TD><TD><INPUT TYPE="text" NAME="fonte" VALUE="" SIZE=59MAXLENGTH=100></TD></TR></TABLE></font></TD></tr></table><P><center><input type="button" value="Enviar" onClick="CriticaFormulario()"><input type="reset" value="Limpar Campos"></center></FORM></body></html> Compartilhar este post Link para o post Compartilhar em outros sites
Preceptor 3 Denunciar post Postado Outubro 16, 2004 Fala veinho Pra primeira pergunta: você pode fazer algo parecido com isto: PHP [/tr][tr]<? include "valida.class.php"; if($_GET[acao]=='validar') { $validanome=new Valida($_POST[nome],'Nome'); $validanome->TamMinimo(6); $validanome->TamMaximo(10); $erro.=$validanome->PegaErros(); $validaemail=new Valida($_POST[email],'E-mail'); $validaemail->TamMaximo(255); $validaemail->FormatoEmail(); $erro.=$validaemail->PegaErros(); $validadata=new Valida($_POST[data],'Data'); $validadata->TamMaximo(10); $validadata->TamMinimo(10); $validadata->FormatoData(); $erro.=$validadata->PegaErros(); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Documento sem título</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <p><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong><? echo $erro?></strong></font></p> <form name="form1" method="post" action="index.php?acao=validar"> <p><strong>Nome:</strong><br> <input name="nome" type="text" id="nome" value="<? if($erro) print $_POST[nome];?>"> </p> <p><strong>E-mail:</strong><br> <input name="email" type="text" id="email" value="<? if($erro) print $_POST;?>"> </p> <p><strong>Data:</strong><br> <input name="data" type="text" id="data" value="<? if($erro) print $_POST[data];?>"> (dd/mm/aaaa) </p> <p> <input type="submit" name="Submit" value="Enviar"> </p> </form> </body> </html> [/tr] 2º você pode verificar se a imagem foi passada if ($_FILES[imagem][tmp_name]): //faz negocio com a imagem //retorna variavel com nome da imagem $nome = $_FILES[arquivo][tmp_name]; else: nome = ''; endif; 3º juro q nao entendi a pergunta Compartilhar este post Link para o post Compartilhar em outros sites