Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

josenilson

Startando um Sessão

Recommended Posts

olá pessoal, tenho um sistema de login onde ele valida o login a senha e o nível do usuário, estou tentando criar uma logica para que cada nível especifico direcione para a sua pagina tipo nível 1 = desktop1.php nível 2 = desktop2.php, bem andei pesquisando sobre sessões e estou tentando montar uma pagina para validar os níveis de acesso mas não esta dando certo, ao inciar a sessão nível.

Tenho a pagina logar.php esta recebe os valores do formulário, e ao final dela estou direcionando para a pagina nivel.php, nesta eu quero trazer a sessão nivel e de acordo com o mesmo criar um if para cada nível, algum por favor me ajude, muito obrigado.

pagina logar.php

<?php
include "conexao.php";
 
session_start();
 
if(isset($_POST['logar'])){
    @$usuario = trim(strip_tags($_POST['usuario']));
    @$senha = trim(strip_tags($_POST['senha']));
    @$nivel = trim(strip_tags($_POST['nivel']));
}
 
unset($_SESSION['usuario'], $_SESSION['senha'], $_SESSION['nivel']);
$errorMsg = "";
 
// faz a verificação somente pelo usuario; a senha e o nível serão feitos mais à frente
$select = "SELECT * FROM login WHERE usuario=:usuario";
 
try{
    $result = $conexao->prepare($select);
    $result->bindParam(':usuario', $usuario, PDO::PARAM_STR);
    $result->execute();
    $contar = $result->rowCount();
    
    // se não encontrou resultado, é porque o usuário não existe
    if($contar < 1){
        $errorMsg = "Usuário não existe.";
    }else{
        $dadosBd = $result->fetch(PDO::FETCH_ASSOC);
        
        // verifica se senha e nivel estão corretos, pois na consulta foi verificado apenas o usuário
        if($senha != $dadosBd["senha"]){
            $errorMsg = "Senha incorreta.";
        }else if($nivel != $dadosBd["nivel"]){
            $errorMsg = "Nível incorreto.";
        }
    }
    
    // se $errorMsg estiver vazio é porque não deu erro, então pode criar a sessão normalmente
    if(empty($errorMsg)){
        $_SESSION['usuario'] = $dadosBd['usuario'];
        $_SESSION['nivel'] = $dadosBd['nivel'];


			 header("Location: nivel.php");
		
        exit;
		
    }else{
        echo "
            <META HTTP-EQUIV=REFRESH CONTENT='0; URL=index.php'>
            <script>
                alert('".$errorMsg."');
            </script>
        ";
    }
}catch(PDOException $e){
    echo $e;
}

?>

a pagina nível ainda não estar com os if pois só estou tentando se deu certo trazer a sessão nível.


<?php

session_start();

$nivel = $_SESSION['nivel'];

echo "<br /> ".$nivel;

?>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está retornando algum erro?

boa tarde Teixeira,

então não retorna erro algum tipo assim acho que a sessão não esta iniciando na pagina logar.php

a pagina nível fica em branco.

pior que isso só esta acontecendo quando eu coloquei o projeto no servidor web no servidor local esta funcionando.

Preciso levar o valor de $_SESSION["nivel"] para outra pagina no caso a pagina de nível.php

onde vou direcionar para outra pagina de acordo com o nivel.

Preciso levar o valor de $_SESSION["nivel"] para outra pagina no caso a pagina de nível.php

onde vou direcionar para outra pagina de acordo com o nivel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Remova os caracteres @ que você adicionou para omitir mensagens do PHP e habilite a exibição de errors/warning nos dois arquivos adicionando estas duas linhas bem no início de cada um (antes mesmo do include):

<?php
ini_set("display_errors", 1);
error_reporting(E_ALL|E_STRICT);

Caso não veja nenhuma mensagem, comente a linha que faz o redirecionamento (header...) e teste novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson, obrigado pela ajuda, então fiz o que você disse retirei o @ inserir o código acima da pagina e comentei o header . ficou assim

<?php
session_start();
?>

<?php
ini_set("display_errors", 1);
error_reporting(E_ALL|E_STRICT);

include "conexao.php";
 

 
if(isset($_POST['logar'])){
    $usuario = trim(strip_tags($_POST['usuario']));
    $senha = trim(strip_tags($_POST['senha']));
    $nivel = trim(strip_tags($_POST['nivel']));
}
 
unset($_SESSION['usuario'], $_SESSION['senha'], $_SESSION['nivel']);
$errorMsg = "";
 
// faz a verificação somente pelo usuario; a senha e o nível serão feitos mais à frente
$select = "SELECT * FROM login WHERE usuario=:usuario";
 
