• Facebook
  • Instagram
[email protected]
Todo Espaço Online
  • Toda Loja
  • Camisetas
    • Todas
    • Bandas
    • Filmes
    • Séries
    • Promoção
    • Só masculinas
    • Só Femininas
  • Canecas
  • Bonés
  • Contato
  • Entrar/Criar Conta
  • Pesquisa
  • Menu Menu
  • 0Shopping Cart
Frete Grátis a partir de 150 (regras)
  Primeira troca justa (regras)
Até 12x no cartão
Tabela de medidas
Curso de PHP, PHP

Sistema de login simples com PHP – Aula 29

Sistema de login simples com PHP

Nenhum produto encontrado nessa seleção.

Com o conhecimento adquirido ao longo de nosso curso de PHP gratuito, já podemos criar um sistema de login simples com PHP. Não vamos utilizar OOP (Object-oriented programming), porque você ainda não viu essa parte da linguagem (será assunto para as próximas aulas), porém, este é um grande desafio para que você teste seus conhecimentos.

Vamos utilizar praticamente tudo visto nas aulas anteriores, eu diria que até um pouco mais. Mesmo assim, vou deixar links para as novidades que aparecerem ao longo desse artigo.

Então vamos lá.

Download

Antes de continuar, se quiser baixar o código descrito neste artigo para acompanhar, ou utilizar:

  • Download sistema_login_simples_php.zip

A pasta está compactada como ZIP, basta descompactar e seguir as instruções desse artigo.

Como funcionará o login simples com PHP?

Nosso sistema de login poderá ser utilizado de duas formas:

  • Bloqueando o arquivo inteiro: Isso significa que o usuário que não estiver logado no sistema, não conseguirá ver o conteúdo do arquivo.
  • Bloquear partes do arquivo: O usuário que não estiver logado poderá ver partes do arquivo, porém, você ainda poderá bloquear partes do que desejar.

Vamos fazer uma verificação na base de dados a cada carregamento de página. Tal consulta irá verificar se os dados do usuário estão corretos e atualizará os dados da sessão PHP, ou seja, se você alterar o nome do usuário na base de dados, esses dados serão atualizados na próxima atualização de página. Porém, se você alterar o usuário ou a senha, o usuário será deslogado imediatamente.

Para a senha, vamos utilizar a função crypt do PHP, que vai criptografar a senha no banco de dados e manter os usuários seguros.

Para fazer isso, vamos dividir nosso sistema de login em alguns arquivos menores, cada um com uma função específica.

Vamos ver como isso funciona na prática.

O banco de dados e a tabela

A primeira coisa que precisamos fazer é criar um banco de dados, uma tabela e um usuário com permissão de acesso a tais dados.

Observação: Se você tiver dúvidas sobre a criação de bancos de dados, dê uma olhada em nossa aula "Crie tabelas e bases de dados no phpMyAdmin".

Crie um banco de dados chamado "sistema_login".

Comando MySQL

CREATE DATABASE `sistema_login` CHARACTER SET utf8;

Crie um usuário chamado "admin_db", com senha "senha_234887", e permissão na base de dados que acabamos de criar.

Comando MySQL

CREATE USER 'admin_db'@'localhost' IDENTIFIED BY 'senha_234887'; 
FLUSH PRIVILEGES;
GRANT
  ALTER,
  ALTER ROUTINE,
  CREATE,
  CREATE ROUTINE,
  CREATE TEMPORARY TABLES,
  CREATE VIEW,
  DELETE,
  DROP,
  EVENT,
  EXECUTE,
  INDEX,
  INSERT,
  LOCK TABLES,
  REFERENCES,
  SELECT,
  SHOW VIEW,
  TRIGGER,
  UPDATE 
ON
  `sistema_login`.* 
TO
  'admin_db' @'localhost';

Crie uma tabela com os seguintes campos:

  • user_id (O ID do usuário, chave primária);
  • user (O usuário para login);
  • user_name (O nome do usuário);
  • user_password (A senha).

Comando MySQL

CREATE TABLE `sistema_login`.`usuarios` (
  `user_id` INT (11) NOT NULL AUTO_INCREMENT COMMENT 'ID do Usuário',
  `user` VARCHAR (255) NOT NULL COMMENT 'Usuário',
  `user_name` VARCHAR (255) NOT NULL COMMENT 'Nome do usuário',
  `user_password` VARCHAR (255) NOT NULL COMMENT 'Senha',
  PRIMARY KEY (`user_id`)
) CHARSET = utf8 ;

