Problems with Login Cookies

0

In the login page the user sends the form with his login data, registers the data in cookies and redirects to another page. But I am suffering problem if the user logs out, I wanted to delete the cookies, in the login page I have a verification if the cookies exist it automatically redericiona for a page where it does the data verification (same page where I register the cookies). But for this to work it would have to delete this cookie so that if it did not exist it would have to write the data back into the form. Follow Code:

<!DOCTYPE html>
<?php

#PAGINA DO FORMULARIO DE LOGIN


    include "seguranca/banco/ff_conexao_banco.php";
    include "componentes/php/ff_operacaobd_php.php"; #inclui a pagina operation nas paginas administrativas!
    include "componentes/php/ff_expressoes_php.php"; #inclui a pagina das validações de expressao nas paginas do front-end!
    include "componentes/php/ff_mensagens_php.php"; #inclui a pagina safedelete nas paginas administrativas!
  #verifica os dados!
    if(isset($_COOKIE['lembrarUsuario'])){
        $usuarioCookie = base64_encode($_COOKIE['lembrarUsuario']);

    }else{
        $usuarioCookie==NULL;
    }

    if(isset($_COOKIE['lembrarSenha'])){
        $senhaCookie = base64_encode($_COOKIE['lembrarSenha']);
    }else{
        $senhaCookie==NULL;
    }
  # se os dados existem ele manda pra pagina de verificação
    if($usuarioCookie AND $senhaCookie){
        header("location: seguranca/autenticacao/ff_login_autenticacao.php?usuarioCookie=$usuarioCookie&senhaCookie=$senhaCookie");




?>


    <?php
    }else{
    ?>
    <html lang="pt-br">
        <head>
            <title>Floricultura Filippi - Pedidos</title>
            <meta name="author" content="Gabriel Filippi, Rhuan Carvalho, Bruna Campioli, Melissa Possamai" />
            <meta name="description" content="Gerenciamento de Pedidos da Floricultura Filippi" />
            <meta name="keywords" content="Pedidos, entrega, floricultura filippi" />
            <meta charset="utf-8" />
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1">
            <link rel="icon" href="layout/imagens/favicon.ico" type="image/x-icon">

            <!-- Bootstrap Core CSS -->
            <link href="componentes/plugins/bootstrap/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">

            <!-- CSS PADRÃO DO TEMPLATE -->
            <link href="layout/css/template_default.css" rel="stylesheet">

            <!-- Custom Fonts -->
            <link href="componentes/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">

            <!--  CSS Gabriel, Rhuan, Bruna, Melissa-->
            <link href="layout/css/ff_style_frontend.css" rel="stylesheet" type="text/css">

            <!-- jQuery -->
            <script type="text/javascript" src="componentes/plugins/jquery/dist/jquery.min.js"></script>


            <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
            <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
            <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><scriptsrc="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
            <![endif]-->
        </head>
        <body>
          <div class="container">
            <div class="row">
              <div class="col-sm-8 col-sm-offset-2 text " style="text-align: center;">
                <img src="layout/imagens/logo.png" class="logo">
              </div>
              <div class="col-md-4 col-md-offset-4">
                <div class="login-panel panel panel-default">
                  <div class="panel-heading painel_login">
                      <h2>Login!</h2>
                      <h5>Entre com seu nome de Usuário ou E-mail e Senha:</h5>
                  </div>
                  <div class="panel-body painel_login">
                    <form name="frmlogin" method="POST" action="index.php?folder=seguranca/autenticacao/&file=ff_login_autenticacao&ext=php">
                      <fieldset class="fieldset_login">

                          <?php

                            if(isset($_GET['folder'])&&isset($_GET['file'])&&isset($_GET['ext'])){
                              if(!include $_GET['folder'].$_GET['file'].".".$_GET['ext']){
                                echo "<h1>Página não encontrada</h1>";
                              }else{
                              ?>
                                <script>
                                    $(document).ready(function() {
                                        $('.footerfront').css('bottom',"-95px");
                                    });
                                </script>
                              <?php
                              }
                            }
                          ?>
                        <div class="form-group">

                          <input class="form-control" type="text" name="txtusuario" maxlength="70" placeholder="E-mail ou Usuario"  autofocus>
                        </div>
                        <div class="form-group">
                          <input class="form-control" type="password" name="pwdsenha" maxlength="32" placeholder="●●●●●●●●●●●●"  >
                        </div>
                        <div class="checkbox">
                          <label>
                              <input type="checkbox" name="chkusuario" value="lembreme">Lembre-me
                          </label>
                        </div>
                        <!-- Change this to a button or input when using this as a form -->
                        <button type="submit" class="btn btn-lg btn-success btn-block" name="button">Login!</button>
                      </fieldset>
                    </form>
                  </div>
                </div>
              </div>
            </div>
          </div>
          <footer style="background-color: #e4e1e1 !important;" class="footerfront">
            <?php
              $datacopy = date('Y');
            ?>
            <div class="row" style="margin-right: 0px;   margin-left: 0px;">
              <div class="col-lg-6">
                <p class="direitos_autorais">© Copyright <?php echo $datacopy; ?> - <a href="http://www.floriculturafilippi.com.br/" target="_blank" >Floricultura Filippi</a>. Todos os direitos reservados. - <a href="_licencas/loader.php">Licenciamento</a></p>
              </div>
              <div class="col-lg-3">
                <span class="fa fa-whatsapp"></span>
                <b style="text-align: right;"> (47) 99218-3829</b>
              </div>
              <div class="col-lg-3">
                <span class="fa fa-phone"></span>
                <b> (47) 3439-1090</b>
              </div>
            </div>
            <!-- /.row -->
          </footer>
      </body>
    </html>
    <?php       
    }
    ?>