try{
    $result = $conexao->prepare($select);
    $result->bindParam(':usuario', $usuario, PDO::PARAM_STR);
    $result->execute();
    $contar = $result->rowCount();
    
    // se não encontrou resultado, é porque o usuário não existe
    if($contar < 1){
        $errorMsg = "Usuário não existe.";
    }else{
        $dadosBd = $result->fetch(PDO::FETCH_ASSOC);
        
        // verifica se senha e nivel estão corretos, pois na consulta foi verificado apenas o usuário
        if($senha != $dadosBd["senha"]){
            $errorMsg = "Senha incorreta.";
        }else if($nivel != $dadosBd["nivel"]){
            $errorMsg = "Nível incorreto.";
        }
    }
    
    // se $errorMsg estiver vazio é porque não deu erro, então pode criar a sessão normalmente
    if(empty($errorMsg)){
        $_SESSION['usuario'] = $dadosBd['usuario'];
        $_SESSION['nivel'] = $dadosBd['nivel'];
	
	
		
		//header("location: nivel.php");
		
		
		    exit;
		
    }else{
        echo "
            <META HTTP-EQUIV=REFRESH CONTENT='0; URL=index.php'>
            <script>
                alert('".$errorMsg."');
            </script>
        ";
    }
}catch(PDOException $e){
    echo $e;
}

?>

<?php

?>

quando atualizei a pagina veio essas mensagem de erros,

Warning: Unknown: open(/var/lib/php/session/sess_sv02igvqq9k9dejqiro3afd843, O_RDWR) failed: Permission denied (13) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

sera que tenho que alterar alguma coisa no domínio ? ou na hospedagem ?

eu uso a locaweb

Compartilhar este post


Link para o post
Compartilhar em outros sites
Por padrão, os dados da sessão são salvos em arquivos no servidor. Por algum motivo, seu sistema está sem permissão para criar estes arquivos (caminho /var/lib/php/session/), e por este motivo não consegue salvar os dados na sessão, ou seja, ela fica sempre vazia.


Se for hospedagem compartilhada, acho que você precisa entrar em contato com a empresa que te fornece o serviço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Negrito
      Olá,
       
      Estou quebrando a cabeça com o recurso Session_OnStart , pois eu gostaria que algumas paginas/arquivos .asp tivessem exceções.
       
      Criei o Global.ASA com o seguinte contexto:
       
      <SCRIPT RUNAT=Server Language="VBScript">
      Sub Session_OnStart
        startPage = "/default.asp"
        currentPage = Request.ServerVariables("SCRIPT_NAME")
        If strcomp(currentPage,startPage,1) then
          Response.Redirect("/default.asp")
        End If
      End Sub
      </SCRIPT>
       
      Ele funciona perfeitamente, quando tento acessar qualquer pagina ou subdiretorio diretamente pela URL, ele me joga para a pagina inicial.
       
      Porem, eu gostaria de ter exceções em alguns diretorios e paginas .ASP , onde eu gostaria de liberar o acesso direto ao digitar a URL.
       
      Alguem sabe me informar se é possivel ? 
       
      Obrigado.
       
       
    • Por k9studio
      Olá meus Amigos,
       
      Estou tendo dificuldades em eliminar dados repetidos de uma session
      é um sisteminha de pesquisa de domínios com array
      quero eliminar quando já tiver um nome na session, não deixar gravar outro
      aguem pode ajudar
      veja como está  
      Array ( [0] => Array ( [type] => register [domain] => testeteste.com.br [regperiod] => 1 ) [1] => Array ( [type] => register [domain] => testeteste.com [regperiod] => 1 ) [2] => Array ( [type] => register [domain] => testeteste.net.br [regperiod] => 1 ) [3] => Array ( [type] => register [domain] => testeteste.com.br [regperiod] => 1 ) [4] => Array ( [type] => register [domain] => testeteste.com [regperiod] => 1 ) [5] => Array ( [type] => register [domain] => testeteste.net.br [regperiod] => 1 ) ) Desde já muito obrigado a todos
    • Por Alberto Nascimento
      Estou tendo problemas de acesso ao Session, onde quando realizo login via computador, consigo "pegar" os dados que foram armazenados na sesion, mas quando utilizo o sistema de login no telefone ( android, por exemplo ) a session não esta conseguindo carregar os dados do usuário logado e exibir na página seguinte.
       
      Outra coisa que observei é que não consigo trabalhar com session em pastas diferentes, isso é normal? Veja só:
       
       
      Utilizando esta estrutura, não consigo ter acesso ao session no sistema ANDROID
       
      Agora se ao invés de ser como esta acima, faço uma pasta com todos os arquivos juntos, já consigo "pegar" os dados da session. Isso é normal?
    • Por tony_lu
      Ola pessoal, tenho uma hospedagem de php na hostgator e estou tentando rodar uma rotina com session e esta dando erro, na pagina só tem este código:
       
      <?php  session_start();  ?> E esta dando este erro:
      Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home2/sitewww/public_html/carrinho.php:1) in /home2/sitewww/public_html/carrinho.php on line 2
       
      Alguem pode me ajudar?
    • Por Evandrorussi
      Olá pessoal,
       
      Trabalho com PHP a uns 6 anos e me deparei com um problema de session que nunca ouvi falar, pelo menos não encontrei nada pela internet desse tipo. Tenho um servidor dedicado no Google Cloud e o site tem um sistema de login via session. O problema é que a session funciona aleatoriamente, tem hora que não funciona, o cliente troca de tela e o servidor perde a session e pede pra logar novamente, isso não acontece com todos usuários, comigo por exemplo não acontece.
      O cara que trabalha comigo não ocorria esse problema mas agora começou a acontecer e ele reparou que com guia anônima o problema não ocorre.
       
      Caso alguém pergunte, session_start() está iniciando em todas as páginas.
       
      Abraço
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.