O comando MySQL acima mostra os dados dos campos da tabela.

Os arquivos necessários

Agora vamos criar cada arquivo separadamente na seguinte estrutura:

login  
      | config.php
      | redirect.php
      | sair.php
      | verifica_login.php
index.php
login.php

Cada um dos arquivos tem um papel para nosso sistema de login simples com PHP, veja:

  • config.php – Arquivo de configuração geral (variáveis e base de dados);
  • redirect.php – Redireciona para a página de login (não requerido);
  • sair.php – Desloga o usuário;
  • verifica_login.php – Verifica se o usuário está logado;
  • login.php – Formulário de login;
  • index.php – Arquivo para simulação de todos os arquivos que precisarão de login.

Dentro da pasta que disponibilizei para download, ainda existe uma outra pasta chamada "cria-usuarios". Ela contém um simples formulário para gerenciar os usuários na base de dados. Não vou entrar em detalhes sobre ela neste artigo, porém, tudo que existe dentro dela já foi descrito em nosso curso de PHP gratuito.

Agora vamos ver os detalhes de cada arquivo.

Criando um sistema de login simples com PHP

Os arquivos que vou detalhar abaixo estão diretos na raiz da pasta criada, ou seja, index.php e login.php.

index.php

Este arquivo foi criado para testar nosso sistema de login. Ele não poderá ser acessado sem login, portanto, utilizaremos uma linha para incluir o arquivo redirect.php. Quando um usuário que não está logado no sistema tentar acessá-lo, será redirecionado imediatamente para a página de login.

<?php
// Inclui o arquivo de configuração
include('login/config.php');

// Inclui o arquivo de verificação de login
include('login/verifica_login.php');

// Se não for permitido acesso nenhum ao arquivo
// Inclua o trecho abaixo, ele redireciona o usuário para 
// o formulário de login
include('login/redirect.php');
?>

Olá <b><?php echo $_SESSION['nome_usuario']?></b>, <a href="login/sair.php">clique aqui</a> 
para sair.

O cabeçalho dos seus outros arquivos que precisam de login poderão ser uma cópia do código acima.

Caso o arquivo inteiro não precise ser bloqueado, você pode remover a linha:

include('login/redirect.php');

E bloquear a parte que precisar da seguinte maneira:

<?php
// Inclui o arquivo de configuração
include('login/config.php');

// Inclui o arquivo de verificação de login
include('login/verifica_login.php');
?>

<p>Conteúdo livre</p>

<?php if ( $_SESSION['logado'] === true ):?>
	<p>Este conteúdo só estará disponível para usuários logados</p>
<?php endif; ?>

<p>Conteúdo livre</p>

Agora veja o formulário de login.

login.php

O formulário de login é bastante simples. Ele só inclui um pequeno trecho PHP, que será necessário para mostrar erros (caso ocorram) para o usuário.

<?php
// Inicia a sessão
session_start();
?>
<!doctype html>
<html>
	<head>
		<meta charset="UTF-8">
		
		<title>Login</title>
	</head>
	<body>
		<form action="index.php" method="post">
			<table>
				<tr>
					<td>Usuário</td>
				</tr>
				<tr>
					<td><input type="text" name="usuario" required></td>
				</tr>
				<tr>
					<td>Senha</td>
				</tr>
				<tr>
					<td><input type="password" name="senha" required></td>
				</tr>
				
				<tr>
					<td><a href="cria-usuarios/">Criar usuário</a></td>
				</tr>
				
				<?php if ( ! empty( $_SESSION['login_erro'] ) ) :?>
					<tr>
						<td style="color: red;"><?php echo $_SESSION['login_erro'];?></td>
						<?php $_SESSION['login_erro'] = ''; ?>
					</tr>
				<?php endif; ?>
				
				<tr>
					<td><input type="submit" value="Entrar"></td>
				</tr>
			</table>
		</form>
	</body>
</html>

Perceba que não temos muitos segredos no formulário acima, porém, estamos utilizando um formulário para HTTP POST:

  • Como validar formulários em PHP
  • $_POST em PHP

config.php

Este é o arquivo de configuração do nosso sistema de login simples com PHP.

