Sessão de login

Boa noite meus caros, tudo bem?
Preciso desenvolver um sistema de login simples em php e se encontra no seguinte estado:

redirect.php

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

validation.php

<?php

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

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

// 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';
	}
}
?>

header.html

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

// Inclui o arquivo de Validation
include('login/verifica_login.php');

//Redirect
include('login/redirect.php');
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
	<meta charset="UTF-8">
    <title>~~</title>

 

	</head>
	
	<body> 
	
	</body>

E as outras páginas linkei com header pra precisar validar o login para ter acesso. Mas a mesma redireciona para a página de login e não mantém a sessão do usuário.
Tentei colocar o session_start(); mas não obtive sucesso.

Obrigado.

2 curtidas

Você tentou colocar o session_start() no arquivo validation.php e no header.php? Lembrando que o session_start() tem que ser a primeira linha do arquivo.

Tente isso e posto o resultado.

[]'s

2 curtidas

Olá amartinss! Desde já agradeço a atenção.

Obrigado pela ajuda, consegui solucionar meu problema adicionando session_start(); nos elementos essenciais para o login.

1 curtida