Olá!!!!
Vou ensinar como fazer um sistema de login!
Bem, vamos primeiro ver tudo o que será passado nesse tutorial:
- vamos criar uma página de cadastro dos usuários;
- outra página para o login;
- gravar o login e senha em um cookie;
- outra página para recuperação de senha;
- aplicar a restrição nas páginas;
Vamos começar???
1ºpasso - Vamos criar uma tabela no MySQL:
<?
CREATE TABLE `tbl_usuarios` (
`codigo` INT( 5 ) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR( 75 ) NOT NULL ,
`login` VARCHAR( 30 ) NOT NULL ,
`senha` VARCHAR( 30 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `codigo` )
);`
?>
Explicando:
CREATE TABLE `tbl_membros` - criamos a tabela com o nome tbl_membros
Tudo que vem entre os ( ) é os campos;
Código - INT (somente números) com limite para 5 caracteres, acho que até 99999 usuários está bom né? E o NOT NULL para que ela não fique em branco, AUTO_INCREMENT é para ela automaticamente numerar (1,2,3,4,...)
Nome - VARCHAR (Alpha númerico, letras, números e caracteres especiais) com 75 caracteres no máximo, ...
2ºpasso - Agora que temos a tabela criada, vamo para a página de cadastro dos usuários. Vamos fazer um formulário com os seguintes campo: Nome, Login, Senha, Repetir Senha e o Email, lembrando que o usuário não digita o campo código, ele é automaticamente inserido no MySQL.
cadastrar.php
<form name="cadastrar" method="post" action="enviar_cadastro.php">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="150"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Nome:</font></td>
<td width="250"><input name="nome" type="text" id="nome" maxlength="75"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Login:</font></td>
<td><input name="login" type="text" id="login" maxlength="30"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Senha:</font></td>
<td><input name="senha" type="password" id="senha" maxlength="30"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Repetir
Senha:</font></td>
<td><input name="senha2" type="password" id="senha2" maxlength="30"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Email:</font></td>
<td><input name="email" type="text" id="email" maxlength="50"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="enviar" type="submit" id="enviar" value="Enviar Cadastro">
<input name="limpar" type="reset" id="limpar" value="Limpar Dados">
</div></td>
</tr>
</table>
</form>
Um simples formulário, nada de códigos, nada de scripts, aqui, muitos programadores gostam de enviar o formulário para a mesma página, e fazer vários IF, eu prefiro enviar o formulário para outra página que irá inserir os dados no MySQL (enviar_cadastro.php). Até essa parte acredito que não tenha nenhuma dúvida no ar, então, vamos para a página que irá introduzir esses usuários no banco de dados.
Mas primeiro, iremos fazer uma página php somente com as configurações do acesso ao banco de dados, pois iremos utiliza-lo várias vezes, e caso erremos em um ponto, teremos que conferir em todas as páginas, essa parte ajudaria como um include de menus.
3ºpasso - Essa página não precisa ter nenhum código html, ou seja, crie uma página nova e apague todo o código fonte, iremos somente colocar umas váriaveis php nele, aqui segue o código da página:
config.php
Com essa nossa página de Configurações pronta, salve-a com o nome de config.php e agora vamos para a parte de inserir os usuários:
enviar_cadastro.php
Esse é nosso código para cadastrar os usuários no banco de dados, parece meio complicado ao olhar assim, mas tem comentários ao lado de cada ação, o bom é você tentar entender esse código, não copia-lo e colar no seu, digamos que essa é a base dos sistemas de login.
4ºpasso - Página de Login
Vamos fazer da mesma maneira do cadastro, uma página com um formulário simples, que envia para uma página os dados digitados.
login.php
<form name="login" method="post" action="confirmar_login.php">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="150"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Login:</font></td>
<td width="250"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input name="login" type="text" id="login">
</font></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Senha:</font></td>
<td><input name="senha" type="password" id="senha"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;</font></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;</font></td>
</tr>
<tr>
<td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input name="entrar" type="submit" id="entrar" value="Entrar">
</font></div></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="senha.php">Esqueceu
a senha?</a> <a href="cadastrar.php">Cadastre-se</a></font></td>
</tr>
</table>
</form>
Agora criaremos a página que irá verificar se a senha digitada é correta ou não. Outra coisa, essa página também não deve conter códigos html, pelo fato de ser criados cookies, você deve deletar todo o conteúdo da página antes de fazer esse código
confirmar_login.php
Como o cadastro, poderá parecer meio confusa essa página, mas também aconselho que não copie o código, analise e faça você mesmo, com essas página já teriamos um sistema de login, mas queremos mais, caso nossos usuário não se lembrem da senha, não quero ele me incomodando no icq , então faremos uma página para que envie a senha no email cadastrado. E outra vez estaremos fazendo um formulário simples antes, e será enviado para outra página.
senha.php
<form name="senha" method="post" action="enviar_senha.php">
<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="150"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Login:</font></td>
<td width="250"><input name="login" type="text" id="login"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Email:</font></td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="enviar" type="submit" id="enviar" value="Enviar minha Senha">
</div></td>
</tr>
</table>
</form>
Agora com os campos Login e Email, podemos conferir no banco de dados e enviar a senha para o email cadastrado:
enviar_senha.php
Tenho que comentar novamente? Acho que sim né, pra gravar bem, é melhor você entender esse script ao invés de copia-lo. Temos pronto nosso sistema já, o que nos resta é? é? é? Restringir o acesso a algumas páginas, bem, vamos fazer uma página com os scripts, e mesmo assim, temos que editar as páginas que queremos que fiquem "trancadas". Também podemos fazer sem edita-las, mas ficaria um sistema bem menos seguro. Vamos agora criar a página com a restrição:
acesso.php
Essa página "acesso.php" também não pode conter códigos html, agora iremos ver como colocar essa restrição de acesso nas páginas, veja um exemplo:
5ºpasso - Teste!
Temos uma página somente com o texto "OI!" centralizado, esse é o código:
teste.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Teste de Acesso</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<div align="center">OI!</div>
</body>
</html>
O que temos que fazer é, Adicionar um IF no começo dessa página e um ELSE no final, caso não esteja logado, ficando assim:
teste.php
Caso deseje fazer um botão para Logout, crie a página logout.php, com as seguintes ações:
logout.php
<?
setcookie("login","",time()-3600);
setcookie("senha","",time()-3600);?>
E para efetuar o Logout, você somente precisa colocar um link em suas página para essa pagina
Bem, creio que acabamos (se não esqueci nenhuma parte), espero ter ajudado quem passava por dificuldades com esse tipo de sistema, e que com base nele pode ser aplicado bem mais coisas, como por exemplo, criptografar os cookies de senha, para ter uma melhor segurança para seus usuários.