Nele vamos iniciar a sessão e configurar duas variáveis que vamos precisar para verificar se o usuário está logado, ou se ocorreu algum erro durando o login:

<?php
// Inicia a sessão
session_start();

// Variável que verifica se o usuário está logado
if ( ! isset( $_SESSION['logado'] ) ) {
    $_SESSION['logado'] = false;
}

// Erro do login
$_SESSION['login_erro'] = false;
?>

O trecho de código acima contém conteúdo da aula 24:

  • $_SESSION em PHP

Em seguida, vamos configurar nossa conexão com a base de dados:

<?php
/**
 * PDO - Conexão com a base de dados - Aula 28
 * http://www.todoespacoonline.com/w/2014/07/23/pdo-em-php/
 */
 
// Variáveis da conexão
$base_dados  = 'sistema_login';
$usuario_bd  = 'admin_db';
$senha_bd    = 'senha_234887';
$host_db     = 'localhost';
$charset_db  = 'UTF8';
$conexao_pdo = null;

// Concatenação das variáveis para detalhes da classe PDO
$detalhes_pdo  = 'mysql:host=' . $host_db . ';';
$detalhes_pdo .= 'dbname='. $base_dados . ';';
$detalhes_pdo .= 'charset=' . $charset_db . ';';

// Tenta conectar
try {
    // Cria a conexão PDO com a base de dados
    $conexao_pdo = new PDO($detalhes_pdo, $usuario_bd, $senha_bd);
} catch (PDOException $e) {
    // Se der algo errado, mostra o erro PDO
    print "Erro: " . $e->getMessage() . "<br/>";
   
    // Mata o script
    die();
}
?>

O trecho de código acima contém conteúdo da aula 28:

  • PDO em PHP

Agora vamos verificar o login.

verifica_login.php

Este arquivo faz a verificação de várias coisas, por exemplo:

  • Se existe conexão PDO;
  • Se o usuário está vindo do formulário de login ou se já está logado;
  • Se os dados do usuário estão setados e têm valor;
  • Se os dados do usuário estão corretos;

Também vamos fazer a configuração das variáveis da sessão para carregar por todas as páginas necessárias.

Veja por partes:

Verifica a conexão:

// Verifica se estamos conectados ao BD
if ( ! isset( $conexao_pdo ) || ! is_object( $conexao_pdo ) ) {
	exit('Erro na conexão com o banco de dados.');
}

Verifica se os dados estão vindo do formulário de login (HTTP POST) ou se o usuário já está logado ($_SESSION):

// Une $_SESSION e $POST para verificação
if ( isset( $_POST ) && ! empty( $_POST ) ) {
	$dados_usuario = $_POST;
} else {
	$dados_usuario = $_SESSION;
}

Verifica se os dados do usuário têm algum valor; se sim, verifica no banco de dados se os dados estão corretos, e configura as variáveis da sessão:

// Verifica se os campos de usuário e senha existem
// E se não estão em branco
if ( 
    isset ( $dados_usuario['usuario'] ) && 
    isset ( $dados_usuario['senha']   ) &&
  ! empty ( $dados_usuario['usuario'] ) &&
  ! empty ( $dados_usuario['senha']   ) 
) {
	// Faz a consulta do nome de usuário na base de dados
	$pdo_checa_user = $conexao_pdo->prepare('SELECT * FROM usuarios WHERE user = ? LIMIT 1');
	$verifica_pdo = $pdo_checa_user->execute( array( $dados_usuario['usuario'] ) );
	
	// Verifica se a consulta foi realizada com sucesso
	if ( ! $verifica_pdo ) {
		$erro = $pdo_checa_user->errorInfo();
		exit( $erro[2] );
	}
	
	// Busca os dados da linha encontrada
	$fetch_usuario = $pdo_checa_user->fetch();
	
	// Verifica se a senha do usuário está correta
	if ( crypt( $dados_usuario['senha'], $fetch_usuario['user_password'] ) === $fetch_usuario['user_password'] ) {
		// O usuário está logado
		$_SESSION['logado']       = true;
		$_SESSION['nome_usuario'] = $fetch_usuario['user_name'];
		$_SESSION['usuario']      = $fetch_usuario['user'];
		$_SESSION['user_id']      = $fetch_usuario['user_id'];
	} else {
		// Continua deslogado
		$_SESSION['logado']     = false;
		
		// Preenche o erro para o usuário
		$_SESSION['login_erro'] = 'Usuário ou senha inválidos';
	}
}

