Ir para conteúdo

POWERED BY:

Arquivado

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

.:: Pegasus ::.

Sistema de Login com Orientação a Objetos.

Recommended Posts

Olá pessoal.

 

Sexta feira... sem muita coisa pra fazer, resolvi criar um sistema de login com PHP Orientado a Objetos.

 

A maioria dos sistema que eu trabalho não são orientado a objetos, porém, sempre que posso eu estudo OO. seja lendo tutoriais, seja brincando com o Code Igniter ( framework ).

 

Hoje resolvi testar os meus conhecimentos e ver como ficaria um sistema de login orientado a objetos.

 

Vejam como ficou, deixei comentado pra não ficar reescrevendo as coisas por aqui.

 

Vejam.

tabela.sql

create table sistema.usuarios( 
	id int(2) not null AUTO_INCREMENT,
	nome varchar(40) not null,
	login varchar(20) not null,
	senha varchar(32) not null,
	primary key (id)
);

insert	into usuarios(id, nome, login, senha) 
		values ( null, 'Diego Felix', 'diego', '7c67e713a4b4139702de1a4fac672344');
		--senha = minhasenha

usuario.class.php

<?php
/*
|-------------------------------------------------------------------
|	CLASSE USUARIO
|-------------------------------------------------------------------
|	por			: Diego Felix
|	em			: 07/08/2009
|	versão		: 1.1
|	descricao	: Uma classe de login com criptografia md5 e 
|				  orientada a objetos.
|
*/
class Usuario
{	
	// dados do usuario, caso queiram adicionar mais funcoes como insercao, edicao e etc.
	var $usuario;
	var $senha;
	
	// dados do servidor mysql
	var $host	= 'localhost';
	var $user	= 'root';
	var $pw		= '';
	var $db		= 'sistema';
	
	function logar($login, $senha)
	{
		// conecta ao banco de dados
		$this->conecta_bd();
		
		$this->usuario = $login;
		$this->senha = md5($senha);
		
		/**
		 *	Ao invés de procurar o usuário e senha, eu busco apenas a senha, e comparo com o login.
		 *	Caso eu ache uma senha para determinado login, eu vou verificar quantos registros
		 *	foram encontrados.
		 */
		$select = "select senha from usuarios where login = '$login'";
		$query = mysql_query($select);
		$linhas = mysql_num_rows($query);
		$resultado = mysql_fetch_array($query);
		/** 
		 *	Aqui alem de comparar a senha digitada com a senha que foi encontrada no banco.
		 *	eu vejo tambem se foi encontrado apenas um registro.
		 *	isso significa que se o usuário digitar 'or 1 = '1-- no campo senha,
		 *	ele vai comparar: se senhadobanco == "'or 1 = '1--".
		 *	se ele digitou o sql injection tambem no campo usuario, o bd retornara mais de
		 * 	um resultado, portanto tambem nao ira passar na validacao.
		 *	a nao ser é claro que seu banco so tenha apenas um usuario =P
		 */
		if(($this->senha == $resultado['senha']) and ($linhas == 1)):
			// se estiver tudo correto.
			return true;
		else:
			// senao, retorna false.
			return false;
		endif;
	}
	
	function conecta_bd()
	{
		$conexao = mysql_connect($this->host, $this->user, $this->pw);
		mysql_select_db($this->db, $conexao);
	}
	
}

?>

index.php

<html>

<head>

	<title>Teste utilizando PHP Orientado a Objetos</title>

<style type="text/css">
body { font:13px/20px normal Trebuchet MS, Tahoma, Verdana, sans-serif; }
#login form fieldset input{
	display:block;
	margin-left:10px;
	margin-bottom:5px;
	padding:5px;
}
#login form fieldset label{
	clear:left;
	display:block;
	float:left;
	margin-top:3px;
	width:70px;
}
/* --- ***** --- */
</style>
	
</head>

<body>

<div id="geral">

	<div id="login">
	
		<form action="logar.php" method="post">
		
			<fieldset>
				
				<legend>Formulário de Login</legend>
				
				<label for="login">Login :</label>
				<input type="text" name="login" />
				
				<label for="senha">Senha :</label>
				<input type="password" name="senha" />
				
				<input type="submit" value="Logar" />
				
				
			</fieldset>
		
		</form>
	
	</div>

</div>

</body>

</html>

logar.php

<?php

require 'usuario.class.php';

