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
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));
<?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");}
?>
<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>
<?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>
<?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>
<?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>
<?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