Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Saudações pessoal!!
Eu queria ver se alguém pode me tirar uma dúvida simples. Sou iniciante, e estou fazendo meu primeiro sistema de login com meu código, e lendo sobre session fixation, conheci a função session_regenerate_id() para mudança de id de sessão.
Porem, teve uma coisa que não entendi direito, basta eu usar apenas uma vez no meu arquivo de validação de login antes de ser direcionado para o painel ou o certo é usa-la tipo na minha primeira página restrita do painel e pronto?
Só essa dúvida ai mesmo.
Para quem quiser ver meus arquivos:
valida-usuario.php
<?php
include "../connections/pconfig.php";
// PEGA POST DA INDEX
// Verifica se houve POST com usuario e senha
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
header("Location: ../index.php"); exit;
}
?>
<?php$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string(sha1($_POST['senha']));
// Validação do usuário/senha
try{$sql = 'SELECT id, nome, nivel FROM usuarios WHERE (usuario = :usuario) AND (senha = :senha) AND (ativo = 1) LIMIT 1';
$query = $pconecta -> prepare($sql);
$query -> bindValue(':usuario',$usuario,PDO::PARAM_STR);
$query -> bindValue(':senha',$senha);
$query -> execute();
$n_resultados = $query -> rowCount();
}catch(PDOexception $erro){echo 'Usuário não encontrado'.$erro -> getMessage();}
if ($n_resultados !== 1) {
echo 'Login inválido!!';
<a href="../index.php">Voltar</a>'; exit;
} else {
// recupera valores da tabela
$res = $query -> fetchAll(PDO::FETCH_ASSOC);
foreach($res as $res_usuario){
$id = $res_usuario['id'];
$nome = $res_usuario['nome'];
$nivel = $res_usuario['nivel'];
}
}
//SALVANDO OS DADOS DA SESSÃO
// Se a sessão não existir, inicia uma
if (!isset($_SESSION)){ session_start();
// Salva os dados encontrados na sessão
$_SESSION['UsuarioID'] = $id;
$_SESSION['UsuarioNome'] = $nome;
$_SESSION['UsuarioNivel'] = $nivel;
// Redirecionamento
header("Location: ../painel.php?exe=home/home"); exit;
}
?>
home.php
<?php
// RESTRIÇÃO DE CADA PÁGINA DO PAINEL
if (!isset($_SESSION)){ session_start();
$nivel_necessario = 1;
// Verifica se não há a variável da sessão que identifica o usuário
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) {
session_destroy();
// Redireciona o visitante de volta pro login
header("Location: index.php"); exit;
}
}
?> RESTO DA PÁGINA...Carregando comentários...