+++++++++++++++++++++++++++++++++++++++++++++++++++++++
PAGINA ONDE VERIFICA OS DADOS E TBM REGISTRA OS COOKIES
+++++++++++++++++++++++++++++++++++++++++++++++++++++++

<?php
# se dados da cookie existir armazena na variavel
if(isset($_GET["usuarioCookie"])){
    include "../banco/ff_conexao_banco.php";
    $p_usuario = base64_decode($_COOKIE['lembrarUsuario']);
    $p_senha = base64_decode($_COOKIE['lembrarSenha']);
    $hash_senha = MD5($salt.$p_senha); // criptografar a senha
}else{
  # se nao armazena na variavel os dados do formulario
    $p_usuario = $_POST['txtusuario']; 
    $p_senha = $_POST['pwdsenha'];
    $hash_senha = MD5($salt.$p_senha); 
}
$aviso = "Erro ao se autenticar"; /* TITULO do painel */
$cor = "panel-red"; /* cor do painel */

if($p_usuario==""){
    $msg = buildMessage('senha', 'Usuário');
}else if($p_senha==""){
    $msg = buildMessage('senha', 'Senha');
    }else{
        $sql_sel_usuario = "SELECT usuarios.id, usuarios.usuario, usuarios.senha, administradores.email, administradores.status, administradores_terceirizados.status, entregadores.status, funcionarios.status, administradores_terceirizados.email, entregadores.email, funcionarios.email, usuarios.permissao FROM usuarios LEFT JOIN administradores ON usuarios.id = administradores.usuarios_id LEFT JOIN funcionarios ON usuarios.id = funcionarios.usuarios_id LEFT JOIN entregadores ON usuarios.id = entregadores.usuarios_id LEFT JOIN administradores_terceirizados ON usuarios.id = administradores_terceirizados.usuarios_id WHERE (administradores.status=0 OR funcionarios.status=0 OR entregadores.status=0 OR administradores_terceirizados.status=0) AND (BINARY usuarios.usuario='".$p_usuario."' OR BINARY administradores.email='".$p_usuario."' OR BINARY administradores_terceirizados.email='".$p_usuario."' OR BINARY funcionarios.email='".$p_usuario."' OR BINARY entregadores.email='".$p_usuario."') AND BINARY usuarios.senha='".$hash_senha."'";
        $sql_sel_usuario_preparado = $conexaobd->prepare($sql_sel_usuario);
        $sql_sel_usuario_preparado->execute();
        $sql_sel_usuario_dados = $sql_sel_usuario_preparado->fetch();
        if($sql_sel_usuario_preparado->rowCount()>0){
            if(isset($_POST["chkusuario"])){
                $p_senha = $_POST['pwdsenha'];
                setcookie("lembrarUsuario",  base64_encode($p_usuario), (time() + (3 * 24 * 3600))); /* duração de 3 dias*/
                setcookie("lembrarSenha",  base64_encode($p_senha), (time() + (3 * 24 * 3600))); /* duração de 3 dias*/
            }
            //guardando as informações dentro de array
            //iniciando sessão
            session_start();
            //armazenamento do id do usuario para sabermos quem está autenticando
            $_SESSION['idUsuario'] = $sql_sel_usuario_dados['id'];
            //armazenamento do usuario para mostrarmos nas telas do back-end
            $_SESSION['usuario'] = $sql_sel_usuario_dados['usuario'];
            //armazenamento da permissão para sabermos o que ele pode acessar
            $_SESSION['permissao'] = $sql_sel_usuario_dados['permissao'];
            //armazenamento do id da SESSÃO para futura implementação de segurança
            $_SESSION['idSessao'] = session_id();
            if(isset($_GET["usuarioCookie"])){
                if($sql_sel_usuario_dados['permissao']==0 AND $sql_sel_usuario_dados['status']==0){
                header('location: ../../sistema/admin/ff_admin.php');
                }else if($sql_sel_usuario_dados['permissao']==1 AND $sql_sel_usuario_dados['status']==0){
                  header('location: ../../sistema/funcionario/ff_funcionario.php');
                    }else if($sql_sel_usuario_dados['permissao']==2 AND $sql_sel_usuario_dados['status']==0){
                      header('location: ../../sistema/admin_terceirizada/ff_admin_terceirizada.php');
                        }else if($sql_sel_usuario_dados['permissao']==3 AND $sql_sel_usuario_dados['status']==0){
                          header('location: ../../sistema/entregador/ff_entregador.php');
                            }else{
                                $msg = buildMessage('usuario_permissao', 'Permissão');
                            }   
            }else{
                if($sql_sel_usuario_dados['permissao']==0 AND $sql_sel_usuario_dados['status']==0){
                header('location: sistema/admin/ff_admin.php');
                }else if($sql_sel_usuario_dados['permissao']==1 AND $sql_sel_usuario_dados['status']==0){
                  header('location: sistema/funcionario/ff_funcionario.php');
                    }else if($sql_sel_usuario_dados['permissao']==2 AND $sql_sel_usuario_dados['status']==0){
                      header('location: sistema/admin_terceirizada/ff_admin_terceirizada.php');
                        }else if($sql_sel_usuario_dados['permissao']==3 AND $sql_sel_usuario_dados['status']==0){
                          header('location: sistema/entregador/ff_entregador.php');
                            }else{
                                $msg = buildMessage('usuario_permissao', 'Permissão');
                            }   
            }

            }else{
                $msg = buildMessage('login', 'Usuário', 'Senha');
            }
    }