$usuario = new Usuario();

$login = $_POST['login'];
$senha = $_POST['senha'];

if(!$usuario->logar($login, $senha)):
	echo "Erro ao se logar";
else:
	echo "Usuário logado com sucesso!";
endif;

?>

A princípio está assim, funcionando legal..

 

Uma característica que eu gostei nessa classe é que com ela fica mais complicado utilizar SQL Injection da forma que eu fiz.

 

Depois de terminada eu pensei também em criar uma class genérica para trabalhar com banco de dados, assim os códigos ficam mais reutilizáveis ainda.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal.

 

Sexta feira... sem muita coisa pra fazer, resolvi criar um sistema de login com PHP Orientado a Objetos.

 

A maioria dos sistema que eu trabalho não são orientado a objetos, porém, sempre que posso eu estudo OO. seja lendo tutoriais, seja brincando com o Code Igniter ( framework ).

 

Hoje resolvi testar os meus conhecimentos e ver como ficaria um sistema de login orientado a objetos.

 

Vejam como ficou, deixei comentado pra não ficar reescrevendo as coisas por aqui.

 

Bom, só 2 comentários:

 

Primeiro

 /*
 |-------------------------------------------------------------------
 |       CLASSE USUARIO
 |-------------------------------------------------------------------
 |       por                     : Diego Felix
 |       em                      : 07/08/2009
 |       versão          : 1.1
 |       descricao       : Uma classe de login com criptografia md5 e
 |                                 orientada a objetos.
 |
 */

Em vez desse tipo de cabeçalho utilize o phpDoc, é um formato já consolidado e facilmente compreendido e você não tem que perder tempo em formatar o cabeçalho, sem contar a possibilidade de você poder exportar a documentação da sua aplicação, segue o link: http://manual.phpdoc...yConverter/PHP/

 

Ficaria alguma coisa assim:

 /**
  * CLASSE USUARIO
  * <p>Uma classe de login com criptografia md5 e orientada a objetos.</p>
  * 
  * @author Diego Felix <emaildo.diego@dominio.com>
  * @version 1.1
  * @since 07/08/2009
  */
 class Usuario {
     /**
      * O nome do usuário
      * @var string
      */
     public $usuario;
     
     /**
      * A senha do usuário
      * @var string
      */
     public $senha;
 
     //...
 }

2. Ponto:

 

 // dados do usuario, caso queiram adicionar mais funcoes como insercao, edicao e etc.
 var $usuario;
 var $senha;
 
 // dados do servidor mysql
 var $host       = 'localhost';
 var $user       = 'root';
 var $pw         = '';
 var $db         = 'sistema';

Esse tipo de declaração var não se usa mais no php 5, no lugar disso você deve utilizar public, private ou protected, ficaria assim:

 

 public $usuarios;
 public $senha;
 //...

Tirando esses dois pontos, a única coisa que eu modificaria é a parte de conexão com o banco de dados que eu colocaria em uma classe separada, assim você não vai precisar ter uma conexão para cada classe que você criar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bacana a classe ^^ como o joao ja comento daria pra aplica algums conceitos do php5 nela e tambem fazer a conexao com o banco em uma classe separada ou utilizar Mysqli ou PDO.. mas valww a iniciativa man :D continue melhorando e postando .. sucesso pra ti

 

vo passa a classe pro Laboratorio de Scripts

 

valww =]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas dicas pessoal.

 

Já estou fazendo as modificações e assim que eu testar eu mudo o código, deixando mais interessante.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal..

 

Fiz algumas mudanças.. não sei se melhorou ou piorou..

 

Mas eu testei aqui e está funcionando legal.

 

Não mexi nos comentários porque não tive tempo de testar a o phpdoc, por isso deixei da forma que estava mesmo, mas valeu pela dica.

 

Não sei porque não consigo editar o tópico principal, então estou postando os códigos aqui..

 

Pode até ser legal deixar assim, uma vez que aquele está mais enxuto e compatível com php4, e esse aqui está mais complexo e funciona apenas com php5.

 

tabela.sql

create table sistema.usuarios( 
id int(2) not null AUTO_INCREMENT,
nome varchar(40) not null,
login varchar(20) not null,
senha varchar(32) not null,
primary key (id)
);

