Jump to content
Fórum Script Brasil
  • 0

Sessão de Nivel


crazySerk

Question

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 to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0

Fiz aqui Jissa, mesma coisa...

Criei um novo usuario aqui para fazer o Teste....

Todos estão conectando com o acesso nivel 2, sendo que estou colocando 1, deve ser algum problema quando destroi a sessão não é?

Edited by crazySerk
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...