Ir para conteúdo

POWERED BY:

Arquivado

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

marcelojol

problemas com include

Recommended Posts

Bom dia pessoal, eu tenho uma página config.php onde esta sendo criado meus objetos e um desses objetos faz um controle de páginas através de uma QueryString, que esta funcionando normal, tenho outra página(onde fica meu topo, menu e rodapé) que logo no início eu dou um include na página config.php e na parte do conteúdo eu uso a função para QueryString.

 

Até aí tudo normal, mas o problema que quando eu tento usar alguma função relacionada a página config.php ela dá erro como se a página não existisse, e só pra complicar ainda mais se eu der um include para página config na página que está sendo chamada pela QueryString ela me dá um alerta que eu estou tentando redeclarar os objetos. E se eu apenas trocar a função da QueryString por um include simples os códigos passam a funcionar, mas se nessa função QueryString eu apagar tudo e deixar apenas um include e chamar essa função os códigos param de funcionar novamente.

 

config.php

<?php
	
	session_start();
	
	include '../library/class/conexao_bd.php';
	include '../library/class/usuario.php';
	include '../library/class/login.php';
	include '../library/class/anuncios.php';
	include '../library/class/pages.php';
	
	$bd = new BD('mysql.oruga.com.br','oruga','angelina','oruga');
	$usuario = new Usuario($bd);
	$anuncios = new Anuncios($bd);
	$login = new Login($usuario, $paginacao);
	$pages = new QueryString('home','principal');

	$bd = new BD('localhost','root','','oruga');
	$bd->connect();
	
	$count = $usuario->count();
	
	
	$dadosUsuarios = $usuario->listar();
?>

 

restrito.php

<?php
	include 'config.php';
	
	if(isset($_GET['acao']) && $_GET['acao'] == "sair"){
		unset($_SESSION['adminLogado']);
		session_destroy();
	}
	if(!isset($_SESSION['adminLogado']) || $_SESSION['adminLogado'] != 1)
		header("location:index.php");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Oruga - Administração</title>
<link href="css/default.css" type="text/css" rel="stylesheet" />
</head>

<body>
		
	<div id="header">
		<h1>Oruga</h1>
	</div>
	
	<div id="menu-extends">
		<div id="menu">
			<ul>
				<li><a href="?pagina=home&pasta=principal">home</a></li>
				<li><a href="#">colaboradores</a>
					<ul>
						<li><a href="#">novo</a></li>
					</ul>
				</li>
				<li><a href="?pagina=clientes&pasta=principal">clientes</a>
					<ul>
						<li><a href="#">atrasados</a></li>
						<li><a href="#">premium</a></li>
						<li><a href="#">outros</a></li>
						<li><a href="#">novo</a></li>
					</ul>
				</li>
				<li><a href="?acao=sair">sair</a></li>
			</ul>
		</div>
	</div>
		
		<?php
			@$pagina = $_GET['pagina'];
			@$pasta  = $_GET['pasta'];
			$pages->select($pagina, $pasta);
		?>
	
	<div id="footer">
	
	</div>

</body>
</html>

clientes.php

<?php
	if(!isset($_SESSION['adminLogado']) || $_SESSION['adminLogado'] != 1)
		header("location:../index.php");
?>

<div id="title-extends">
	<div id="title">
		<h3>Lista de todos os clientes</h3>
	</div>
</div>

<div id="content">
	<table width="100%" border="0" cellspacing="0" cellpadding="0">
		<tr>
		<th scope="col">Nome</th>
		<th scope="col">Sobrenome</th>
		<th scope="col">Sexo</th>
		<th scope="col">Data de nascimento</th>
		<th scope="col">Endereço</th>
		<th scope="col">CEP</th>
		<th scope="col">Bairro</th>
		<th scope="col">Cidade</th>
		<th scope="col">Estado</th>
		<th scope="col">Empresa</th>
		<th scope="col">Telefone</th>
		<th scope="col">Celular</th>
		<th scope="col">Telefone para contato</th>
		</tr>
		<?php
			for($i = 0; $i <= $usuario->count(); $i++){
				echo "<tr>
					<th scope=\"row\">".$dadosUsuarios[$i]['nome']."</th>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
					<td>".$dadosUsuarios[$i]['nome']."</td>
				</tr>";
			}
		?>
	</table>

</div>

page.php---->se vocês repararem dentro da function select eu inseri um comentário em todo o código e deixei apenas um include para testar.

