Ir para conteúdo

POWERED BY:

Arquivado

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

oomaikoo

[ERRO] PHP Upload de Imagens no Servidor

Recommended Posts

Boa tarde Galera do iMasters, então estou com um pequeno problema que é o seguinte:

 

Tenho uma página de upload de arquivos integrada com um banco de dados MySQL (para salvar o nome da imagem, etc) porém quando eu clico no botão de selecionar Arquivo seleciono a foto, coloco o nome da foto aperto em cadastrar, aparece no banco de dados, porém, a imagem não é inserida no meu HOST, já olhei as configurações do host, upload está Online, Maxime File size está de acordo, segue o código do sistema

 

<div class="container">
<?php if( empty( $acao ) ) { ?>
<h1> Adicionar Projeto </h1><br>
<form name="add" action="projetos_add.php?acao=add" method="post" enctype="multipart/form-data">
<label>Nome do Projeto *</label>
<input type="text" name="projeto" /><br>
<label>Mostrar na Página Principal *</label>
<select name="destaque">
<option value="1">Sim</option>
<option value="0" selected="selected">Não</option>
</select><br>
<label>Imagem principal *</label>
<input name="foto" id="foto" type="file" /><br />
<input type="submit" name="submit" value="Cadastrar Projeto" style="width:150px;" />
<label><b>Titulo</b> da imagem principal <span>Será exibido quando o imóvel estiver em destaque</span></label>
<input type="text" name="foto_titulo" /><br />
</form>
<?php
} // fim da ação EMPTY
if( $acao == 'add')
{
extract( $_POST, EXTR_OVERWRITE); // extrai os dados do POST, transformando os indices em nomes. Sobrescreve as variaveis existentes, se houver
$sql1 = mysql_query("SELECT id FROM imoveis WHERE codigo='$codigo'");
$ttlCodigo = mysql_num_rows($sql1);
if( !empty( $codigo ) && $ttlCodigo > 0){
echo "<script language='JavaScript'>
alert('Código duplicado, informe outro código');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
///////////////// TRATA A IMAGEM
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
if( !empty( $arquivo['name'] ) ) {
if(!eregi("^image\/(pjpeg|jpeg|gif)$", $arquivo["type"])){
echo "<script language='JavaScript'>
alert('Arquivo em formato inválido! Formato aceito: JPG, JPEG e GIF');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Verifica tamanho do arquivo
if($arquivo["size"] > 8000000)
{
echo "<script language='JavaScript'>
alert('A imagem deve ser de no máximo 2020680 bytes');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
if($tamanhos[0] > 5000 || $tamanhos[0] < 200 || $tamanhos[1] > 5000 || $tamanhos[1] < 200 )
{
echo "<script language='JavaScript'>
alert('A dimensão da imagem não é permitido, tamanhao aceito: de 200 a 5000 pixels');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $arquivo["name"], $ext);
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];
$imagem_nome2 = md5(uniqid(time())) . "_gr." . $ext[1];
$imagem_dir = "/img_projetos" . $imagem_nome;
}else{
// se não for informado nenhuma imagem
echo "<script language='JavaScript'>
alert('A imagem do Projeto esta faltando');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
//////////////// FIM DA IMAGEM
$data = date( "d/m/Y" );
$hora = date( "H:i:s" );
$valor = str_replace('.', '', $valor);
$valor = str_replace(',', '.', $valor);
$sql = mysql_query("INSERT INTO projetos (projeto, foto, destaque, foto_titulo ) VALUES ('$projeto', '$imagem_nome','$destaque','$foto_titulo' )") or print(mysql_error());
$ultimo_id = mysql_insert_id();
echo '<center>Projeto cadastrado com sucesso<br /><br />
<p><a href="album_add.php?id='.$ultimo_id.'" target="_blank">GERENCIAR FOTOS</a></p>';
}
?>

Simplesmente não está aparecendo a imagem no meu Host, na Pasta /img_projetos

Compartilhar este post


Link para o post
Compartilhar em outros sites

então osmar eu não entendo muito de PHP, estou utilizando esse upload de imagem que peguei de um outro Script, no outro ele funciona perfeitamente mas no meu não

 

Não seria essa a parte de upload ?

 

$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
if( !empty( $arquivo['name'] ) ) {
if(!eregi("^image\/(pjpeg|jpeg|gif)$", $arquivo["type"])){
echo "<script language='JavaScript'>
alert('Arquivo em formato inválido! Formato aceito: JPG, JPEG e GIF');
window.location.href='javascript:history.go(-1)'
</script>";
exit;
}
o upload em si está num Form Action, que quando Clico no Submit chama o <form name="add" action="projetos_add.php?acao=add" method="post" enctype="multipart/form-data">

Compartilhar este post


Link para o post
Compartilhar em outros sites

o upload em si é feito automaticamente pelo PHP. O valor em ['tmp_name'] é caminho temporário (por isso o "tmp") do arquivo no servidor. Porém ele é temporário. Ou seja, você precisa mover o arquivo para um local definitivo. E pra isso usa-se move_uploaded_file

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi Beraldo, tem como você me mandar somente essa parte pronta, exclui o tmp_name e colocar o move_uploaded_file ? eu não sei direito a sintaxe do PHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque o Script ele ta pegando outras informações e jogando no Banco de Dados, se eu colocar o Form Action somente para o script de upload do arquivo ele não vai pegar os outros dados que vão para o Banco

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php 
        } // fim da ação EMPTY
        if( $acao == 'add') 
        { 
            extract( $_POST, EXTR_OVERWRITE); // extrai os dados do POST, transformando os indices em nomes. Sobrescreve as variaveis existentes, se houver          
                       
        	$sql1 = mysql_query("SELECT id FROM projetos WHERE codigo='$codigo'");
            $ttlCodigo = mysql_num_rows($sql1);
            
            if( !empty( $codigo ) && $ttlCodigo > 0){
    			echo "<script language='JavaScript'>
          		alert('Código duplicado, informe outro código');
          		window.location.href='javascript:history.go(-1)'
                </script>";
                exit;
                }
            
            ///////////////// TRATA A IMAGEM
                $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
                
            if( !empty( $arquivo['name'] ) ) {
                if(!eregi("^image\/(pjpeg|jpeg|gif)$", $arquivo["type"])){
            		echo "<script language='JavaScript'>
              		alert('Arquivo em formato inválido! Formato aceito: JPG, JPEG e GIF');
              		window.location.href='javascript:history.go(-1)'
             		 </script>";
            		 exit;
                }

                // Verifica tamanho do arquivo
                if($arquivo["size"] > 2020680)
                {
            		echo "<script language='JavaScript'>
              		alert('A imagem deve ser de no máximo 2020680 bytes');
              		window.location.href='javascript:history.go(-1)'
             		 </script>";
            		 exit;
                }
                
                // Para verificar as dimensões da imagem
                $tamanhos = getimagesize($arquivo["tmp_name"]);
                
                if($tamanhos[0] > 2000 || $tamanhos[0] < 200 || $tamanhos[1] > 2000 || $tamanhos[1] < 200 )
                {	
            		echo "<script language='JavaScript'>
              		alert('A dimensão da imagem não é permitido, tamanhao aceito: de 200 a 2000 pixels');
              		window.location.href='javascript:history.go(-1)'
             		 </script>";
            		 exit;
                }

                preg_match("/\.(gif|bmp|png|jpg|jpeg|swf){1}$/i", $arquivo["name"], $ext);

                $imagem_nome = md5(uniqid(time())) . "." . $ext[1];
        		$imagem_nome2 = md5(uniqid(time())) . "_gr." . $ext[1];

                $imagem_dir = "/img_projetos/" . $imagem_nome;
				move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
				
            }else{
                // se não for informado nenhuma imagem
            		echo "<script language='JavaScript'>
              		alert('A imagem do imóvel esta faltando');
              		window.location.href='javascript:history.go(-1)'
             		 </script>";
            		 exit;
            }
 

Coloquei Beraldo mas mesmo assim não está salvando no host :/ olha ai o código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Habilite todas as exibições de erro, como mostrado neste tópico e teste de novo.

 

Você verá uma mensagem dizendo que o caminho "/img_projetos" não existe

Isso por que "/" no começo significa raiz do sistema. Para referenciar diretórios relativos ao diretório atual, use "./":

 

 

$imagem_dir = "./img_projetos/" . $imagem_nome;

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Warning: include_once(menu.php): failed to open stream: No such file or directory in /home/caioande/public_html/login/projetos_add.php on line51

 

Warning: include_once(): Failed opening 'menu.php' for inclusion (include_path='.:/opt/alt/php54/usr/share/pear:/opt/alt/php54/usr/share/php') in /home/caioande/public_html/login/projetos_add.php on line 51

Notice: Undefined variable: codigo in/home/caioande/public_html/login/projetos_add.phpon line 91

 

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in/home/caioande/public_html/login/projetos_add.phpon line 92

 

Notice: Undefined index: arquivo in/home/caioande/public_html/login/projetos_add.phpon line 104

 

Deprecated: Function eregi() is deprecated in/home/caioande/public_html/login/projetos_add.phpon line 126

 

Notice: Undefined variable: valor in/home/caioande/public_html/login/projetos_add.phpon line 176

 

Deu todos esses erros Beraldo, os erros com o menu.php é besteira eu que tirei o menu, mas o resto eu não faço ideia, mas já estou procurando como concertar todos esses erros, muito obrigado pela ajuda Beraldo, vou ver se resolvendo todos esses erros ele consegue fazer o upload no Host, assim que eu conseguir, ou surgir outro problema eu falo aqui no tópico

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu explico quase todos esses erros neste artigo:

http://rberaldo.com.br/as-mensagens-de-erros-mais-comuns-do-php/

 

Dê uma olhada nele inteiro, que resolverá a maioria

 

Acho que só o do eregi() eu não abordo. Mas o correto é usar preg_match, pois funções ereg_* e eregi_* estão obsoletas (aliás, já foram removidas do PHP 7)

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.