Ir para conteúdo

POWERED BY:

Arquivado

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

Jah'rakal

[Resolvido] Problema com repetição de classe

Recommended Posts

recebi isto:

 

 

Extensão do arquivo não permitida!

Por favor, repita o processo!

 

*modifiquei um pouco a estrutura finalk do code,nao adiantou de nada, mas da uma olhada:

 

<?php

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

require('../../../conecta.php');

define('DIR_UPLOAD','../dpos/'.$_POST['dpo'].'/'.$_GET['tipo'].'/'); // local onde vai cair o arquivo

class upload{
	public $tipo;
    public $tipos;
   	public $nome;
	public $tamanho;
	public $arquivo;
	
	/**
	* Construtor chama o metodo responsável por
	* tratar e fazer o envio
	*
	* @param array $arquivo
	* @param string $pasta
	* @param array $tipos
	*/
	
	function __construct($arquivo, $pasta, $tipos){
		self::tratamento($arquivo,$tipos,$pasta);
	}
	
	/*
	* Metodo reponsável por tratar e enviar o arquivo
	*
	* @param array $arquivo
	* @param string $pasta
	* @param array $tipos
	*/
	
	function tratamento($arquivo,$tipos,$pasta){
		if(isset($arquivo)){
			#armazena o nome original do arquivo
			$this->nome = $arquivo['name'];
			
			#gera novo nome para o arquivo
			$this->novoNome = date("dmYHis") . strtolower($this->nome);
			
			#Pega extensão do arquivo
			$this->tipo = strrchr($arquivo['name'],".");
			
			if(in_array($this->tipo,$tipos)){
				#tenta enviar o arquivo
				if(move_uploaded_file($arquivo['tmp_name'], $pasta . $this->novoNome)){
					#pega o tamanho do arquivo
					$this->tamanho = number_format($arquivo['size']/1024000, 2) . "MB";
					$this->fullpath = 'dpos/'.$_POST['dpo'].'/'.$_GET['tipo'].'/'.$this->novoNome;
				}else{
					echo 'Erro ao carregar a imagem!';
					exit;
				}
			}else{
				echo '<br><br>Extensão do arquivo não permitida!<br>';
				echo '<a href="javascript:window.history.go(-1);">Por favor, repita o processo!</a>';
				exit;
			}			
		}else{
			include('inserir.php');// Form onde ta o campo file
		}
	}
}

/**
* UTILIZAÇÃO DA CLASSE
*/

#array com as extensões permitidas
$extPermitidas = array(".bmp",".jpg",".JPG",".jpeg",".png",".gif");

#instancia a classe passando os parametros necessários
if(isset($_FILES['thumb'])){
	$objUpload1 = new upload($_FILES['thumb'],DIR_UPLOAD,$extPermitidas);
	$path_thumb1 = $objUpload1->fullpath;
}else{
	$path_thumb1 = "";
}

if(isset($_FILES['foto1'])){
	$objUpload2 = new upload($_FILES['foto1'],DIR_UPLOAD,$extPermitidas);
	$path_thumb2 = $objUpload2->fullpath;
}else{
	$path_thumb2 = "";
}

if(isset($_FILES['foto2'])){
	$objUpload3 = new upload($_FILES['foto2'],DIR_UPLOAD,$extPermitidas);
	$path_thumb3 = $objUpload3->fullpath;
}else{
	$path_thumb3 = "";
}

if(isset($_FILES['foto3'])){
	$objUpload4 = new upload($_FILES['foto3'],DIR_UPLOAD,$extPermitidas);
	$path_thumb4 = $objUpload4->fullpath;
}else{
	$path_thumb4 = "";
}	

$data = date('Y/m/d');

$sql = "INSERT INTO produtos (nome, valor, dpo, tipo, define, esp, qtd, atual, thumb, foto1, foto2, foto3)
	VALUES
	('".$_POST['nome']."','".$_POST['valor']."','".$_POST['dpo']."','".$_GET['tipo']."','".$_GET['define']."','".$_POST['esp']."','".$_POST['qtd']."','".$data."','".$path_thumb1."','".$path_thumb2."','".$path_thumb3."','".$path_thumb4."')";