insert	into usuarios(id, nome, login, senha) 
	values	( null, 'Diego Felix', 'diego', '7c67e713a4b4139702de1a4fac672344'),
			( null, 'Outro Nome', 'outronome', '7c67e713a4b4139702de1a4fac672344' ),
			( null, 'Qualquer Noem', 'qualquernome', '7c67e713a4b4139702de1a4fac672344' ),
			( null, 'Other Name', 'othername', '7c67e713a4b4139702de1a4fac672344' );
	--senha = minhasenha

 

usuario.class.php

<?php
/*
|-------------------------------------------------------------------
|	CLASSE USUARIO
|-------------------------------------------------------------------
|	por		: Diego Felix
|	em		: 07/08/2009
|	versão		: 1.2
|	descricao	: Uma classe de login com criptografia md5 e 
|			  orientada a objetos.
|
*/
class Usuario
{	
// dados do usuario, caso queiram adicionar mais funcoes como insercao, edicao e etc.
public $usuario;
public $senha;

function logar($login, $senha)
{
	// conecta ao banco de dados

	$this->usuario = $login;
	$this->senha = md5($senha);

	/**
	 *	Ao invés de procurar o usuário e senha, eu busco apenas a senha, e comparo com o login.
	 *	Caso eu ache uma senha para determinado login, eu vou verificar quantos registros
	 *	foram encontrados.
	 */
	$select = "select senha from usuarios where login = '$login'";

	$db = new DB();

	$db->select($select);

	$linhas = $db->linhas();

	$resultado = $db->resultado_array();

	/** 
	 *	Aqui alem de comparar a senha digitada com a senha que foi encontrada no banco.
	 *	eu vejo tambem se foi encontrado apenas um registro.
	 *	isso significa que se o usuário digitar 'or 1 = '1-- no campo senha,
	 *	ele vai comparar: se senhadobanco == "'or 1 = '1--".
	 *	se ele digitou o sql injection tambem no campo usuario, o bd retornara mais de
	 * 	um resultado, portanto tambem nao ira passar na validacao.
	 *	a nao ser é claro que seu banco so tenha apenas um usuario =P
	 */
	if(($this->senha == $resultado[0]['senha']) and ($linhas == 1)):
		// se estiver tudo correto.
		return true;
	else:
		// senao, retorna false.
		return false;
	endif;
}

function busca_usuarios()
{ 
	// Busca todos os usuários do sistema.
	$db = new DB();

	$select = "select * from usuarios";

	$db->select($select);

	return $db->resultado_array();
}
}

?>

 

bd.class.php

<?php
/*
|-------------------------------------------------------------------------
|	CLASSE PARA CONEXÃO COM BANCO DE DADOS
|-------------------------------------------------------------------------
*/
class DB
{
// Dados do seu banco de dados
private $host		= 'localhost';
private $user		= 'root';
private $pw		= '';
private $database	= 'sistema';

// Dados da classe.
public $query;
public $mysqli;
public $result_array = array();

// metodo construtor
function DB()
{
	$this->mysqli = new mysqli($this->host, $this->user, $this->pw, $this->database);

	if (mysqli_connect_errno()) {
		printf("Falha na conexão com o banco de Dados.", mysqli_connect_error()); 
	}

}

function select($query)
{
	// funcao que executa a query.
	$this->query =  $this->mysqli->query($query);
}

function resultado_array()
{
	// Pego todos os resultados e jogo em uma array
	while($dados = $this->query->fetch_array())
	{
		$this->result_array[] = $dados;
	}
	// retorno a array.
	return $this->result_array;
}

function linhas()
{
	// um simples método para contar as linhas
	return $this->query->num_rows;
}

}

?>

 

index.php

<html>

<head>

<title>Teste utilizando PHP Orientado a Objetos</title>

<style type="text/css">
body { font:13px/20px normal Trebuchet MS, Tahoma, Verdana, sans-serif; }
#login form fieldset input{
display:block;
margin-left:10px;
margin-bottom:5px;
padding:5px;
}
#login form fieldset label{
clear:left;
display:block;
float:left;
margin-top:3px;
width:70px;
}
/* --- ***** --- */
</style>

</head>

<body>

<div id="geral">

<div id="login">

	<form action="logar.php" method="post">

		<fieldset>

			<legend>Formulário de Login</legend>

			<label for="login">Login :</label>
			<input type="text" name="login" />

			<label for="senha">Senha :</label>
			<input type="password" name="senha" />

			<input type="submit" value="Logar" />


		</fieldset>

	</form>

