Banco de Dados utilizado:
CREATE database gonacts;
CREATE TABLE `usuario` (
`id` int(11) NOT NULL default '0',
`login` varchar(42) NOT NULL default '',
`senha` varchar(42) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Antes de mais nada, segue abaixo o code completo..
<? #CLASSE USUÁRIO class User{ #MÉTODO CONSTRUTOR. #Dados para conexão com o BD. function __construct($host, $user, $pass, $banco) { #DEFINE OS VALORES PARA CONEXÃO COM O BANCO DE DADOS $this->host = $host; $this->user = $user; $this->pass = $pass; $this->banco = $banco; #Tentativa de conexão com o banco self::connect(); } function connect() { #CONECTA-SE AO BANCO DE DADOS COM OS VALORES SETADOS PELO MÉTODO CONSTRUTOR $conexao = mysql_connect($this->host,$this->user,$this->pass) or die("ERRO1: ".mysql_error()); $banco = mysql_select_db($this->banco,$conexao) or die("ERRO2: ".mysql_error()); return $conexao; } function autentica($tbl, $login, $senha) { #CHAMA O MÉTODO DE CONEXÃO COM O BANCO DE DADOS. self::connect(); #VERIFICA SE EXISTE ALGUM LOGIN CADASTRADO NO BANCO COM O INFOMRADO. $query = mysql_query("select login from $tbl WHERE login='".sha1($login)."' ") or die("ERRO3: ".mysql_error()); #SE ENCONTROU ALGUM USUÁRIO, VERIFICA A SENHA. if(mysql_num_rows($query)>0): #RESGATA OS VALORES DOS REGISTROS DO USUÁRIO REFERENTE AO LOGIN INFORMADO. $dados = mysql_fetch_array($query); #VERIFICA SE A SENHA INFORMADA É VÁLIDA. $sql = mysql_query("select senha from $tbl WHERE login='".sha1($login)."' AND senha='".sha1($senha)."' ") or die("ERRO4: ".mysql_error()); if(mysql_num_rows($sql)>0): $this->msg = "LOGADO COM SUCESSO"; else: $this->msg = "SENHA INVÁLIDA"; endif; else: $this->msg = "LOGIN INVÁLIDO"; endif; return $this->msg; } } #PASSA OS PARÂMETROS DE CONEXÃO COM O BANCO DE DADOS. $logar = new User("localhost","USUARIO","SENHA","BANCO"); #VERIFICA A ENTRADA DOS CAMPOS. if(!empty($_POST['login']) && !empty($_POST['senha']) ): #FAZ A AUTENTICAÇÃO. $logou = $logar->autentica("usuario",$_POST['login'],$_POST['senha']); endif; ?> <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> <table border="0" width="550" align="center"> <tr> <td colspan="2"><div align="center"><strong>Autenticação de Usuário</strong></div></td> </tr> <? if(isset($logou)): ?> <tr> <td colspan="2"><div align="center"><strong><font color="#FF0000"><?=$logou?></font></strong></div></td> </tr> <? endif; ?> <tr> <td> </td> <td> </td> </tr> <tr> <td>Login</td> <td><input type="text" name="login"></td> </tr> <tr> <td>Senha</td> <td><input type="password" name="senha"></td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="Logar"></td> </tr> </table> </form>
analisaremos por partes...
classe
class User{ #MÉTODO CONSTRUTOR. #Dados para conexão com o BD. function __construct($host, $user, $pass, $banco) { #DEFINE OS VALORES PARA CONEXÃO COM O BANCO DE DADOS $this->host = $host; $this->user = $user; $this->pass = $pass; $this->banco = $banco; #Tentativa de conexão com o banco self::connect(); } function connect() { #CONECTA-SE AO BANCO DE DADOS COM OS VALORES SETADOS PELO MÉTODO CONSTRUTOR $conexao = mysql_connect($this->host,$this->user,$this->pass) or die("ERRO1: ".mysql_error()); $banco = mysql_select_db($this->banco,$conexao) or die("ERRO2: ".mysql_error()); return $conexao; } function autentica($tbl, $login, $senha) { #CHAMA O MÉTODO DE CONEXÃO COM O BANCO DE DADOS. self::connect(); #VERIFICA SE EXISTE ALGUM LOGIN CADASTRADO NO BANCO COM O INFOMRADO. $query = mysql_query("select login from $tbl WHERE login='".sha1($login)."' ") or die("ERRO3: ".mysql_error()); #SE ENCONTROU ALGUM USUÁRIO, VERIFICA A SENHA. if(mysql_num_rows($query)>0): #RESGATA OS VALORES DOS REGISTROS DO USUÁRIO REFERENTE AO LOGIN INFORMADO. $dados = mysql_fetch_array($query); #VERIFICA SE A SENHA INFORMADA É VÁLIDA. $sql = mysql_query("select senha from $tbl WHERE login='".sha1($login)."' AND senha='".sha1($senha)."' ") or die("ERRO4: ".mysql_error()); if(mysql_num_rows($sql)>0): $this->msg = "LOGADO COM SUCESSO"; else: $this->msg = "SENHA INVÁLIDA"; endif; else: $this->msg = "LOGIN INVÁLIDO"; endif; return $this->msg; } }
caso o seu php nao seja o 5, mude o nome do método construtor para o mesmo nome da classe, que no nosso caso é User..
O que é/faz o método construtor?
Resp:Assim q instanciamos um objeto da classe o método construtor é executado, isso se o mesmo existir em sua classe. O método construtor, a partir do php 5 ele é implementado usando "__construct()", nas versões anteriores o msm é implementado definindo o método com o mesmo nome da função, que no nosso caso ,como já disse, é: User.
No nosso caso o método é executado para poder definir as variáveis de conexão com o banco de dados.
O que faz o comando self::connect?
Resp: Após a definição das mesmas o método connect é chamado, através da chamada: self::connect. self foi um recurso adicionado a partir do php 5, sua fç é chamar o método definido após os :(2 pontos) da própria classe. (Tem também parent::, que é usada em caso de herança). O método connect é responsável por fazer a conexão com o bd.
Após instanciada a classe e setados os valores, o próximo passo é chamar o método autentica, que fará o acesso ao banco de dados e retornará sucesso ou falha.
$logou = $logar->autentica("usuario",$_POST['login'],$_POST['senha']);
os parâmetros a serem passados para o método sâo: nome da tabela q será consultada, login e senha a serem verificados.
para nao ficar mto longo o tuto vou terminando por aqui, caso haja alguma dúvida no momento de implementar, ou mesmo no entendimento do sistema, post ai
entao, é isso ai, espero q tenham gostado..sempre q tiver oportunidade estarei postando algum tuto...de preferencia em OO, ate msm para "acostumar"
Edição feita por: gonacts, 30/01/2006, 16:33.