Ir para conteúdo

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 landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
×

Informação importante

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