Login com alteração de senha do usuário
Autor: Cícero Joceilton | Publicado: 2011-11-27T04:58:00-08:00

Olá, galera da NET!!!

Eu estou hoje aqui para mostrar para vocês um script bem legal que fiz em php, trata-se de um sistema de login, onde o usuário pode alterar sua senha e se cadastrar no site, assim você pode dar comodidade ao seus clientes, vou tentar ser o mais explicito possível, mas para isso você precisa ter conhecimento básico em php e mysql, e para testar pode utilizar o wampserver, um servidor local onde você tem o phpmyadmin.

vamos ao que interessa!!!

primeiro precisamos de uma tabela, o código abaixo gera esta tabela:

CREATE TABLE `users` (&nbsp; `userid` int(11) NOT NULL auto_increment,&nbsp; `username` varchar(60) NOT NULL,&nbsp; `password` varchar(60) NOT NULL,&nbsp; `ativo` char(1) NOT NULL,&nbsp; PRIMARY KEY&nbsp; (`userid`)) ENGINE=MyISAM&nbsp; DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


primeiro criamos a tabela user, e depois criamos os campos: userid do tipo int com valor não nulo e auto_increment, o que quer dizer que não precisamos atribuir valores a este campo, o próprio mysql vai fazer isto, o campo username do tipo varchar com tamanho 60 e valor não nulo, o password com tamanho 60 e o ativo do tipo char com tamanho 1.

depois você vai entender o porquê deste campo ativo.



agora vamos ao formulário de login que vai enviar as informações do usuário:


&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;&lt;html&gt;&lt;head&gt;&nbsp; &lt;meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"&gt;&nbsp; &lt;title&gt;login.php&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt; Cícero Joceilton &lt;/h1&gt;&lt;h4&gt; Juazeiro do Norte / Ce &lt;/h4&gt;&lt;form name="form1" method="post" action="acesso.php"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;p align="right"&gt;Login &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="username" type="text" size="13" maxlength="60" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Senha &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input name="password" type="password" size="13" maxlength="60" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="Submit" value="Login" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/font&gt;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="cadastro.php"&gt;Cadastre-se&lt;/a&gt;&lt;/p&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &lt;/body&gt;&lt;/html&gt;



O acesso php, para criarmos as sessões:



&lt;?php// começar ou retomar uma sessãosession_start();// se vier um pedido para loginif (!empty($_POST)) {&nbsp;&nbsp;&nbsp; // estabelecer ligação com a base de dados&nbsp;&nbsp;&nbsp; mysql_connect('localhost', 'root', '') or die(mysql_error());&nbsp;&nbsp;&nbsp; mysql_select_db('usuarios');&nbsp;&nbsp;&nbsp; // receber o pedido de login com segurança&nbsp;&nbsp;&nbsp; $username = ($_POST['username']);&nbsp;&nbsp;&nbsp; $password = ($_POST['password']);}//verifica se algum dos campos não foram preenchiosif ($username=="" || $password=="") {echo "preencha todos os campos";echo "&lt;br&gt;";echo "&lt;a href='login.php'&gt;voltar&lt;/a&gt;";} else {&nbsp;&nbsp;&nbsp; // verificar o utilizador em questão (pretendemos obter uma única linha de registos)&nbsp;&nbsp;&nbsp; $login = mysql_query("SELECT userid, username FROM users WHERE username = '$username' AND password = '$password' AND ativo = 's'");&nbsp;&nbsp;&nbsp; if ($login &amp;&amp; mysql_num_rows($login) == 1) {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// o utilizador está correctamente validado&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// guardamos as suas informações numa sessão&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$_SESSION['id'] = mysql_result($login, 0, 0);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;$_SESSION['username'] = mysql_result($login, 0, 1);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;echo "&lt;p&gt;Sess&amp;atilde;o iniciada com sucesso como {$_SESSION['username']}&lt;/p&gt;";&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;header ("location: index.php");&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;// falhou o login&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;echo "senha e/ou usuario inválidos";&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;echo "&lt;br&gt;";&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;echo "&lt;a href='login.php'&gt; Voltar &lt;/a&gt;";&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; }?&gt; 

O verifica php, que vê se o usuario foi logado ou não



&lt;?php// iniciar uma sessãosession_start();&nbsp;if (empty($_SESSION['id'])) {&nbsp;&nbsp;&nbsp;&nbsp; // não existe sessão iniciada&nbsp;&nbsp;&nbsp; // neste caso, levamos o utilizador para a página de login&nbsp;&nbsp;&nbsp; header('Location: login.php');&nbsp;&nbsp;&nbsp; exit();}?&gt; O cadastro php que cadastra novos usuarios:



