Powered By Blogger

domingo, 27 de novembro de 2011

Login com alteração de senha do usuário

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` (
  `userid` int(11) NOT NULL auto_increment,
  `username` varchar(60) NOT NULL,
  `password` varchar(60) NOT NULL,
  `ativo` char(1) NOT NULL,
  PRIMARY KEY  (`userid`)
) ENGINE=MyISAM  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:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
  <title>login.php</title>


</head>
<body>
<h1> Cícero Joceilton </h1>
<h4> Juazeiro do Norte / Ce </h4>

<form name="form1" method="post" action="acesso.php">
              
                  <p align="right">Login
                    <input name="username" type="text" size="13" maxlength="60" />
                    Senha
                    <input name="password" type="password" size="13" maxlength="60" />
                    <input type="submit" name="Submit" value="Login" />
                 
                 
                    </font>
                    <br><br>
             <a href="cadastro.php">Cadastre-se</a></p>
              </form>
             
             

</body>
</html>
O acesso php, para criarmos as sessões:

<?php

// começar ou retomar uma sessão

session_start();


// se vier um pedido para login
if (!empty($_POST)) {

    // estabelecer ligação com a base de dados
    mysql_connect('localhost', 'root', '') or die(mysql_error());
    mysql_select_db('usuarios');

    // receber o pedido de login com segurança
    $username = ($_POST['username']);
    $password = ($_POST['password']);
}
//verifica se algum dos campos não foram preenchios
if ($username=="" || $password=="") {
echo "preencha todos os campos";
echo "<br>";
echo "<a href='login.php'>voltar</a>";
} else {
    // verificar o utilizador em questão (pretendemos obter uma única linha de registos)
    $login = mysql_query("SELECT userid, username FROM users WHERE username = '$username' AND password = '$password' AND ativo = 's'");

    if ($login && mysql_num_rows($login) == 1) {

        // o utilizador está correctamente validado
        // guardamos as suas informações numa sessão
        $_SESSION['id'] = mysql_result($login, 0, 0);
        $_SESSION['username'] = mysql_result($login, 0, 1);
      
   

        echo "<p>Sess&atilde;o iniciada com sucesso como {$_SESSION['username']}</p>";
      
        header ("location: index.php");
    } else {

        // falhou o login
        echo "senha e/ou usuario inválidos";
        echo "<br>";
        echo "<a href='login.php'> Voltar </a>";
      
      
      
    }
    }




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

<?php
// iniciar uma sessão
session_start();
 
if (empty($_SESSION['id'])) {
 
    // não existe sessão iniciada
    // neste caso, levamos o utilizador para a página de login
    header('Location: login.php');
    exit();
}
?>

O cadastro php que cadastra novos usuarios:

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

<?php
/*Desenvolvido por Cícero Joceilton
blog: http://www.cjpcturbo.blogspot.com
email: cicerojoceilton@gmail.com
Juazeiro do Norte / Ce */
//conexão com o banco de dados
mysql_connect('localhost', 'root', '') or die(mysql_error());
    mysql_select_db('usuarios');
    //recebendo por metodo POST
    $username = $_POST['username'];
    $senha = $_POST['senha'];
    $confirma = $_POST['confirma'];
    $ativo = "s";
$username = mysql_real_escape_string($_POST['username']);
$senha = mysql_real_escape_string($_POST['senha']);
$confirma = mysql_real_escape_string($_POST['confirma']);

    if ($username == "" || $senha == "" || $confirma == "" ) {
    echo "Preencha todos os campos";
    echo "<br>";
    echo "<a href='cadastro.php'>voltar</a>";
        } else {
    //verifica se já existe um usuário com o mesmo nome
    $verifica = mysql_query("SELECT * FROM users WHERE username = '$username' ");
$resultado = mysql_num_rows($verifica);
//se houver um usuário com o mesmo nome  
    if ($resultado == 1) {
    //imprime na tela a mensagem informando que o usuário já existe
echo "Este usuário já existe";
echo "<br>";
echo "<a href='cadastro.php'>voltar</a>";
}
//verifica se as senhas correspondem
    else if ($senha == $confirma) {
    //se as senhas corresponderem insere no banco de dados
    $sql="
    INSERT INTO users(
    username, password, ativo)
    VALUES(
    '$username', '$senha', '$ativo')";
   
     $query=mysql_query($sql) or die("Houve um erro na gravação dos dados, verifique os valores passados");
     header("location: index.php");
     //caso as senhas não correspondam
     } else {
     //imprime na tela a mensagem informando que as senhas não correspondem
     echo "as senhas não correspondem";
     echo "<br>";
     echo "<a href='cadastro.php'>voltar</a>";
     }
     }
   
?>
O alterar_senha.php para alteração de senha do usuário:

<?php
/* Script desenvolvido por Cícero Joceilton da Silva Gomes
Pode Utilizar este script em suas aplicações gratuitamente
E qualquer dúvida pode me contactar: cicerojoceilton@gmail.com
Juazeiro do Norte / Ce */
include "verifica.php";
//conexão com o banco de dados
    mysql_connect('localhost', 'root', '') or die(mysql_error());
    mysql_select_db('usuarios');
//recebendo o pedido de alteração
$codigo     = $_SESSION['id'];
$password     = $_POST["senha"];
$confirme = $_POST["confirme"];

//verifica se as senhas correspondem
if ($password == "" || $confirme == "" ) {
echo "preencha todos os campos";
echo "<br>";
echo "<a href='troca_senha.php'>voltar</a>";
} else
if ($password == $confirme) {
//caso corresponda atualiza no banco de dados na tabela users
    $sql ="
    UPDATE users SET
        password='$password'
        WHERE userid = '$codigo'
   
    ";
   
     $query=mysql_query($sql) or die("Houve um erro na gravação dos dados, verifique os valores passados");
    // abre a página index.php
    header("location:index.php");
    //caso não correspondam informa ao usuario
    } else {
    echo "Senhas não correspondem";
    echo "<br>";
    //exibe o link de volta para o formulário de alteração de senha
    echo "<a href='troca_senha.php'>Voltar</a>";
    }
    ?>
 O troca_senha.php que é o formulário de alteração de senha do usuário:

 <!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=iso-8859-1" />
<title>Untitled Document</title>
<?php
include 'verifica.php';
?>
</head>

<body>
<p> olá <?php echo $_SESSION['username']; ?> preencha o formulário para  Alterar sua Senha </p>
<p>&nbsp;</p>
<form id="form1" name="form1" method="post" action="alterar_senha.php">
  <p>nova senha 
    <label>
    <input name="senha" type="password" id="senha" />
    </label>
  </p>
  <p>confirme senha
    <label>
    <input name="confirme" type="password" id="confirme" />
    </label>
  </p>
  <p>
    <label></label>
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="Alterar" />
    </label>
</p>
</form>
<a href="index.php">voltar</a>
<p>&nbsp;</p>
</body>
</html>


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

<?php
// aceder às sessões
session_start();

// para terminar uma sessão, apenas é necessário destruí-la
session_destroy();

// redirecionar o utilizador para outra página, login.php por exemplo
header('Location: login.php');
?>



 
Em todas as páginas que quiser proteger coloque entre o <head></head>:

<?php include "verifica.php";
  ?>


E para dar as boas vindas coloque em qualquer parte do <body>:

Olá, <?php echo $_SESSION["username"]; ?>


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

Cícero Joceilton da Silva Gomes
Juazeiro do Norte/Ce
cicerojoceilton@gmail.com

Nenhum comentário:

Postar um comentário