Sessions with PHP

2

I made a session code in PHP for Login and it is not working, from this error

ERR_TOO_MANY_REDIRECTS

Below are the codes.

<?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();
  }
}
?>
  • NO HTML is as follows

    require_once "conexaoBD.php";
    require_once "functions_prototipo.php";
    require_once "prototipo.php";
    session_start();
    $mysqli = conectaAoBD();
    checkUsuarioLogadoOrDie($mysqli);
    
    ?>
    
asked by anonymous 06.06.2018 / 15:25

1 answer

1

Buddy, just take the semicolon from the function checkUsuarioLogado

function checkUsuarioLogado($mysqli)
{
  if (!isset ($_SESSION['senha'], $_SESSION['login'])); //Só tirar esse ponto e virgula
    return false;
    
06.06.2018 / 17:43