if(mysql_query($sql)){
	echo "<script type=\"text/javascript\">
		  	alert(\"Inserido.\");
			window.location = 'controle.php';
		  </script>\n";
}else {
	echo"<script type=\"text/javascript\">
	     	alert(\"Houve um erro durante a inserção. Tente novamente!\");
			window.location = 'inserir.php';
	     </script>\n";
}

mysql_close($conn);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não pode... tem coisa errada... Altere esta parte do código:

 

#Pega extensão do arquivo
$this->tipo = strrchr($arquivo['name'],".");
echo 'A $this->tipo vale ',$this->tipo,'<br/><pre>O array tipos vale <br/>';
print_r($tipos);
exit;                   
if(in_array($this->tipo,$tipos)){
Poste aqui o que aparecer.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

mano...

desculpe a demora...

 

mas....

 

o resultado foi este:

 

A $this->tipo vale .jpg

 

O array tipos vale

Array

(

[0] => .bmp

[1] => .jpg

[2] => .JPG

[3] => .jpeg

[4] => .png

[5] => .gif

)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, muito estranho...

<?php
class Tipo
{
	public $tipo;
	
	public function __construct($tipo, $tipos)
	{	                        
		$this->tipo = strrchr($tipo,'.');
		if(in_array($this->tipo,$tipos))
		{
			echo 'Funcionou';
		}
		else
		{
			echo '<br><br>Extensão do arquivo não permitida!<br>';
			echo '<a href="javascript:window.history.go(-1);">Por favor, repita o processo!</a>';
			exit;
		}       
	}
}

$tipos = array('.bmp','.jpg','.JPG','.jpeg','.png','.gif');
$array = array('arquivo.jpg','outro.bmp','teste.exe');
foreach ($array as $valor)
{
	$objeto = new Tipo($valor, $tipos);
}

Este código, ao ser executado aqui, imprimiu na tela a mensagem "FuncionouFuncionou" e na terceira iteração, como a extensão não é permitida (.exe), ele exibiu a outra mensagem. Não consegui entender o que tem de errado. Apenas troquei as aspas duplas por simples, mas não sei se tem alguma coisa a ver.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara...

eu acho que descobri o erro, mas nao to sabendo corrigir..

tipo...

eu tenho 4 entradas de files

 

se eu nao insiro as quatro, o ultimo arquivo recebe um date() (que eu toh usando para diferenciaçao de arquivos)

 

como esse ultimo arquivo recebe esse date() no final do nome, na hra d pegar a extensao, o que vem no fim do ponto eh, por exemplo, .jpg02022010131725 (que eh a extensao + o date("dmYHis"))

 

com isso, eu recebo o aviso de extensao nao permitida...

 

o problema agora eh que eu nao sei o pq de esse date() ta sendo incluido, e nem como exclui-lo

 

da uma olhada em como ficou o codigo:

 

<?php

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

require('../../../conecta.php');

define('DIR_UPLOAD','../dpos/'.$_POST['dpo'].'/'.$_GET['tipo'].'/');
$extPermitidas = array(".bmp",".jpg",".JPG",".jpeg",".png",".gif");

#----------------------------------------------------------------------------------------------------------

class upload{
	public $tipo;
    public $tipos;
   	public $nome;
	public $tamanho;
	public $arquivo;
	
	function __construct($arquivo, $pasta, $tipos){
		self::tratamento($arquivo,$tipos,$pasta);
	}
	
	function tratamento($arquivo,$tipos,$pasta){
		if(isset($arquivo) && isset($tipos) && isset($pasta)){
			if(isset($arquivo['name'])){
				$this->nome = $arquivo['name'];
				echo $this->nome."\n";
				
				$this->novoNome = date("dmYHis") . $this->nome;
				echo $this->novoNome."\n";
				
				$this->tipo = strrchr($arquivo['name'],".");
				echo $this->tipo."\n";
				
				if(in_array($this->tipo,$tipos)){
					if(move_uploaded_file($arquivo["tmp_name"], $pasta . $this->novoNome)){						
						echo $this->fullpath = 'dpos/'.$_POST['dpo'].'/'.$_GET['tipo'].'/'.$this->novoNome;						
					}else{
						echo "Houve um erro durante o carregamento da imagem!";
						exit;
					}
				}else{
					echo "Extensão do arquivo não permitida!\n";
					echo "<a href='javascript:window.history.go(-1);'>Por favor, repita o processo!</a>";
					exit;
				}
			}else{
				$this->fullpath = "";
			}
		}else{
			$this->fullpath = "";
		}
	}
}

#----------------------------------------------------------------------------------------------------------

$objUpload1 = new upload($_FILES['thumb'],DIR_UPLOAD,$extPermitidas);
$path_thumb1 = $objUpload1->fullpath;

$objUpload2 = new upload($_FILES['foto1'],DIR_UPLOAD,$extPermitidas);
$path_thumb2 = $objUpload2->fullpath;

$objUpload3 = new upload($_FILES['foto2'],DIR_UPLOAD,$extPermitidas);
$path_thumb3 = $objUpload3->fullpath;

$objUpload4 = new upload($_FILES['foto3'],DIR_UPLOAD,$extPermitidas);
$path_thumb4 = $objUpload4->fullpath;


#----------------------------------------------------------------------------------------------------------

$data = date('Y/m/d');

$sql = "INSERT INTO produtos (nome, valor, dpo, tipo, define, esp, qtd, atual, thumb, foto1, foto2, foto3)
	VALUES
	('".$_POST['nome']."','".$_POST['valor']."','".$_POST['dpo']."','".$_GET['tipo']."','".$_GET['define']."','".$_POST['esp']."','".$_POST['qtd']."','".$data."','".$path_thumb1."','".$path_thumb2."','".$path_thumb3."','".$path_thumb4."')";

if(mysql_query($sql)){
	echo "<script type=\"text/javascript\">
		  	alert(\"Inserido.\");
			window.location = 'controle.php';
		  </script>\n";
}else {
	echo"<script type=\"text/javascript\">
	     	alert(\"Houve um erro durante a inserção. Tente novamente!\");
			window.location = 'inserir.php';
	     </script>\n";
}

mysql_close($conn);

?>

vlws!

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade, o q eh exibido com o codigo que eu passei acima eh:

 

2009121185330281_SULAMITA_CAT2010_SIENA_01.jpg 020220101343502009121185330281_SULAMITA_CAT2010_SIENA_01.jpg .jpg dpos/mesa/toalha/020220101343502009121185330281_SULAMITA_CAT2010_SIENA_01.jpg 02022010134350 Extensão do arquivo não permitida! Por favor, repita o processo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

mano....

te agradeço a força que voce me deu pra resolver oS problemaS que eu tinha no meu codigo....

eu consegui resolver o ultimo problema....

o lance era que, mesmo sem um proximo arquivo, apos a inserção de um, era iniciada a inserçao de outro

nao existindo esse OUTRO arquivo, mas existindo a date(), era registrado o nome do arquivo como os numeros vindos da date()....o que provocava o erro de extensao....

o problema passou a ser o bloqueio do inicio de uma nova inserçao (ficou feio isso huaeahuehau)

pra resolver o problema eu analisei o tamanho do nome do arquivo que vinha:

 

...
if(strlen($arquivo['name']) > 5){
...

Coloquei 5 pq sao no minimo 4 caracteres do tipo do arquivo, e.g. .jpg, e ao menos um caracter de nome do arquivo

 

(ainda nao tive tempo de ler as instruçoes, mas acho q eh você qm fecha o topico neh?)

 

ai vai o codigo, se você animar de dar uma olhada:

 

<?php

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

require('../../../conecta.php');

define('DIR_UPLOAD','../dpos/'.$_POST['dpo'].'/'.$_GET['tipo'].'/');
$extPermitidas = array(".bmp",".jpg",".JPG",".jpeg",".png",".gif");

#----------------------------------------------------------------------------------------------------------

class upload{
        public $tipo;
   		public $tipos;
        public $nome;
        public $tamanho;
        public $arquivo;
        
        function __construct($arquivo, $pasta, $tipos){
                self::tratamento($arquivo,$tipos,$pasta);
        }
        
        function tratamento($arquivo,$tipos,$pasta){
                if(strlen($arquivo['name']) > 5){
					$this->nome = $arquivo['name'];
					$this->novoNome = date("dmYHis") . $this->nome;
					$this->tipo = strrchr($arquivo['name'],".");
					
					if(in_array($this->tipo,$tipos)){
						if(move_uploaded_file($arquivo["tmp_name"], $pasta . $this->novoNome)){
							$this->fullpath = 'dpos/'.$_POST['dpo'].'/'.$_GET['tipo'].'/'.$this->novoNome;
						}else{
							echo "Houve um erro durante o carregamento da imagem!";
							exit;
						}
					}else{
						echo "Extensão do arquivo não permitida!\n";
						echo "<a href='javascript:window.history.go(-1);'>Por favor, repita o processo!</a>";
						exit;
					}
				}else{					
					$this->fullpath = "";
				}
		}		
}

#----------------------------------------------------------------------------------------------------------

$objUpload1 = new upload($_FILES['thumb'],DIR_UPLOAD,$extPermitidas);
$path_thumb1 = $objUpload1->fullpath;

$objUpload2 = new upload($_FILES['foto1'],DIR_UPLOAD,$extPermitidas);
$path_thumb2 = $objUpload2->fullpath;

$objUpload3 = new upload($_FILES['foto2'],DIR_UPLOAD,$extPermitidas);
$path_thumb3 = $objUpload3->fullpath;

$objUpload4 = new upload($_FILES['foto3'],DIR_UPLOAD,$extPermitidas);
$path_thumb4 = $objUpload4->fullpath;


#----------------------------------------------------------------------------------------------------------

$data = date('Y/m/d');

$sql = "INSERT INTO produtos (nome, valor, dpo, tipo, define, esp, qtd, atual, thumb, foto1, foto2, foto3)
	VALUES
	('".$_POST['nome']."','".$_POST['valor']."','".$_POST['dpo']."','".$_GET['tipo']."','".$_GET['define']."','".$_POST['esp']."','".$_POST['qtd']."','".$data."','".$path_thumb1."','".$path_thumb2."','".$path_thumb3."','".$path_thumb4."')";

if(mysql_query($sql)){
        echo "<script type=\"text/javascript\">
                        alert(\"Inserido.\");
                        window.location = 'controle.php';
                  </script>\n";
}else {
        echo"<script type=\"text/javascript\">
                alert(\"Houve um erro durante a inserção. Tente novamente!\");
                        window.location = 'inserir.php';
             </script>\n";
}

mysql_close($conn);

?>

 

Vlws mano, ate a proxima =D!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa. Que bom que resolveu. Os tópicos não são fechados. Apenas adicionamos a palavra Resolvido ao título. Só os moderadores fazem isto.

 

Carlos Eduardo

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.