&lt;html&gt;&lt;head&gt;&lt;title&gt;cadastro&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;form name="cadastro" action="gravar.php" method="POST"&gt;&lt;p&gt;login desejado&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;label&gt;&nbsp;&nbsp;&nbsp; &lt;input name="username" type="text"/&gt;&nbsp;&nbsp;&nbsp; &lt;/label&gt;&nbsp; &lt;/p&gt;&nbsp; &lt;p&gt;Escolha uma senha&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;label&gt;&nbsp;&nbsp;&nbsp; &lt;input name="senha" type="password"/&gt;&nbsp;&nbsp;&nbsp; &lt;/label&gt;&nbsp; &lt;/p&gt;&nbsp; &lt;p&gt;confirme sua senha&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;label&gt;&nbsp;&nbsp;&nbsp; &lt;input name="confirma" type="password"/&gt;&nbsp;&nbsp;&nbsp; &lt;/label&gt;&nbsp; &lt;/p&gt;&nbsp; &lt;p&gt;&nbsp;&nbsp;&nbsp; &lt;label&gt;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="Submit" value="cadastrar" /&gt;&nbsp;&nbsp;&nbsp; &lt;/label&gt;&lt;/p&gt;&lt;/form&gt;Já tem cadastro? &lt;a href="login.php"&gt;Faça Login&lt;/a&gt;&lt;/body&gt;&lt;/html&gt;&nbsp;&nbsp; O gravar.php que grava no banco de dados:



&lt;?php/*Desenvolvido por Cícero Joceiltonblog: http://www.cjpcturbo.blogspot.comemail: cicerojoceilton@gmail.comJuazeiro do Norte / Ce *///conexão com o banco de dadosmysql_connect('localhost', 'root', '') or die(mysql_error());&nbsp;&nbsp;&nbsp; mysql_select_db('usuarios');&nbsp;&nbsp;&nbsp; //recebendo por metodo POST&nbsp;&nbsp;&nbsp; $username = $_POST['username'];&nbsp;&nbsp;&nbsp; $senha = $_POST['senha'];&nbsp;&nbsp;&nbsp; $confirma = $_POST['confirma'];&nbsp;&nbsp;&nbsp; $ativo = "s";$username = mysql_real_escape_string($_POST['username']);$senha = mysql_real_escape_string($_POST['senha']);$confirma = mysql_real_escape_string($_POST['confirma']);&nbsp;&nbsp;&nbsp; if ($username == "" || $senha == "" || $confirma == "" ) {&nbsp;&nbsp;&nbsp; echo "Preencha todos os campos";&nbsp;&nbsp;&nbsp; echo "&lt;br&gt;";&nbsp;&nbsp;&nbsp; echo "&lt;a href='cadastro.php'&gt;voltar&lt;/a&gt;";&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;} else {&nbsp;&nbsp;&nbsp; //verifica se já existe um usuário com o mesmo nome&nbsp;&nbsp;&nbsp; $verifica = mysql_query("SELECT * FROM users WHERE username = '$username' ");$resultado = mysql_num_rows($verifica);//se houver um usuário com o mesmo nome&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ($resultado == 1) {&nbsp;&nbsp;&nbsp; //imprime na tela a mensagem informando que o usuário já existeecho "Este usuário já existe";echo "&lt;br&gt;";echo "&lt;a href='cadastro.php'&gt;voltar&lt;/a&gt;";}//verifica se as senhas correspondem&nbsp;&nbsp;&nbsp; else if ($senha == $confirma) {&nbsp;&nbsp;&nbsp; //se as senhas corresponderem insere no banco de dados&nbsp;&nbsp;&nbsp; $sql="&nbsp;&nbsp;&nbsp; INSERT INTO users(&nbsp;&nbsp;&nbsp; username, password, ativo)&nbsp;&nbsp;&nbsp; VALUES(&nbsp;&nbsp;&nbsp; '$username', '$senha', '$ativo')";&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$query=mysql_query($sql) or die("Houve um erro na gravação dos dados, verifique os valores passados");&nbsp;&nbsp;&nbsp; &nbsp;header("location: index.php"); &nbsp;&nbsp;&nbsp; &nbsp;//caso as senhas não correspondam&nbsp;&nbsp;&nbsp; &nbsp;} else {&nbsp;&nbsp;&nbsp; &nbsp;//imprime na tela a mensagem informando que as senhas não correspondem&nbsp;&nbsp;&nbsp; &nbsp;echo "as senhas não correspondem";&nbsp;&nbsp;&nbsp; &nbsp;echo "&lt;br&gt;";&nbsp;&nbsp;&nbsp; &nbsp;echo "&lt;a href='cadastro.php'&gt;voltar&lt;/a&gt;";&nbsp;&nbsp;&nbsp; &nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;}&nbsp;&nbsp;&nbsp; ?&gt; 
O alterar_senha.php para alteração de senha do usuário:

