Seguinte bruxos, estou com um probleminha que ta causando baguncinha. Fiz um codigo de sessão, e aparentemente ta tudo OK, mas se eu digitar o URL do script da pagina privada ela é acessada normalmente sem estar logado. Segue o abaixo os codigos.
require_once "functions_prototipo.php";
//require_once "navBar.php";
require_once "conexaoBD.php";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
try
{
$usuario = '';
$senha = '';
$connecting = conectaAoBD();
if(isset($_POST['login']) and $_POST["login"] != ''){
$usuario = filtraEntradaForm($_POST["login"]);
} else {
throw new Exception ('Login invalido. Tente Novamente' . $connecting->error);
}
if(isset($_POST['senha']) and $_POST["senha"] != ''){
$senha = filtraEntradaForm($_POST["senha"]);
} else {
throw new Exception ('Senha invalida. Tente Novamente'. $connecting->error);
}
//Chamando
//seguinte mano
loginUsuario($usuario, $senha, $connecting);
}
catch (Exception $e)
{
http_response_code(400);
$msgErro = $e->getMessage();
echo $msgErro;
}
}
function filtraEntradaForm($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
function loginUsuario($login, $senha, $mysqli)
{
$SQL = "
SELECT Login, Senha
FROM usuario
WHERE Login = ?
";
$stmt = $mysqli->prepare($SQL);
$stmt->bind_param('s', $login);
$stmt->execute();
$stmt->store_result();
// PEGA OS CAMPOS DOS SELECTS E INSERE EX: SELECT DO ID vai salvar no $idUsuario
$stmt->bind_result($loginSelect, $senhaSelect);
//VAI RECEBER O RESULTADO DA CONSULTA
$stmt->fetch();
//SE RESULTADO FOR EXATAMENTE IGUAL A 1
if ($stmt->num_rows == 1)
{
//COMPARA A SENHA Q TA VINDO DO MODAL COM A DO BD
if ($senha == $senhaSelect)
{
// Senha correta
// Armazena dados úteis para confirmação de login
// em outros scripts PHP
//SALVA OS DADOS Q VEIO DO BANCO EM VARIAVEIS DE SESSAO
session_start();
$_SESSION['senha'] = $senhaSelect;
$_SESSION['login'] = $loginSelect;
header("Location: cadastroFuncionario.php");
// Sucesso no login
return true;
}
else
{
echo"<script language='javascript' type='text/javascript'>alert('Login e/ou senha incorretos');</script>";
return false;
}
}
else
{
return false;
}
}
function checkUsuarioLogado($mysqli)
{
// SE VARIAVEL DE SESSAO USUARIO E DE SENHA TIVER COM ELEMENTOS NAO ENTRA NO IF
if (!isset ($_SESSION['senha'], $_SESSION['login']));
//VARIAVEIS DO PHP RECEBE O VALOR DAS VARIAVEIS DE SESSAO FEITO NO SELECT DA FUNÇAO ANTERIOR E ARMAZENADO
//PUDE PERCEBER AQ Q $idUsuario é NO NOSSO CASO O EMAIL os 2 CAMPOS DISPONIVEIS PARA LOGAR NA A.R (AREA RESTRITA) $idUsuario = $_SESSION['idUsuario'];
$newSenha = $_SESSION['senha'];
$newLogin = $_SESSION['login'];
// VAI BUSCAR NO BANCO DE ACORDO COM A VARIAVEL $idUsuario no BIND_PARAM ABAIXO NO NOSSOCASO SERIA O EMAIL..
$SQL = "
SELECT SENHA
FROM Usuario
WHERE Login = ?
";
$stmt = $mysqli->prepare($SQL);
$stmt->bind_param('s', $newLogin);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows == 1)
{
$stmt->bind_result($senhaSelect2); //$senhaHash recebe o RESULTADO DO SELECT -SenhaHash-
$stmt->fetch();
//RECEBE O QUE VEIO DE $senhaHash
$loginStringCheck = $senhaSelect2;
//COMPARA COM A FUNçÃO Q VEIO DA FUNçÃO DE SESSAO
if ($loginStringCheck == $newSenha)
return true;
}
return false;
}
function checkUsuarioLogadoOrDie($mysqli)
{
if (!checkUsuarioLogado($mysqli))
{
$mysqli->close();
header("Location: index.php");
die();
}
}