</div>

</div>

</body>

</html>

 

logar.php

<?php

require 'bd.class.php';
require 'usuario.class.php';

$usuario = new Usuario();

$login = $_POST['login'];
$senha = $_POST['senha'];

if(!$usuario->logar($login, $senha)):

echo "<h2>Erro ao se logar</h2>\n";

else:

echo "<h2>Usuário logado com sucesso!</h2>\n";

echo "<h3>Usuários do sistema: <br />\n</h3>";	

echo "<ul>\n";

foreach($usuario->busca_usuarios() as $usuarios):

	echo "<li>".$usuarios['nome']."</li>\n";

endforeach;

echo "</ul>";


endif;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz algumas mudanças.. não sei se melhorou ou piorou..

 

Se vale minha opinião, acho que melhorou. Porém ainda tenho algumas dicas, heheheh

 

class Usuario
{
// dados do usuario, caso queiram adicionar mais funcoes como insercao, edicao e etc.
public $usuario;
public $senha;
...

Uma vez que é necessário o login, talvez deixar as propriedades $usuario e senha como privadas ou protegidas possa ser mais interessante. Dessa forma, apenas se o login for bem sucedido é que os valores delas serão atualizados.

 

function logar($login, $senha)
{
// conecta ao banco de dados

$this->usuario = $login;
$this->senha = md5($senha);

Legal o uso do md5, mas ficou faltando um pouco de segurança para o login, talvez escapar ele possa ser uma idéia:

 

$this->usuario = mysql_real_escape_string( $login );
$this->senha = md5($senha);

/**
* Ao invés de procurar o usuário e senha, eu busco apenas a senha, e comparo com o login.
* Caso eu ache uma senha para determinado login, eu vou verificar quantos registros
* foram encontrados.
*/
... where login = '$login'";

Abordagem interessante uma vez que você está usando hash, porém não é o que sua string SQL está fazendo...

 

class DB
{
// Dados do seu banco de dados
private $host = 'localhost';
private $user = 'root';
private $pw = '';
private $database = 'sistema';
...

Nesse ponto existem dois pontos de vista:

 

1. Como eu não vi nenhum método para modificar esses dados então estou assumindo que eles não serão modificados, nesse caso o ideal é você utilizar constantes uma vez que elas usam menos memória:

 

class DB
{
// Dados do seu banco de dados
const HOST = "localhost";
const USER = "root";
const PW = "";
const DATABASE = "sistema";

$this->mysqli = new mysqli( self::HOST , self::USER , self::PW , self::DATABASE );

2. Agora, se esses dados puderem ser modificados (e o ideal nesse caso é que possam) você deve implementar os setters para eles.

 

 

PS: Amigo, não sei se o objetivo dessa thread era para que karas chatos como eu ficassem dando palpites, se não for esse o caso é só dar um toque que eu paro na hora.. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa João Batista Neto

 

O Objetivo é esse mesmo...

 

Eu estou aprendendo agora orientação a Objetos e estou gostando das dicas..

 

na parte que eu comentei, eu errei na escrita, a query está fazendo o que eu queria, acho que na hora que eu fui comentar eu não li direito o que tinha escrito, mas é isso mesmo.. justamente por não precisar escapar o login que eu fiz.

 

Exemplo:

 

SQL Injection tem como objetivo obter uma quantidade grande de dados e(ou) simplesmente ter acesso ao sistema.

Se o cara digitar no login um sql Injection: ( ' or 1 = '1 por exemplo) ele irá puxar todas as senhas do usuário, até aí tudo bem..

 

Porém ai vem a minha lógica.

Primeiro eu quero saber se ele obteve apenas 1 linha, se o resultado da query tiver mais de uma linha, ele não irá conseguir logar, e o outro ponto interessante é que se ele digitou um sql injection na senha também, não iria funcionar, pois ele iria comparar "'or 1 = '1" == 'senhadobanco' o que também daria errado.

 

Claro que não custa nada escapar o login, mas acho que mesmo sem escapar fica difícil o cara conseguir alguma coisa aí.

 

Estou testando as modificações aqui, em breve eu posto novamente.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porém ai vem a minha lógica.

Primeiro eu quero saber se ele obteve apenas 1 linha, se o resultado da query tiver mais de uma linha, ele não irá conseguir logar, e o outro ponto interessante é que se ele digitou um sql injection na senha também, não iria funcionar, pois ele iria comparar "'or 1 = '1" == 'senhadobanco' o que também daria errado.

 

Bom, nesse caso, para que isso funcione você precisa necessariamente criar uma restrição no seu banco de dados para não permitir logins duplicados:

 

 ALTER TABLE `sistema`.`usuarios` ADD UNIQUE KEY `logins`(`login`);

 

Além de não permitir logins duplicados, suas consultas pelo login serão mais rápidas uma vez que foi criado o índice para essa coluna

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicionei as dicas do João.

 

Abaixo a versão 1.3 =)

 

tabela.sql

create table sistema.usuarios( 
id int(2) not null AUTO_INCREMENT,
nome varchar(40) not null,
login varchar(20) not null,
senha varchar(32) not null,
primary key (id),
unique key (login)
);

insert	into usuarios(id, nome, login, senha) 
	values	( null, 'Diego Felix', 'diego', '7c67e713a4b4139702de1a4fac672344'),
			( null, 'Outro Nome', 'outronome', '7c67e713a4b4139702de1a4fac672344' ),
			( null, 'Qualquer Noem', 'qualquernome', '7c67e713a4b4139702de1a4fac672344' ),
			( null, 'Other Name', 'othername', '7c67e713a4b4139702de1a4fac672344' );

Update: adicionei valores a tabela e campo unique para o login

 

usuario.class.php

<?php
/*
|-------------------------------------------------------------------
|	CLASSE USUARIO
|-------------------------------------------------------------------
|	por		: Diego Felix
|	em		: 07/08/2009
|       atualizado	: 14/08/2009
|	versão		: 1.3
|	descricao	: Uma classe de login com criptografia md5 e 
|				  orientada a objetos.
|
*/
class Usuario
{	
// dados do usuario, caso queiram adicionar mais funcoes como insercao, edicao e etc.
private $usuario;
private $senha;

function logar($login, $senha)
{
	// conecta ao banco de dados

	$this->usuario = $login;
	$this->senha = md5($senha);

	/**
	 * Ao invés de procurar o usuário e senha, eu busco apenas a senha, e comparo com o login.
	 * Caso eu ache uma senha para determinado login, eu vou verificar quantos registros
	 * foram encontrados.
	 */
	$select = "select senha from usuarios where login = '$login'";

	$db = new DB();

	$db->select($select);

	$linhas = $db->linhas();

	$resultado = $db->resultado();

	/** 
	 * Aqui alem de comparar a senha digitada com a senha que foi encontrada no banco.
	 * eu vejo tambem se foi encontrado apenas um registro.
	 * isso significa que se o usuário digitar 'or 1 = '1-- no campo senha,
	 * ele vai comparar: se senhadobanco == "'or 1 = '1--".
	 * se ele digitou o sql injection tambem no campo usuario, o bd retornara mais de
	 * um resultado, portanto tambem nao ira passar na validacao.
	 * a nao ser é claro que seu banco so tenha apenas um usuario =P
	 */
	if(($this->senha == $resultado[0]) and ($linhas == 1)):
		// se estiver tudo correto.
		return true;
	else:
		// senao, retorna false.
		return false;
	endif;
}

function busca_usuarios()
{ 
	// Busca todos os usuários do sistema.
	$db = new DB();

	$select = "select * from usuarios";

	$db->select($select);

	return $db->resultado_array();
}
}

?>

Update: criei uma função que retorna apenas um resultado na array e deixei resultado_array() para vários resultados. Criei também a função busca_usuarios(), que será responsável pela utilização da resultado_array() apenas para demonstrar a facilidade de se utilizar OOP.

 

bd.class.php

<?php
/*
|-------------------------------------------------------------------------
|	CLASSE PARA CONEXÃO COM BANCO DE DADOS
|-------------------------------------------------------------------------
*/
class DB
{
// Dados do seu banco de dados
const HOST	= "localhost";
const USER	= "root";
const PW	= "";
const DATABASE  = "sistema";

// Dados da classe.
public $query;
public $mysqli;
public $result_array = array();

// metodo construtor
function DB()
{
	$this->mysqli = new mysqli(self::HOST, self::USER, self::PW, self::DATABASE );

	if (mysqli_connect_errno()) {
		printf("Falha na conexão com o banco de Dados.", mysqli_connect_error()); 
	}

}

function select($query)
{
	// funcao que executa a query.
	$this->query =  $this->mysqli->query($query);
}

function resultado()
{
	return $this->query->fetch_row();
}

function resultado_array()
{
	// Pego todos os resultados e jogo em uma array
	while($dados = $this->query->fetch_array())
	{
		$this->result_array[] = $dados;
	}
	// retorno a array.
	return $this->result_array;
}

function linhas()
{
	// um simples método para contar as linhas
	return $this->query->num_rows;
}

}

?>

Update: Criei a função resultado para retornar uma linha e deixei o resultado_array() para várias.

 

logar.php

<?php

require 'bd.class.php';
require 'usuario.class.php';

$usuario = new Usuario();

$login = $_POST['login'];
$senha = $_POST['senha'];

if(!$usuario->logar($login, $senha)):

echo "<h2>Erro ao se logar</h2>\n";

else:
?>

<h2>Usuário logado com sucesso!</h2>

<h3>Usuários do sistema:</h3>

<ul>
<?php
	foreach($usuario->busca_usuarios() as $usuarios):

		echo "<li>".$usuarios['nome']."</li>\n";

	endforeach;
?>
</ul>
<?php
endif;
?>

Update: Adicionei uma função para buscar os usuários apenas para demonstrar a facilidade de se utilizar orientação a Objetos.

 

index.php

<html>

<head>

<title>Teste utilizando PHP Orientado a Objetos</title>

<style type="text/css">
body { font:13px/20px normal Trebuchet MS, Tahoma, Verdana, sans-serif; }
#login form fieldset input{
display:block;
margin-left:10px;
margin-bottom:5px;
padding:5px;
}
#login form fieldset label{
clear:left;
display:block;
float:left;
margin-top:3px;
width:70px;
}
/* --- ***** --- */
</style>

</head>

<body>

<div id="geral">

<div id="login">

