Ir para conteúdo
Fórum Script Brasil
  • 0

Sessão de Nivel


crazySerk

Pergunta

Galera seguinte, quando o usuario loga no meu sistema ele grava o nivel em uma sessão ( puxa do BD o numero do nivel )

até ai OK, porém recentemente ele não está reconhecendo o nivel na bd, eu faço a mudança por exemplo: coloco no bd nivel = 1 ele continua aparecendo no site o nivel = 2...

o que poderá ser?

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Esse é meu arquivo que checa o LOGIN, está ok , está gravando as sessoes necessarias e tudo mais, mas a questão é que, se eu mudar a sessão na minha BD por exemplo colocando ( 3 ) ele não está atualizando ai nessa sessao continua o valor que tinha colocado no inicio ( no caso é 1 ).

<?php
include("config.php");

//Recebendo os dados do formulário
$login = isset($_POST["login"]) ? addslashes(trim($_POST["login"])) : FALSE;
$senha = isset($_POST["senha"]) ? md5(trim($_POST["senha"])) : FALSE;

/*$login = $_POST["login"];
$senha = $_POST["senha"];*/

$sql = "SELECT * FROM usuarios WHERE login = '$login' AND senha = '$senha'";
$rs = mysql_query($sql);

//if(mysql_num_rows($rs) == 1) {
    $user = mysql_fetch_array($rs);
    //conferindo o login e senha para segurança
    if($login == $user['login']){
        if ($senha == $user['senha']) {
            $usuario = $_POST["login"];
            
            $resultado = mysql_fetch_assoc(mysql_query("SELECT * FROM usuarios"));

            //criando a sessão
            $_SESSION["usuario"] = $usuario;
            $_SESSION["nivel"]= $resultado["nivel"];
            $_SESSION["empresa"]=$resultado["empresa"];

            //depois que criarmos a sessão, 
                        //vamos redirecionar para a página privada
            header("Location: index.php");
            exit;
            } // if login
        } // if senha
        else {
            header("Location: login.php?erro=1");
            exit;

        } // else
    
//}// mysql
?>
Essa aqui é a verificação que faz dos acessos...:
<div align="center"><strong>Area vendas</strong><br />
          <?php 
          if ($_SESSION['nivel'] >= 1)
          {
          ?>
        </div>
      <p align="center"><a href="?page=pessoafisica"><img src="images/digitacao.png" alt="Digita&ccedil;&atilde;o" width="150" height="50" border="1" longdesc="#" /></a></p>
      <p align="center"><a href="?page=pesquisar_proposta"><img src="images/bt_consultar.png" alt="Consultar" width="150" height="50" border="1" longdesc="#" /></a></p>
      <p align="center"><img src="images/bt_crm.png" alt="CRM" width="150" height="50" border="1" longdesc="#" /></p>
            <?
            }
            ?>    </td>
    <td width="177"><p align="center"><br />
      <br />
    </p>
      <p><br />
        <?
          if ($_SESSION['nivel'] >= 2)
          {
          ?>
        </p>
      <p align="center"><strong>Area para Monitor</strong><br />
      </p>
      <div align="center">Montagem</div>
      <p>
        <?
            }
            ?>
      </p>
    <p>&nbsp;</p></td>

acho que está ok .. :)

Link para o comentário
Compartilhar em outros sites

  • 0

if ($_SESSION['nivel'] >= 1) todos os niveis vão estar aqui tambem.. pois tudo é maior que 1

coloque

if ($_SESSION['nivel'] == 1) ai sim só sera o nivel 1

if ($_SESSION['nivel'] == 2) para o 2

Link para o comentário
Compartilhar em outros sites

  • 0

Jissa obrigado pela explicação porém acho que não expliquei direito, mesmo eu mudando no banco de dados o nivel do usuario ( depois vou no meu site e clico para deslogar= destruir as sessões e depois logando novamente) ele acessa com o mesmo nivel de acesso anteriormente e não está mudando.

( No caso ai da comparação de nivel é assim mesmo, porque? se o usuario for administrador ele tem o acesso > que 1 ai mostra esse painel, e se o usuario tiver apenas 1 vai mostrar e no restante é a mesma coisa .. essa comparação creio que esteja ok, o problema está nas Sessões que não estão sendo atualizada... )

Por via das duvidas abaixo está a minha opcao de DEslogar:

<?
  ob_start();
  //INICIALIZA A SESSÃO
  session_start();
  
  //DESTRÓI AS SESSOES
  unset($_SESSION["usuario"]);
  unset($_SESSION["empresa"]);
  unset($_SESSION["nivel"]);
  session_destroy();
  
  //REDIRECIONA PARA A TELA DE LOGIN
  Header("Location: login.php");
?>

Link para o comentário
Compartilhar em outros sites

  • 0

ainda acho que é no if que ta pegando

se colocar nivel dois ele vai fazer o primeiro if que 2 é maior ou igual (>=) que 1

ou seja qualquer nivel entraria neste if

tenta colocar o == 1 para o admin e >= 2 para o monitor só para testar não perdera nem 1 minuto na alteração e teste

Link para o comentário
Compartilhar em outros sites

  • 0

muito estranho,

colocou o session_start() no inicio? (deve estar se não nem apareceria as sessões)

mas para certeza, coloca no inicio antes do if um echo para ver o que vem nas sessions

echo "Nivel : ".$_SESSION['nivel'];
echo "Usuario : ".$_SESSION["usuario"];
echo "Empresa : $_SESSION["empresa"];


<div align="center"><strong>Area vendas</strong><br />
          <?php 
          if ($_SESSION['nivel'] >= 1)

Link para o comentário
Compartilhar em outros sites

  • 0

Na realidade eu uso o session_start() dentro da config.php que faço um include nas paginas... mas vou fazer o teste aqui para ver então..

Teste:

quando coloquei o session_start(); deu erro creio que seja por que já possui um dentro do config.

colocando para mostrar minhas Sessoes o usuario e empresa mudaram unico que continua estatico foi o nivel mesmo.

Permanece com o nivel 2 para qualquer usuario que tenho criado.

Link para o comentário
Compartilhar em outros sites

  • 0

muito estranho.. deve ser uma coisa bem simples

uma coisa que vi voce da o select geral sem nenhum where

$resultado = mysql_fetch_assoc(mysql_query("SELECT * FROM usuarios"));

tenta dar para o usuario logado antes de capturar as sessões

$resultado = mysql_fetch_assoc(mysql_query("SELECT * FROM usuarios"));

algo como:

$resultado = mysql_fetch_assoc(mysql_query("SELECT * FROM usuarios where login = '$usuario'"));

//criando a sessão

$_SESSION["usuario"] = $usuario;

$_SESSION["nivel"]= $resultado["nivel"];

$_SESSION["empresa"]=$resultado["empresa"];

Link para o comentário
Compartilhar em outros sites

  • 0

que bom que deu certo,

falei que era uma coisa simples.. que a gente pensa sempre que as session estão erradas,

sempre que tiver duvidas, se o sql esta certo, se localiza certo, coloque o echo assim da para testar a pesquisa no phpmyadmin, ver se esta Ok e exibindo ve exatamente o que o sistema esta fazendo

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...