Ir para conteúdo

POWERED BY:

Arquivado

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

vinicius015

Session não permanece aberta

Recommended Posts

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 preco 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 inves 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa session dados, você está armazenando em um array? Não esqueça de dar um session_start(); em todas as páginas, caso seja carregadas fora do escopo do site.

 

^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paz Gustavo, como tu falou fiz o debug...

 

<?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;

}

?>

e apareceu escrito assim "ARRAY"

 

 

 

Opa André,

 

No caso, todas as páginas são carregas em querystring no index.php

 

 

O que acham que posso estar errando?

 

Falae povo, é algm problema meio maluko, mas nao 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 neh? 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 TOPICO.

 

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paz André, ele desalinhou somente o layout e não mostrou nada...

 

Mas os dados do centro da página que são personalizados aparecem normalmente...

 

POSTEI A IMAGEM PRA VEREM MELHOR...

Imagem Postada

 

Notem que no miolo da página as informações parecem personalizadas, então não teria como falar que não pegou os dados... ou teria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, você está utilizando session_start() em todas as página ou somente na página index.php ?

Coloque no começo da página esse comando

 

ini_set('error_reporting', 'E_ALL');

Atente-se também para as páginas que por ex.:

a quemsomos.php

ta com as tags <? ?>, altere para <?php ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa André, estou usando session start somente no index.php

 

No index ficou assim...

 

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

 

as tags na página quem somos, modifiquei como falou, mesmo assim nao eu certo =/

 

O que poderia ser?

 

Se eu modifico o cabechalho para index.php e coloco assim...

 

<?php
ob_start();
?>

 

e trabalho com o codigo abaixo no topo das outras funciona normalmente...

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

 

O que poderia estar havendo?

 

Agora fiz um teste indo para outras página, o que me parece é q funciona indo até um próximo nivel, depois disso ela cancela a session... estranho =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lembre-se de sempre incluir essa página:

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

na PRIMEIRA linha de todas as outras que utilizam as sessões.

 

Se algum caractere for enviado para o navegador, você não pode mais alterar a sessão.

 

Caso ainda não funcione, eu tenho uma implementação de uma classe para manipular sessões, mas para usar você vai precisar de um pouco de conhecimento sobre orientação a objetos

:seta: http://code.imasters.com.br/index.php?/topic/210-sessoes-e-cookies/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos, já criei 3 tópicos sobre este erro aqui. Comigo acontece a mesma coisa, eu efetuo o login, gravo a session e após alguns minutos a session expira mesmo alterando o tempo default. Também tinha o erro de após logar na página principal qualquer link em que eu clicava ao recarregar a página a session expirava. O problema para os links resolvi assim:

 

Coloque antes de qualquer saida.

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');

header('Last Modified: '. gmdate('D, d M Y H:i:s') .' GMT');

header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');

header('Pragma: no-cache');

header('Expires: 0');

 

Talvez para você as 2 ultimas linhas resolvam. Testa ai e nos diga, e quanto a session expirar após pouco tempo criada se alguem tiver uma sugestao kkkk

Estamos ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desenvolvi um sistema bastante grande (pelo menos para mim) que dependia de sessão - usuário logado o tempo todo.

 

Primeira linha SEMPRE o session_start(); SEMPRE, SEMPRE e SEMPRE.

 

Senão vai funcionar às vezes sim, às vezes não.

 

Segunda linha SEMPRE:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

senão o IE daquela empresa e daquele cara muito legal põe o teco no mundo!

 

No caso da sessão, eu fiz uns arquivos padrão e vai por include ou require_once na primeira linha, assim não tenho que mudar quase uma centena de páginas toda a vez que dá pau.

 

Tentei puxar uns códigos para mostrar aqui, mas meu DW travou :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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