	<form action="logar.php" method="post">

		<fieldset>

			<legend>Formulário de Login</legend>

			<label for="login">Login :</label>
			<input type="text" name="login" />

			<label for="senha">Senha :</label>
			<input type="password" name="senha" />

			<input type="submit" value="Logar" />


		</fieldset>

	</form>

</div>

</div>

</body>

</html>

Não foi alterado nada nessa parte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

logar.php

[php
$login = $_POST['login'];
$senha = $_POST['senha'];
[/php]

 

Bom amigo, acho que está ficando SHOW, porém aqui vai mais uma dica:

 

Nunca confie que seu usuário vá te passar os dados que você está esperando, muitas vezes a primeira tentativa de intrusão começa justamente em testar a página que recebe os dados.

Nesse caso, você está resgatando os valores de $_POST[ 'login' ] e $_POST[ 'senha' ] sem verificar se eles foram realmente passados. Se o usuário acessar diretamente essa página ele provavelmente irá receber um E_NOTICE depois um E_WARNING.

 

$login = isset( $_POST['login'] ) ? $_POST[ 'login' ] : null;
$senha = isset( $_POST['senha'] ) ? $_POST[ 'senha' ] : null;

if ( ( $login == null ) || ( $senha == null ) ){
   //Dados inválidos
} else {
   //continua a validação dos dados
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito boa a dica joão.

 

Deixe um jeito simples aqui mesmo porque, quero que essa classe seja dinamica, não muito complexa para que todos possam modificar ao seu gosto.

 

Abaixo o arquivo modificado.

 

logar.php

<?php

require 'bd.class.php';
require 'usuario.class.php';

$usuario = new Usuario();

$login = isset( $_POST['login'] ) ? $_POST['login'] : null;
$senha = isset( $_POST['senha'] ) ? $_POST['senha'] : null;

if(($login == null) || ($senha == null)):

echo "<h2>Erro ao se logar.</h2>\n";

else:

if(!$usuario->logar($login, $senha)):

	echo "<h2>Erro ao se logar.</h2>\n";

else:
?>

	<h2>Usuário logado com sucesso!</h2>

	<h3>Usuários do sistema:</h3>

	<ul>
	<?php
		foreach($usuario->busca_usuarios() as $usuarios):

			echo "<li>".$usuarios['nome']."</li>\n";

		endforeach;
	?>
	</ul>
	<?php

endif;

endif;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, só mais uma dica, pra ficar mais elegante, você deveria extender a classe usuario para que ela herde os metodos da classe BD

 


class Usuario extends BD(){....



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.