?>
<div class="mensagem col-md-12 col-lg-12">
    <div class="panel  <?php echo $cor ?>">
        <div class="panel-heading">
                <?php echo $aviso ?>
        </div>
        <div class="panel-body">
            <p><?php echo $msg;?></p>
        </div>
    </div>
</div>


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PARA EXCLUIR OS COOKIES ESTOU USANDO O SEGUINTE CÓDIGO ABAIXO
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



<?php
    session_start();
    session_unset();
    session_destroy();
    setcookie("lembrarUsuario",  base64_encode($_COOKIE['lembrarUsuario']), (time() - (3 * 24 * 3600)));
    setcookie("lembrarSenha",  base64_encode($_COOKIE['lembrarSenha']), (time() - (3 * 24 * 3600)));
    header ('location: ../../index.php?deslogado=true')
?>
    
asked by anonymous 15.04.2017 / 23:26

1 answer

1

What is causing problems is the base64_encode function returns banned characters in cookie names.

ON THE PAGE WHERE CHECK THE DATA AND TBM RECORDS THE COOKIES

do so:

$base64usuario= base64_encode($p_usuario);
$base64senha= base64_encode($p_senha);
$base64usuario = str_replace(array('=','+','/'),'',$base64usuario);
$base64senha = str_replace(array('=','+','/'),'',$base64senha);

setcookie("lembrarUsuario",  $base64usuario, (time() + (3 * 24 * 3600)), "/");
setcookie("lembrarSenha",  $base64senha, (time() + (3 * 24 * 3600)), "/");
  

Cookie names should consist of ASCII characters.

They can not contain

aspas duplas

espaço em branco

\ @ Ou # \?

Parênteses, colchetes ou chaves

Vírgulas, dois pontos ou ponto e vírgula

sinal de igual (=), sinais maior ou menor que (> <)

Barras ou barras invertidas
  

Cookie values should consist of ASCII characters.

Can not contain:

Caracteres de controle

Caracteres de espaço em branco

Aspas duplas, exceto no início e no final se o valor inteiro for duplamente cotado

Vírgulas

Ponto-e-vírgula

Barras invertidas

Fonts

Mozilla Developer Network

Cookies: HTTP State Management - by Jordan Johnson

    
15.04.2017 / 23:59