Ir para conteúdo

POWERED BY:

Arquivado

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

Aluno 56765

SESSION não guarda valor.

Recommended Posts

:wacko:

:unsure:

 

Galera,

 

Tô criando um sisteminha em PHP e MySQL mas tô com um problemão...

 

O Sistema tá com problema em guardar as variáveis após o usuário logau e dar um reload na página.

 

Assim ó:

 

- Faço o login normalmente

- Abre a página inicial e mostra as variáveis do sistema nessa página incial

(a página inicial é dividida em 2 frames, logado1.php[menu] e logado2.php[página inicial])

-- até aí tudo certo e o sistema faz tudo bonitinho

- Ao tentar acessar outra página no sistema e exibi-la no lugar de logado2.php o sistema "dá fim" no valor registrado na SESSION

- A SESSION assume os valore do ultimo registro de uma tabela chamda tbusuários que é de onde a SESSION adquire seus valores corretos no login.

 

 

Seria problema para destruir a SESSION?

É problema no MySQL?

Problema em código ou é algo que o PHP/MySQL não consegue fazer?(manter os valores da SESSON após um RELOAD no browser ou musar para outro link/página)

 

Meu código é meio extenso mas posto se pedirem, caso não seja um problema tipo PHP e MySQL não aceitem reload do browser ou algo assim para SESSION)

 

Ajudem... esse é um pedaço de meu projeto final.

 

Valeu.

http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

com certeza trata-se de algum erro lógico

 

se puder, mostre a rotina de autenticação no momento que o logine senha é verificado e a autenticação gravada na variável de sessão

Compartilhar este post


Link para o post
Compartilhar em outros sites

com certeza trata-se de algum erro lógico

 

se puder, mostre a rotina de autenticação no momento que o logine senha é verificado e a autenticação gravada na variável de sessão

 

 

você esta salvando os valores em $_SESSION[]?

Olha o código fonte:

 

Na página inicial o usuário digita seu email e sua senha, o usuário então é logado(através de loginx.php) e na página inicial(logadox.php que tem os frames logado1x e logado2x) são exibidos seus dados registrados através de loginx.php em "SESSION".

Até aí tudo ok...

O problema é que após um reload ou após usar algum link(até mesmo o link que aponta para a própria página logado2x.php) a página perde os dados registrados em SESSION e assume os dados do ultimo registro da tabela "tbusuarios" do MySQL.

 

Algo errado?

 

HEEEEEEELLLLP!!!!!!!!!!!!!!!

 

 

Página: login.php

<?
include "conecta.php"; /*Conecta com o BD MySQL */
ob_start();
session_start();

//RECEBE OS DADOS DO FORMULÁRIO E RETIRA CODIGO MALICIOSO
// Recuperando informações.
   $email = $_POST["email"];
   $senha01 = $_POST["senha"];

// *** SÓ CONTINUA SE O EMAIL EXISTIR, TIVER 6 OU MAIS CARACTERES E @
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@"))
{

// Verificando se as informações estão corretas.
$verifica = mysql_query("SELECT * FROM tbusuarios WHERE email = '$email' AND senha = '$senha01'");

// Condicionando resultado conforme consulta.
// Verifica se retornou algo
$conta = mysql_num_rows($verifica);
if ($conta > 0)
{

$_SESSION['nome'] = mysql_result($verifica,0,"nome");
$_SESSION['idusuario'] = mysql_result($verifica,0,"idusuario");
$_SESSION['email'] = mysql_result($verifica,0,"email");
$_SESSION['nivelusuario'] = mysql_result($verifica,0,"nivelusuario");

$idauxiliar = $_SESSION['idusuario'];

$auxiliar = mysql_query("SELECT * FROM tbusuarios1 WHERE tbusuarios_idusuario = 'idauxiliar'");

$_SESSION['recado1'] = mysql_result($auxiliar,0,"recado1");
$_SESSION['recado2'] = mysql_result($auxiliar,0,"recado2");
$_SESSION['recado3'] = mysql_result($auxiliar,0,"recado3");
$_SESSION['curso'] = mysql_result($auxiliar,0,"curso");
$_SESSION['turno'] = mysql_result($auxiliar,0,"turno");

header("location: logadox.php");
}
else
  {
   echo "Deu erro!!!! Favor voltar e tentar novamente!";
   echo "<form>";
   echo "<input type='button' value=' Voltar '";
   echo "onclick='history.go(-1)'> </p>";
   echo "</form>";
  }
}
ob_end_flush();
?>