&lt;?php/* Script desenvolvido por Cícero Joceilton da Silva GomesPode Utilizar este script em suas aplicações gratuitamenteE qualquer dúvida pode me contactar: cicerojoceilton@gmail.comJuazeiro do Norte / Ce */include "verifica.php";//conexão com o banco de dados&nbsp;&nbsp;&nbsp; mysql_connect('localhost', 'root', '') or die(mysql_error());&nbsp;&nbsp;&nbsp; mysql_select_db('usuarios');//recebendo o pedido de alteração$codigo &nbsp;&nbsp; &nbsp;= $_SESSION['id'];$password &nbsp;&nbsp; &nbsp;= $_POST["senha"];$confirme = $_POST["confirme"];//verifica se as senhas correspondemif ($password == "" || $confirme == "" ) {echo "preencha todos os campos";echo "&lt;br&gt;";echo "&lt;a href='troca_senha.php'&gt;voltar&lt;/a&gt;";} else if ($password == $confirme) {//caso corresponda atualiza no banco de dados na tabela users&nbsp;&nbsp;&nbsp; $sql ="&nbsp;&nbsp;&nbsp; UPDATE users SET &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;password='$password'&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;WHERE userid = '$codigo' &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ";&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$query=mysql_query($sql) or die("Houve um erro na gravação dos dados, verifique os valores passados");&nbsp;&nbsp;&nbsp; // abre a página index.php&nbsp;&nbsp;&nbsp; header("location:index.php");&nbsp;&nbsp;&nbsp; //caso não correspondam informa ao usuario&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp;&nbsp; echo "Senhas não correspondem";&nbsp;&nbsp;&nbsp; echo "&lt;br&gt;";&nbsp;&nbsp;&nbsp; //exibe o link de volta para o formulário de alteração de senha&nbsp;&nbsp;&nbsp; echo "&lt;a href='troca_senha.php'&gt;Voltar&lt;/a&gt;";&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; ?&gt;&nbsp;O troca_senha.php que é o formulário de alteração de senha do usuário:

&nbsp;&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;head&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&gt;&lt;title&gt;Untitled Document&lt;/title&gt;&lt;?phpinclude 'verifica.php';?&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt; olá &lt;?php echo $_SESSION['username']; ?&gt; preencha o formulário para&nbsp; Alterar sua Senha &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;form id="form1" name="form1" method="post" action="alterar_senha.php"&gt;&nbsp; &lt;p&gt;nova senha&nbsp; &nbsp;&nbsp;&nbsp; &lt;label&gt;&nbsp;&nbsp;&nbsp; &lt;input name="senha" type="password" id="senha" /&gt;&nbsp;&nbsp;&nbsp; &lt;/label&gt;&nbsp; &lt;/p&gt;&nbsp; &lt;p&gt;confirme senha &nbsp;&nbsp;&nbsp; &lt;label&gt;&nbsp;&nbsp;&nbsp; &lt;input name="confirme" type="password" id="confirme" /&gt;&nbsp;&nbsp;&nbsp; &lt;/label&gt;&nbsp; &lt;/p&gt;&nbsp; &lt;p&gt;&nbsp;&nbsp;&nbsp; &lt;label&gt;&lt;/label&gt;&nbsp; &lt;/p&gt;&nbsp; &lt;p&gt;&nbsp;&nbsp;&nbsp; &lt;label&gt;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="Submit" value="Alterar" /&gt;&nbsp;&nbsp;&nbsp; &lt;/label&gt;&lt;/p&gt;&lt;/form&gt;&lt;a href="index.php"&gt;voltar&lt;/a&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;

&nbsp;E o logout.php para fechar as sessões:



&lt;?php// aceder às sessõessession_start();// para terminar uma sessão, apenas é necessário destruí-lasession_destroy();// redirecionar o utilizador para outra página, login.php por exemploheader('Location: login.php');?&gt; 


&nbsp;Em todas as páginas que quiser proteger coloque entre o &lt;head&gt;&lt;/head&gt;:

&lt;?php include "verifica.php";&nbsp; ?&gt; 

E para dar as boas vindas coloque em qualquer parte do &lt;body&gt;:

Olá, &lt;?php echo $_SESSION["username"]; ?&gt; 


Façam bom proveito do código!!!


Cícero Joceilton da Silva Gomes

Juazeiro do Norte/Ce
cicerojoceilton@gmail.com