2
I made a session code in PHP for Login and is not working, do this error
ERR_TOO_MANY_REDIRECTS
Below follows the codes made.
<?php
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;
}
}?>
<?php
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: faleConosco.php");
// Sucesso no login
return true;
}
else
{
// Senha incorreta
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']));
return false;
//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['loginString'];
$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();
session_start();
//RECEBE O QUE VEIO DE $senhaHash
$loginStringCheck = $senhaSelect2;
//COMPARA COM A FUNçÃO Q VEIO DA FUNçÃO DE SESSAO
if ($loginStringCheck == $loginString)
return true;
}
return false;
}
function checkUsuarioLogadoOrDie($mysqli)
{
if (!checkUsuarioLogado($mysqli))
{
$mysqli->close();
header("Location: index.php");
die();
}
}
?>
HTML is as follows
require_once "conexaoBD.php"; require_once "functions_prototipo.php"; require_once "prototipo.php"; session_start(); $mysqli = conectaAoBD(); checkUsuarioLogadoOrDie($mysqli); ?>
Error seems to be clear: you are redirecting to a page that has another redirect and thus enters an infinite loop. Probably if the last code is from the file
index.php
, if the user is not logged in it will be redirected toindex.php
, if you have not logged in you will be redirected toindex.php
, which if you haven’t logged in will...– Woss
Yeah, that’s where I can’t identify the problem.
– Gabriel
@Andersoncarloswoss, I managed to redirect correctly, but if I type the URL of the private page it opens normally, without having logged in. What can it be???
– Gabriel