Página logadox.php

<head><title></title></head>

<frameset rows="5%,*%" cols="*" border="0" frameborder="0" e framespacing="0">

  <frame src="logado1.php" name="menu">
  <frame src="logado2.php" name="conteudo">

</frameset>
<noframes>
<body></body>
</noframes></html>

Página logado1x.php

<? 
include "conecta.php"; /*Conecta com o BD MySQL */
ob_start();
session_start();

$nome = $_SESSION['nome'];
$nivelusuario = $_SESSION['nivelusuario'];
$idusuario = $_SESSION['idusuario'];
$curso = $_SESSION['curso'];
$turno = $_SESSION['turno'];
?>

<html><head><title></title>
<style type="text/css">
<!--
body {
	background-image: url(imagens/fd2.jpg);
}
body,td,th {
	font-size: 11px;
}
-->
</style></head>

<body>

<center>
  <table width="100%" border="0">
	<tr>
	  <td width="*%"><div align="center"></div></td>
	  <td width="*%">
		<div align="center">
		  <?
		if ($_SESSION['nivelusuario'] = 1)
		{
		echo " | <a href='logado2x.php' target='conteudo'>Inicio</a>";
		$nivelusuariox = $_SESSION['nivelusuario'];
		if ($nivelusuariox == 3) { 
		echo " | <a href='adusuarios.php' target='conteudo'>Administrar usuarios</a>"; 
		}
		echo " | <a href='foto.php' target='conteudo'>Cadastrar foto</a>";
		echo " | <a href='faleconosco.php' target='conteudo'>Fale conosco</a>";
		echo " | <a href='logout.php' target='_top'>LOGOUT</a>";
		
		}
		?>	  
		</div></td>
	  <td width="*%"><div align="center">
	  <? echo "Usuario:" . $nome . "(" . $nivelusuario . "/" . $idusuario . ") - " . $curso . "/" . $turno; ?></div>
	  </td>
	</tr>
  </table>
</CENTER>
</body>
</html>

<? ob_end_flush(); ?>

Página logado2x.php

<? 
include "conecta.php"; /*Conecta com o BD MySQL */
ob_start();
session_start();

$nome1 = $_SESSION['nome'];
$idusuario1 =  $_SESSION['idusuario'];
$email1 =  $_SESSION['email'];
$nivelusuario1 = $_SESSION['nivelusuario'];
$recado11 = $_SESSION['recado1'];
$recado22 = $_SESSION['recado2'];
$recado33 = $_SESSION['recado3'];
$curso1 = $_SESSION['curso'];
$turno = $_SESSION['turno'];

$idauxiliar = $_SESSION['idusuario'];
?>

<html><head><title></title>
<style type="text/css">
<!--
body { background-image: url(imagens/fd2.jpg); }
-->
</style></head>
<body>
<div align="center"><BR>
  
  <? echo "<img src='" . $fotousuario . "'>"; ?>
  
<?
echo "<BR>";
echo $nome1;
echo "<BR>";
echo $idusuario1;
echo "<BR>";
echo $email1;
echo "<BR>";
echo $nivelusuario1;
echo "<BR>";
echo $curso1;
echo "<BR>";
echo $turno1;
echo "<BR>";
?>
  
</div>
</body>
</html>
<? ob_end_flush(); ?>

 

Página de logoutx.php

<? 
ob_start();

session_start();

session_destroy();

header("Location: index.html");
?>

<? ob_end_flush(); ?>

O QUE HÁ DE ERRADOOOOOOO?????????????

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparentemente nao vi erros

 

sugiro que faça o seguinte,

 

 

