Ir para conteúdo

POWERED BY:

Arquivado

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

Miguel Rocha1

Upload codigo

Recommended Posts

if(isset($_POST['sub'])){
$imagem = $_FILES["img"];	
foreach($imagem["error"] as $key => $error){
//Pega a extensao
$ext = strtolower(end(explode('.', $imagem['name'][$key])));
//Verifica se existe imagem
if(empty($imagem['name'][$key])){
      $erro_foto[1] = "insere foto";
}elseif(!preg_match( '/^image\/(jpeg|gif|png|jpg)$/', $imagem['type'][$key]) ){

$erro_foto[2] = "Por favor, envie arquivos com as seguintes extensões: 
jpg, png ou gif";
}

if (sizeof($erro_foto) == 0) {	
if($ext == "jpg" || $ext == "jpeg"){	
   $typeheaderimagem = "image/jpg";
   $img = @imagecreatefromjpeg($imagem['tmp_name'][$key]);
}elseif ($ext == "gif"){
   $typeheaderimagem = "image/gif";
   $img = @imagecreatefromgif($imagem['tmp_name'][$key]);
}elseif ($ext == "png"){
$typeheaderimagem = "image/png";
$img = @imagecreatefrompng($imagem['tmp_name'][$key]);
}
if (!$img) {
  echo "erro";  
}else{

$larguranova = 650;
$alturanova = 410;
$pasta = 'imagens/';

$color_fund = imageistruecolor($img);
//Verifica se a imagem tem fundo com cor ou transparente	
if($color_fund){
   $nova_imagem  = imagecreatetruecolor($larguranova, $alturanova);
   imagealphablending($nova_imagem, false);
   imagesavealpha  ($nova_imagem, true);
}else{
   $nova_imagem  = imagecreate($larguranova, $alturanova);
   imagealphablending($nova_imagem, false);
   $transparent = imagecolorallocatealpha($nova_imagem, 0, 0, 0, 127);
   imagefill($nova_imagem, 0, 0, $transparent);
   imagesavealpha($nova_imagem,true);
   imagealphablending($nova_imagem, true);
}		 
//Obtem a largura e a altura da imagem atual
$largura_original = imagesx($img);
$altura_original = imagesy($img);
//Define o logotipo para a marca de agua
$marca = imagecreatefrompng ('logo.png');
//Define o local onde vai ficar a marca de agua
$marcax = imagesx($marca);
$marcay = imagesy($marca);
//obtem a largura e altura nova da imagem
$localx = ($larguranova - $marcax) - 5;
$localy = ($alturanova - $marcay) - 5;
//Redemensiona a imagem para as novas medidas
imagecopyresampled($nova_imagem, $img, 0, 0, 0, 0, $larguranova, $alturanova, $largura_original,  $altura_original);
//Insere a marca de agua na foto
imagecopymerge($nova_imagem, $marca, $localx, $localy, 0, 0, $marcax, $marcay, 80); 

$nomeimg = md5(uniqid(time())).".".$ext;

if($ext == "jpg" || $ext == "jpeg"){	
 imagejpeg($nova_imagem,  $pasta.$nomeimg);
}elseif ($ext == "gif"){
  imagegif($nova_imagem, $pasta.$nomeimg);
}elseif ($ext == "png"){
  imagepng($nova_imagem, $pasta.$nomeimg);
}
imagedestroy($nova_imagem);
imagedestroy($img);
echo "sucesso";
 } 
}
} 
if (sizeof($erro_foto) != 0) {
echo'<div class="erro">';
foreach ($erro_foto as $err_video) {
	echo "<b>" .$err_video . "</b><br />";
}
echo'</div>';
 }
}

 

axam este codigo seguro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Defina "seguro"...

Para começar, retire todos esses '@'. Suprimir erros é a mesma coisa que varrer a sujeira para de baixo do tapete. Erros devem ser manipulados, não suprimidos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Henrique Barcelos, esse '@' e para não mostrar os erros ao usuário, eu antes de por, verifiquei se havia erros, e só mostra erro, se a imagem não for valida.

seguro = isto e para um site que estou a montar, que vai ser upload de varias imagens, vai recuperar as imagens, redimensionar, e adicionar a marca de agua, e por fim guarda na pasta, o que eu gostava de saber e se meu código esta preparado para isso, sem trazer problemas.

e que podia melhorar nele para ficar mais seguro e mais rápido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Henrique Barcelos, esse '@' e para não mostrar os erros ao usuário, eu antes de por, verifiquei se havia erros

 

Certo, então tire todos os @ e adicione

error_reporting ( E_ALL ) ;
ini_set ( 'display_errors' , 'On' ) ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quer um código rápido, para sistema de upload de imagens, então não faça redimensionamento da imagem no servidor, faça no lado cliente. Imagine o usuário enviando 100 imagens de 4MB cada, veja o quanto vai demorar para enviar cada uma delas, e depois redimensionar e aplicar logomarca.

 

A idéia seria você fazer o trabalho de redimensionamento com Canvas (HTML5), assim a imagem chega no servidor com 300kb por exemplo, isto torna o upload super rápido! Aliás, eu estou estudando pra ver se faço esse esquema em meu sistema, só preciso de mais tempo para aplicar, fica a dica!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo guilherme, o html 5 pelo que ouço dizer, ainda nao e valido no internet explorer

 

Amigo andrey knupp, aparece os seguintes avisos

Notice: Undefined variable: erro_foto in /home/public_html/teste.php on line 19

sucesso

Notice: Undefined variable: erro_foto in /home/public_html/teste.php on line 83

Fora disso, esta tudo a funcionar.

Em sua opniao, axa que este codigo e bom para ser usado por varias pessoas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é válido mesmo, mais aí é questão de você conversar com seu cliente, e mostrar que seu produto usa uma nova tecnologia, que será um destaque dos demais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Notice: Undefined variable: erro_foto in /home/public_html/teste.php on line 19

sucesso

Notice: Undefined variable: erro_foto in /home/public_html/teste.php on line 83

Variável indefinida .. em algum momento não está sendo definido algum valor para essa variável ..

 

Em sua opniao, axa que este codigo e bom para ser usado por varias pessoas?

Sinceramente ? não !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quem sabe. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

a ideia que eu estou a ter, e fazer atraves de include, detectar a versao do navegador e consuante isso, faço um include, se for o chrome, opera, safari, mozilla mostro o upload em html5, se for o ie, mostro o upload normal.

 

amigo, se conheceres algum tutorial de html 5 de upload indica ai sff

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai no pai Google, que tem um site específico com tutorial HTML5!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim

<script type="text/javascript">

      var canUseReader = ( window.FileReader !== false ) || false ;

      console.log ( canUseReader ) ;

      if ( canUseReader ) {
             window.location.href = '' ;
      } else window.location.href = '' ;

</script>

 

Isso é pra testar se tem o FileReader do HTML5, o que você precisa ..

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

<script type="text/javascript">

      var canUseReader = ( window.FileReader !== false ) || false ;

      console.log ( canUseReader ) ;

      if (canUseReader) {
             window.location.href = '' ;
      } else {
	    window.location.href = 'construcao.php' ;
   }
</script>

 

Tentei assim, mas no ie nao faz nada amigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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