Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Session

Srs, boa tarde!

Eu acabei de implementar session na minha aplicação. Eu estava trabalhando com $_cookie. Devido essa mudança eu estou com problema de logar no sistema. Como a session gera um código cliptografado, eu tenho uma função que valida se o usuário já existe no banco. Como eu faço para validar que o usuário que está no banco é o mesmo que o da session?

Obrigado! Formulário

<form action="menu/menu.php" method="post">
      <label for="email">Email</label>
      <input type="text" name="email" id="email">
      <label for="password">Password</label>
      <input type="password" name="password">
      <button type="submit">Entry</button>
    </form>

Validação dos valores e dados de acesso.

$connect  = connect();  
  $email    = $_POST['email'];
  $password = $_POST['password'];

  if(check_date_access($email, $password)){
      if(check_access_date($connect, $email, $password)){
            $start_session();     
              global_validation_create_cookie($email);                         
      header("Location: index.php?login=true$user=$email");
      die();      
      }
  } 

function check_access_date($connect, $email, $password){    
    $password = md5($password);
    $user  = dataBase_search_user($connect, $email, $password);        

    if(isset($user) != null) {            
      return true;
    }
    global_validation_fail_access();    
  } 

function global_validation_fail_access(){
    header("Location: ../index.php?accessfail=true");
    die();   
  }

  function global_validation_create_cookie($email){
    return setcookie("user_logged", $email, time() + 60);
  }

  function global_validation_user_logged($email){
    if(isset($_SESSION['user_logged'])){
      return true;
    }
    return false;
  }

  function global_validation_user_cookie(){
    return $_COOKIE['user_logged'];
  }
3 respostas

Oi Leandro, pelo o que eu estou vendo você está critpografando em md5 o usuario na sessão, certo?

Basta você, ao resgatar seu usuario do banco, usar a mesma criptografia e comparar. Se os dados forem os mesmos, critpografando também serão os mesmos =)

Oi André, tudo bem?

Na verdade eu estou usando o md5 para converter a senha do usuário. Eu penso que o meu problema é o seguinte:

Eu estou iniciando a session antes de validade o usuário no banco. Quando eu vou validar o usuario no banco ele está comparando o codigo cliptografado com o codigo do usuário no banco. Tem uma função que eu consiga pegar o código do usuario no banco comverte-lo para o valor da sesson e efetuar a compração?

solução!

Srs, bom dia!

Eu encontrie uma alternativa para trabalhar com session.

<form action="usuario/user.php" method="post">
      <label for="email">Email</label>
      <input type="text" name="email" id="email">
      <label for="password">Password</label>
      <input type="password" name="password">
      <button type="submit">Entry</button>
    </form>
    <a href="usuario/form.php">Cadastro</a>
  </body>
if(check_validation_access($email, $password)){    
    if(check_access_date($connect, $email, $password)){            
      session_start();
      global_validation_create_session($email);
      header("Location: ../menu/index.php?login=true$user=$email");      
      die();
      }
  }
function global_validation_create_session($email){
    return $_SESSION['user_logged'] = $email;
  }

session_start();    

  if(array_key_exists('login', $_GET)) {
    $email = global_validation_take_url_information($_GET['login'], 5);        

    if(global_validation_user_session($email)){
      echo "Bem vindo! ". $email; 
      goToIndex($email);
    }else{
      global_validation_fail_access();  
    }

  }else if($_SESSION['user_logged']){
     $email = $_SESSION['user_logged'];
     echo "Bem vindo! ". $email; 
     goToIndex($email);
  }else{
    global_validation_fail_access();    
  }    

<body>          
      <nav>
        <ul>
          <li>
            <form action="../marca/form.php" method="post">              
              <input type="hidden" name="email" value=<?=$email?> id="email">              
              <a href="../marca/form.php"><button type="submit">Marca</button></a>
            </form>
          </li>
          <li>
            <form action="../global/logout.php" method="post">
              <input type="hidden" name="logout" value="true">               
              <a href="#"><button type="submit" class="btn">Logout</button></a>
            </form>
          </li>          
        </ul>
       </nav>              
    </body>

<?php 
  include('validation.php');
  session_start();

  if($_POST['logout']) {    
    logout();    
  }  
?>

function logout(){
    unset($_SESSION['user_logged']);
    global_validation_logout();   
  }