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

Session não permanece aberta


Vinny789

Pergunta

Paz galera, blza?

Seguiiinte... Estava tendo problemas, quanto a if para mostrar se esta logado ou não logado, de tanto bater a cabeça, fiz o seguinte...

PS.: Esse If é do tipo quem dá alguma regalias a usuários cadastrados "Ex.: mostrar o preço dos produtos".

<?php
session_start();
if( isset( $_SESSION['dados'] ) ) {
   $dados = $_SESSION['dados'];
   $emailverifica  = $dados['email'];
   $nivel_acesso  = $dados['nivel_acesso'];
} else {
   $dados = false;
}
?>

Tinha até um problema, quanto ao topo.php que não alterava de acordo com o nivel que deveria ser passado pela session,

mas ai, fizemos o seguinte, ao invés de usarmos o codigo acima em várias páginas que vinham para index.php através de "querystring"

através de include, colocamos o mesmo na página index.php, logo o primeiro comando, até ai beleza...

O topo.php comecou a funcionar de acordo com o nivel "entendemos que a session anteriormente estava sendo carregada após o include do topop.php"

Mas agora acontece uma coisa estranha, logamos e ele mostra a página index.php?id=principal personalizada com os dados de acordo com a session, até ai beleza...

Porém qundo clicamos em index.php?id=quesomos ele não mostra a session, na realidade ele não esta carregando a session, o q everia ocorrer para mosrar personalizada

PS.: Fizemos o teste após o login direcionar para QUEM SOMOS e assim funciona certo, mas quando voltamos para PRINCIPAL, mesmo ERRO.

O que poderia estar ocorrendo, saberia me dizer?

Paz

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Bom dia, vinny.

Com certeza algum erro de montagem de sua página.

Como anteriormente para o mesmo assunto (acho que você está abrindo vários post do mesmo assunto sem resolver totalmente), vimos que seu include estava posterior.

Desta vez, possivelmente pode estar acontecendo algo parecido.

Antes de usa a variável $_SESSION para executar alguma tarefa, verifique se ela está recebendo valor,

algo do tipo

$recebe = $_SESSION["recebe"];

PRINT"Recebe = $recebe";

Assim você irá eliminando partes de erro.

Não é algo profissional, mas como precisa se familiarizar-se, precisa adquirir confiança em seu código;

Depois você pode usar o IsSet, e assim por diante.

Mas você passar pedaço de seu código e falar que não está funcionando, de nada adianta, porque o código acima está correto, o que não sabemos e todo de seu código se eles estão corretos.

Exemplo você cria um código, que precise chamar a SESSION, e abaixo você descreve a SESSION.

Este código não vai funcionar, porque na ocasião em que o PHP foi lido, não existia tal dado.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Prezado,

já tive um problema parecido.

O erro está em utilizar variáveis locais com mesmo nome de variáveis de sessão.

Quando register_globals = on está ligado, ele faz essa lambança, nos permitindo usar os índices do array $_SESSION como variáveis locais.

A solução seria renomear as variáveis de sessão ou a variável local ou melhor, desligar o register_globals = off

Faça um teste renomeando as variáveis de sessão. Dessa forma:

<?php
session_start ();
if (isset ( $_SESSION ['DADOS'] )) {
    $dados = $_SESSION ['DADOS'];
    $emailverifica = $dados ['email'];
    $nivel_acesso = $dados ['nivel_acesso'];
} else {
    $dados = false;
}
?>

Abraço

Editado por Romero Dias
Link para o comentário
Compartilhar em outros sites

  • 0

aproveitando o tópico aberto queria falar uma outra coisa de sessions, quando eu tava criando minha página no servido local(localhost) as sessions funcionavam perfeito, mas quando eu mandei pro servidor online, depois de eu mandar uma mensagem na página, a session apagava, até mesmo sem mandar a mensagem. Qual o erro?

@ se eu montar um sistema de login, e colocar esse código para proteger a página:

<?php

session_start ();

if (isset ( $_SESSION ['DADOS'] )) {

$dados = $_SESSION ['DADOS'];

$emailverifica = $dados ['email'];

$nivel_acesso = $dados ['nivel_acesso'];

}

?>

se 2 pessoas usarem meu sistema, e se eu conseguir logar em uma página, eu tanbém estarei logado na outra? Se não, por quê?

Link para o comentário
Compartilhar em outros sites

  • 0

Falae povo, é algm problema meio maluko, mas não sei qual é.. para simplificar...

Se eu efetuo o login, na página principal onde inicialmente mostra os daddos "coretamente e funcionando" eu aperto F5 "atualizar, ele zera a session.

Acredito que agora esteja mais fácil não é?? rs

LOGIN.php

<?php

$erro = "";

if(getenv("REQUEST_METHOD") == "POST") {

    $email  = $_POST["Email"];
    $senha = $_POST["Senha"];

    if ( get_magic_quotes_gpc() ) {
        $email  = stripslashes($_POST["Email"]);
        $senha = stripslashes($_POST["Senha"]);
    }
    $email  = mysql_escape_string($email);
    $senha = mysql_escape_string($senha);
    
    
    $chave = md5( md5(strtolower(trim($email))) . md5(strtolower(trim($senha))) );    
    $senha = md5($senha);
    //coloque seus dados de conexao
    mysql_connect("localhost", "newcampi_user", "2010");
    mysql_select_db("newcampi_banco");
    
    $sql = "SELECT * FROM tabela_usuarios WHERE email = '%s' AND senha = '%s' and chave = '$chave' and nivel_acesso > 0";
    $re = mysql_query(sprintf($sql, $email, $senha));
    $total = mysql_num_rows($re);
    $linha = mysql_fetch_array($re);

    if($total == 1) {
    $dados = array();
    $dados["email"] = ucfirst(strtolower($linha['email']));
    $dados["nivel_acesso"] = ucfirst(strtolower($linha['nivel_acesso']));
    $dados["logado"] = true;
    session_start();
    $_SESSION["dados"] = $dados;
    header("Location: index.php?id=principal"); 
    } else {
        $erro  = "Usuario ou senha invalido";
        $erro .= "<script type=\"text/javascript\">document.getElementById(\"erro\").className = 'visivel';</script>";
    }
}

?>
QUEMSOMOS.php no incio não possui nada, pois ela esta sendo setada como querystring, portanto o codigo q tinha coloquei no index.php
<?
//CONEXÃO
mysql_connect("localhost", "newcampi_user", "2010");
mysql_select_db("newcampi_banco");

//CÓDIGO DE CONSULTA
@$sql = "SELECT * FROM tabela_usuarios WHERE email = '$emailverifica'";
@$resultado = mysql_query($sql) or die ("Não Localizado");
$conta = mysql_num_rows($resultado);
if($conta == 0){
}else{
while($x = mysql_fetch_array($resultado)){

$contato = $x[contato];
$nomefantasia = $x[nomefantasia];
$nivel = $x[nivel_acesso];

echo "$contato";
echo "$nomefantasia";
}
}
?>
PS.: O CODIGO ACIMA FUNCIONADA, QUANDO NÃO ESTAV USANDO A CITAÇÃO DO COMECO DO tópico. Index.php
<?php
ob_start();
session_start();
if( isset( $_SESSION['dados'] ) ) {
   $dados = $_SESSION['dados'];
   $emailverifica  = $dados['email'];
   $nivel_acesso  = $dados['nivel_acesso'];
   echo $_SESSION['dados'];
} else {
   $dados = false;
}
?>

Obrigado desde já e desculpem qualquer coisa...

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...