Observação: Se tiver dúvidas, leia nossa aula sobre estruturas condicionais em PHP.

Pode tomar um tempo para você conseguir entender o que acontece no trecho de código acima, porém, é bastante simples. Apenas leia os comentários e, se tiver dúvidas, verifique as aulas anteriores.

Vamos ver o restante dos arquivos.

redirect.php

Este arquivo simplesmente verifica se o usuário está logado ou não; se não, redireciona para a página de login; se sim, não faz nada:

<?php
if ( $_SESSION['logado'] != true ) {
	header('location: ' . dirname( $_SERVER['PHP_SELF'] ) . '/login.php');
}

Por fim, o arquivo final, sair!

sair.php

O arquivo sair.php simplesmente destrói a sessão e redireciona para a página de login:

<?php
// Inicia a sessão
session_start();

// Destrói a sessão
$_SESSION = array();
session_destroy();

// Redireciona para o login.php
header('location: ../login.php');

Simples assim.

Download

Novamente, recomendo que baixe os arquivos desse aula para estudos posteriores:

  • Download sistema_login_simples_php.zip

Concluindo

Este artigo é voltado para o lado educacional, ou seja, para que você veja como pode juntar partes do que você aprendeu em nosso curso de PHP gratuito e criar um sistema que faça algo útil.

Porém, você pode utilizar os trechos de código e a ideia acima para criar seu próprio sistema de login em PHP.

Ainda vamos avançar muito em PHP, portanto, se você está com dúvidas, não hesite em perguntar nos comentários. Faremos questão de ajudar no que estiver em nosso alcance.

28 de julho de 2014/20 Comentários/por Luiz Otávio Miranda
Tags: Curso de PHP, Login, PHP
Compartilhar isso
  • Share on WhatsApp
https://www.todoespacoonline.com/w/wp-content/uploads/2014/07/sistema-de-login-simples-com-PHP.jpg 1080 1920 Luiz Otávio Miranda http://www.todoespacoonline.com/w/wp-content/uploads/2015/09/teo-logo1.png Luiz Otávio Miranda2014-07-28 21:52:192016-01-16 03:07:15Sistema de login simples com PHP – Aula 29

Site seguro

Sua conexão com o TEO é segura do início ao fim com certificado TLS/SSL. Seus dados estão protegidos aqui.

Compra 100% segura!

A empresa Teo Shop

Teo Shop - CNPJ: 24.409.915/0001-13
Desde 17/03/2016
Av Antonio Constantino Barbosa Filho - 21
Mansinho - Boa Esperança - MG
CEP 37170-000

Atendimento - Segunda a Sexta (8h às 18h)
[email protected]

Links úteis ao usuário/cliente

  • Contato
  • Como usar cupons de desconto
  • Política de Troca, devolução e Envio
  • Política de privacidade
  • Tabela de medidas das camisetas
  • Fotos de clientes com camisetas Teo Shop
  • Avaliações de Clientes
  • Receber novidades e promoções por e-mail
  • Reclame aqui
  • Comprar pelo MercadoLivre

Formas de pagamento

Pagamentos são gerenciados de forma segura pelo MercadoPago, PayPal ou PagSeguro. Você poderá pagar em até 12x no Cartão de Crédito (c/ juros), por Boleto Bancário, ou pelos diversos métodos oferecidos pelas empresas mencionadas. Além da segurança dos seus dados, seu dinheiro também é transferido de forma segura em suas compras conosco.

© Copyright - Todo Espaço Online
  • Facebook
  • Instagram
  • Loja
  • Blog
  • Sobre nós
  • Contato
Voltar ao topo

A teo shop utiliza cookies para melhorar a experiência do usuário. Ao continuar, você concorda com a nossa política de privacidade.


Apenas um alerta!


Todo Espaço Online
Por  GDPR Cookie Compliance
Privacidade

A teo shop utiliza cookies para melhorar a experiência do usuário. Ao continuar, você concorda com a nossa política de privacidade.

Cookies estritamente necessários

O cookie estritamente necessário deve estar sempre ativado para que possamos salvar suas preferências de configuração de cookies.

Se você desabilitar este cookie, não poderemos salvar suas preferências. Isso significa que toda vez que você visitar este site, precisará habilitar ou desabilitar os cookies novamente.