1- informe-nos sobre as configurações do servidor. Sistema operacional, Servidor web, versão do php.

2- execute phpinfo(). Na página gerada, procure pela palavra "session". Copie e cole aqui tudo que encontrar.

ex.

<?php phpinfo();?>

 

 

 

 

 

dicas:

 

1- você está utilizando ob_start() e ob_end_flush(). Nesse caso, nenhuma das páginas imprime dados antes de session_start(), por isso, é desnecessário.

 

2- não é aconselhavel o uso da função session_destroy() somente. Primeiramente reset todas sessões

exemplo

 

unset($_SESSION['nomeDoIndice']);

unset($_SESSION['nomeDoIndice2']);

unset($_SESSION['nomeDoIndice3']);

session_destroy()

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparentemente nao vi erros

 

sugiro que faça o seguinte,

 

 

1- informe-nos sobre as configurações do servidor. Sistema operacional, Servidor web, versão do php.

2- execute phpinfo(). Na página gerada, procure pela palavra "session". Copie e cole aqui tudo que encontrar.

ex.

<?php phpinfo();?>

Companheiro... dados sobre o servidor em questão.

 

Turion 64 + 512MB RAM + HD 80Gb

 

Windows XP SP2(mas o mesmo problema ocorre no Ubuntu 6 e 7)

 

Como cliente WEB uso o Firefox e o I. Explorer e o problema continua.

 

Servidor Apache 1.3.23

 

MySQL 5.0.11

 

PHP Version 4.4.7

 

Se você quiser te mando a página gerada pelo phpinfo e o codigo do sistema pra você dar uma olhadinha.

 

Achei isso sobre o PHP. Podes verificar se há algo a ser modificado nas confs do PHP instalado?

 

session

Session Support enabled

Registered save handlers files user

 

Directive Local Value Master Value

session.auto_start Off Off

session.bug_compat_42 On On

session.bug_compat_warn On On

session.cache_expire 180 180

session.cache_limiter nocache nocache

session.cookie_domain no value no value

session.cookie_lifetime 0 0

session.cookie_path / /

session.cookie_secure Off Off

session.entropy_file no value no value

session.entropy_length 0 0

session.gc_divisor 100 100

session.gc_maxlifetime 1440 1440

session.gc_probability 1 1

session.name PHPSESSID PHPSESSID

session.referer_check no value no value

session.save_handler files files

session.save_path c:/apache/tmp c:/apache/tmp

session.serialize_handler php php

session.use_cookies On On

session.use_only_cookies Off Off

session.use_trans_sid On On

Compartilhar este post


Link para o post
Compartilhar em outros sites

Servidor Apache 1.3.23

PHP Version 4.4.7

é recomendável fazer atualização.

 

o apache está na versao 2.2.8 atualmente

o php na versao 5.2.5

 

 

 

session.save_path c:/apache/tmp

verifique se o caminho existe e possui permissão para leitura e escrita:

c:/apache/tmp

 

 

session.cookie_path /

ok, está certo.

 

 

session.cache_expire 180

a sesão expira em 180 minutos.. acho que nao é esse o seu problema

 

 

session.use_trans_sid On

faça um teste logo após o login, antes de redirecionar com o header()

 

escreva:

echo $_SERVER['PHPSESSID']; exit;

veja qual valor está mostrando

 

depois retire o teste e faça o login normalmente, e na página logado2.php faça o mesmo teste

echo $_SERVER['PHPSESSID']; exit;

deve a aparecer o mesmo valor que apareceu na págin anterior, se aparecer diferente há algo qu está fazendo a sessão se perder.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Windows XP SP2(mas o mesmo problema ocorre no Ubuntu 6 e 7)

essa informação é importante

 

se o mesmo erro ocorre sob outras configurações, provavelmente tem erro no script.

 

verifique os arquivos externos se nçao possuem nenhuma saída. pode ser tenha uma quebra de linha após o fechamento da tag php ?> ou antes de começar <?php

 

você tem um arquivo "conecta.php", verifique nele se nao tem isso que mencionei.

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.