<?php
   
	class QueryString{
	
		protected $_pagIni;
		protected $_pasta;
		
		public function __construct($pagIni, $pasta){
			$this->_pagIni = $pagIni.'.php';
			$this->_pasta  = $pasta;
		}
		
		public function select($pag = "", $pasta = ""){
			/* $pag = trim($pag);
			$pag = strip_tags($pag);
			
			if($pasta != ""){			
				if($pag == "")
					return include("$this->_pasta/$this->_pagIni");
				
				elseif(eregi("http|www|.php|.asp|.net|.gif|.exe|.jpg|./", $pag))
					return include("$this->_pasta/$this->_pagIni");
				
				elseif(!file_exists("$this->_pasta/$pag.php"))
					return include("$this->_pasta/$this->_pagIni");
				
				else
					return include("$pasta/$pag.php");
			}
			
			else
				return include("$this->_pasta/$this->_pagIni"); */
			
			return include("principal/clientes.php");
		}
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

[quote]
<?php
if(!isset($_SESSION['adminLogado']) || $_SESSION['adminLogado'] != 1)
header("location:../index.php");
?>
[quote]

Isso quer dizer que se eu abrir uma nova aba no meu navegador e criar uma session chamada "adminLogado" com valor de "1" eu estarei no sistema. Isso porque estao sendo verificado se esta setado ou é diferente de um, então o valor "1" torna essa condicional verdadeira.

 

Já que você esta usando tantas classes, porque não carrega-las automaticamente usando __autoload()?

 

Verifique os niveis onde as pastas estão.

Rever o código é bom.

 

Achei interessante esse seu modo de proteger o seu sistema.

Vamos ver....

 

Crie duas pastas distintas e na primeira escreva isto:

<?php
	session_start();
	
	// vou fazer uma verificação aqui para caso algum gaiato queira entrar aqui, que seja redirecionado.. hehehehehe
	if($_SESSION['uelio'] != 1){
		print "Cai fora!";
	} else {
		print "Pois não patrão?";
	}?>

 

Como eu disse "E se eu criar uma aba e criar as sessions e tals".

Mas como eu faria isso?

 

E na segunda, Eis ai a prática.

<?php
	// vamos ver se aquele cara é esperto mesmo.
	session_start();
	$_SESSION['uelio'] = 1;

	// Pronto criei minha session, a que ele tanto protegia e agora vou retornar para ver o resultado 
	// da ideia do cara.
?>

 

Retornando a primeira página, a página que tanto protegi. Vejo que ja estou dentro.

Acho que primeiro você tem que rever o seu codigo, porque isso aqui funciona de verdade.

 

Não é minha intenção de tentar algo que seja malefico a alguem. Mas fazendo assim, você esta querendo ter "Dor de Cabeça".

Reveja os seus codigos na calma. Não pense em fazer uma verificação besta, simples, moleza, mamão com açucar ou "Sei sim Senhor!".

 

Não é minha intenção ser maior que ninguem, mas achei que isso ai tava fácil demais para ser uma verificação de Admin.

 

<?php
	// declarando a minha classe bunitinha...
	class Uelio
	{
		function __construct(){
			print "Ai que emocionante, uma classe com o meu nome!<br />";
			print "Brigaduuuuuuu!";
		}	
	}

	// Deixa eu criar mais uma classe, ou extender a que ja fiz.
	class Uelio
	{
		function __construct(){
			print "Só quer ser!";
		}	
	}
	
	$uelio = new Uelio;
	
?>

 

Bom pelo que vimos, isso gerara um erro de redeclaração de classes, o que pode estar acontecendo é que ja tem alguma classe declarada e voce a criou em outro arquivo.

 

Por que eu acho que seja isso?. Porque você criar um arquivo chamado "page.php" e nele tem uma classe chamada "QueryString".

Será que são só essas ou tem mais?

 

Use __autoload(), que você não se atrapalha-ra com nome de classes.

Ao inves de varios "if's" use um switch ou um try/catch. Diversifique!

 

Não escore somente em if's, veja como funciona outros laços condicionais, criar excessões, logs e tals.

Bom esta ai.

 

- Identifique fragmentos de codigos com comentários. Em todo o seu codigo, não vi um sequer.

- Se abriu um if/else feche-o com sua respectiva chave, ou marque com comentarios.

 

Obrigado por esta duvida, tambem aprendi muito com ela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Uélio, tudo bem? Bom sobre as críticas eu conheço muito pouco sobre web e programação e todos esses códigos são baseados em conhecimento adquirido em video aulas e conteúdo encontrado na net. Não conheço outras formas de fazer uma segurança melhorada para esse caso, apesar de achar que não é tão simples assim se você não tiver o código em mãos sendo que não conheço nenhuma forma de conseguir visualizar esse código php sem entrar no ftp do site e baixar os arquivos.

 

Em todo caso essa não era a minha dúvida, mas agradeço pela colaboração.

 

Só complementando eu copiei o código da minha função QueryString e colei na página restrito.php onde eu estaria chamando ela, feito as modificações necessárias para o funcionamento, testei e funcionou perfeito. O que me leva a conclusão que se eu chamar essa função através de um objeto ela apresenta o erro que eu já havia explicado, mas realmente não tenho idéia porque isso acontece se alguém tiver alguma idéia eu agradeço.

 

Uélio postei a mensagem anterior antes de você ter respondido novamente, e infelizmente não é um erro de redeclaração como você pode ver no código, quanto as condicionais eu ainda estou aprendendo, mas agradeço a informação.

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.