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, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
×

Informação importante

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