Login PHP MySQL

Estrutura completa de login/logout
Voltar

No código abaixo, execute 1º o banco.sql em sua base de dados, verificando se os parâmetros de conexão coincidem com seu projeto. Caso desejar estrutura de login mais complexa, com validações de cpf, clientes inativados e tipos de clientes, confira abaixo. Para logar neste exemplo, use as credenciais nome ubsocial e senha 123.

Login avançado

banco.sql


CREATE DATABASE loginphp;
USE loginphp;
CREATE TABLE cliente (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(50) NOT NULL,
    senha VARCHAR(100) NOT NULL
);
INSERT INTO cliente(nome,senha) VALUES ("ubsocial",MD5(123));

conexao.php


<?php
    try {
        $db = new PDO('mysql:host=localhost;dbname=loginphp;charset=utf8','root','');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $exception) {header("location: offline.php");}
?>

offline.php


<h1>Erro ao conectar-se com a base de dados</h1>
<p>Verifique sua conexão com o banco de dados e tente novamente</p>
<a href="index.php">Recarregar</a>

index.php


<?php
    require_once 'conexao.php';

    if((!empty($_POST['nome'])) and (!empty($_POST['senha']))) {
        $r = $db->prepare("SELECT nome,senha FROM cliente WHERE nome=? AND senha=?");
        $r->execute(array($_POST['nome'],md5($_POST['senha'])));

        if($r->rowCount()==0) {echo "Dado(s) incorreto(s)!";}
        else {
            session_start();
            $linhas = $r->fetchAll(PDO::FETCH_ASSOC);
            foreach($linhas as $l) {
                $_SESSION['nome'] = addslashes($l['nome']);
                $_SESSION['senha'] = addslashes($_POST['senha']); //Remover para melhor segurança
                $_SESSION['senhamd5'] = addslashes($l['senha']);
                $_SESSION['logado'] = true;
                header("location: logado.php");
            }
        }
    }
?>
<h1>Login</h1>
<form action="index.php" method="post">
    <input type="text" maxlength="50" name="nome" required placeholder="nome" style="text-transform: lowercase;">
    <input type="password" name="senha" maxlength="6" required placeholder="senha">
    <input type="submit" value="Entrar">
</form>

acessoNegado.php


<?php
    session_start();
    session_unset();
    session_destroy();
?>
<h1>Acesso negado!</h1>
<p>Faça login para ter acesso</p>
<a href="index.php">Login</a>

logado.php


<?php
    require_once 'conexao.php';
    session_start();
    if((!isset($_SESSION['logado'])) and (!isset($_SESSION['nome'])) and (!isset($_SESSION['senha'])) and (!isset($_SESSION['senhamd5']))) {header('Location: acessoNegado.php');}
?>
<h1><?=$_SESSION['nome']?>, você logou!</h1>
<p>Sua senha é <?=$_SESSION['senha']?></p>
<p>Sua senha é, em MD5, <?=$_SESSION['senhamd5']?></p>
<a href="logout.php">Logout</a>

logout.php


<?php
    session_start();
    unset($_SESSION['nome']);
    unset($_SESSION['senha']);
    unset($_SESSION['senhamd5']);
    unset($_SESSION['logado']);
    session_unset();
    session_destroy();
    header("location: index.php");
?>

Elaborado por Mateus Schwede
ubsocial.github.io