Ir para conteúdo

POWERED BY:

Arquivado

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

Kadu_Web

Erro ao criar a Session?

Recommended Posts

Olá Pessoal, boa tarde!

 

Estou tendo um problema com Sessions e PHP.

Estou tentando criar um sistema de Login utilizando OOP. Porém, quanto crio a variável de sessão não consigo passar o valor para outra página.

Não sei se estou sendo claro. Peço compreensão.

Abaixo o código:

 

login.php

//recebe os valores
$login = isset($_POST["txtlogin"]) ? addslashes(trim($_POST["txtlogin"])) : FALSE; 
// Recupera a senha, a criptografando em MD5 
$senha = isset($_POST["txtsenha"]) ? md5(trim($_POST["txtsenha"])) : FALSE; 

if(!$login || !$senha) 
{ 
	echo "Você deve digitar sua senha e login!"; 
	exit; 
} 

//Inclui o arquivo de conexão
include "config.php";
//consulta
$sql = "SELECT * FROM tbuser where Login='".$login."'";
$resultado = @mysql_query($sql, $conexao);
$total = @mysql_num_rows($resultado);

if($total){
	$dados = @mysql_fetch_array($resultado);

	if(!strcmp($senha, $dados["senhaUser"])){
	//CRIA A SEÇÃO, GRAVA ELA E REDIRECIONA A PÁGINA
		session_start(); 
		$user["IdUser"] = $dados["idUser"];
		$user["NomeCompleto"] = $dados["NomeCompleto"];
		$user["Login"] = $dados["Login"];
		$user["tipoUsuario"] = $dados["tipoUsuario"];
		$user["senhaUser"] = $dados["senhaUser"]; 
		session_register("user");
		$_SESSION["user"] = serialize($user);
		header("Location:valida_user.php");
	}
	//senha inválida
	else
	{
		echo "Senha Inválida!<br/>";
		echo $senha;
		exit;
	}
}
else
{
echo "O login não existe!";
exit;
}

valida_user.php

session_start();

include "./classes/class_user.php";

$usuario = new  User();

$user = unserialize($_SESSION["user"]);

$usuario->setNomeCompleto($user["NomeCompleto"]);


echo "Nome completo: <b>" .$_SESSION["user"]. "</b>";

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não se ajuda, coloca o session_start(); no inicio da página do login.php.

 

2º Sei lá mas que código mais estranho pra mim, eu coloquei assim meu login.php e depois no index abre o session e só colocar echo $login; e pronto...

 

 

if(isset($_POST["Entrar"])) 
{

	foreach ($_POST as $campo => $valor) { $$campo = addslashes(htmlentities($valor)); }

	$login = preg_replace("@(--|\#|\*|;|=)@s", "", $login);
	/// Trim tira os espaços do inicio / fim
	$login = trim($login);
	
	$senha = trim($senha);	
	
	$consulta = mysql_query("SELECT login, status FROM membros WHERE login='$login' AND status='S'");
	
	if(mysql_num_rows($consulta)>0)
	{
		$consulta2 = mysql_query("SELECT * FROM membros WHERE login='$login' AND senha=md5('$senha')");
		
		if(mysql_num_rows($consulta2)>0)
		{
			$dados = mysql_fetch_array($consulta2);
			
			$_SESSION["id_login"] = $dados["id_login"];
			$_SESSION["login"] = $dados["login"];
			$_SESSION["senha"] = $dados["senha"];
			$_SESSION["nivel"] = $dados["nivel"];
		
			header ('Location: index.php');
			exit;
		
		}
		else{
			header ('Location: login.php');
		}
	}
	else
	{
		header ('Location: login.php');
	}
}

Espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem vindo ao forum iMasters Kadu_Web...

depois reserve um tempo pra ler Regras do Fórum iMasters

 

ao assunto...

você ja verificou se as variaveis estao corretas?! verifica entes de tentar enviar...

tenta tbm recuperar os valores do SESSION ainda na msm pagina... (so pra verificar se esta sendo definida)

 

antes de tentar avançar para uma outra etapa... faça testes e mais testes (msm q sejam bestas).

abraços http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gaulia, eu tentei do jeito que você fez mas o erro persiste, a página index.php não recebe nenhum valor de sessão.

valeu pela dica... tem alguma idéia....

 

Dorian...

bem vindo ao forum iMasters Kadu_Web...

depois reserve um tempo pra ler Regras do Fórum iMasters

 

ao assunto...

você ja verificou se as variaveis estao corretas?! verifica entes de tentar enviar...

tenta tbm recuperar os valores do SESSION ainda na msm pagina... (so pra verificar se esta sendo definida)

 

antes de tentar avançar para uma outra etapa... faça testes e mais testes (msm q sejam bestas).

abraços http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

eu fiz o teste na mesma página e deu certo. Mas eu preciso disto na outra página...tem alguma idéia do que possa ser???

desde já agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão, me informepor favor quais são os erros que aparece quando você tenta executar o script, você está a progrmar errado, uma vez que se usar o " @ " para ocultar os errros é impossível saber o que se ocorre com o script, retire todos os " @ " utilizados para esconder os erros e os poste aqui.

 

outra coisa, dê um print_r($_POST); para ver qual é o valor que amesma está recebendo.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

os valores que a $_POST recebe estão corretos...

 

e ela não informa nenhum erro de banco de dados...

 

estava pensando... é possível ser alguma coisa na configuração do PHP??? eu uso o SERV-N. será isto, e se for, como resolver?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem se não aparece erro algum, é muito estrnha, só um momento que vou analisar todo o teu código.

 

teu web server é um pacote ou instalou manualmente ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tô postanto o código de novo....

 

login.php

<?php
session_start(); 
//recebe os valores
$login = isset($_POST["txtlogin"]) ? addslashes(trim($_POST["txtlogin"])) : FALSE; 
// Recupera a senha, a criptografando em MD5 
$senha = isset($_POST["txtsenha"]) ? md5(trim($_POST["txtsenha"])) : FALSE; 

if(!$login || !$senha) 
{ 
	echo "Você deve digitar sua senha e login!"; 
	exit; 
} 

//Inclui o arquivo de conexão
include "config.php";
//consulta
$sql = "SELECT * FROM tbuser where Login='".$login."'";
$resultado = mysql_query($sql, $conexao);
$total = mysql_num_rows($resultado);

if($total){
	$dados = mysql_fetch_array($resultado);

	if(!strcmp($senha, $dados["senhaUser"])){
	//CRIA A SEÇÃO, GRAVA ELA E REDIRECIONA A PÁGINA
		
		$user["IdUser"] = $dados["idUser"];
		$user["NomeCompleto"] = $dados["NomeCompleto"];
		$user["Login"] = $dados["Login"];
		$user["tipoUsuario"] = $dados["tipoUsuario"];
		$user["senhaUser"] = $dados["senhaUser"]; 
		$_SESSION["user"] = serialize($user);
		header("Location:valida_user.php");
	}
	//senha inválida
	else
	{
		echo "Senha Inválida!<br/>";
		echo $senha;
		exit;
	}
}
else
{
echo "O login não existe!";
exit;
}
?>

e valida_user.php

session_start();

$user = unserialize($_SESSION["user"]);

include "./classes/class_user.php";

$usuario = new  User();

$usuario->setNomeCompleto($user["NomeCompleto"]);


echo "Nome completo: <b>" .$usuario->getNomeCompleto(). "</b>";
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai vai...

<form action="login.php" method="post" name="frmLogin" id="frmLogin">
  <table width="100%" border="0" cellspacing="0" cellpadding="1" class="TitleColor">
	<tr style="vertical-align: top">
	  <td>
		<table width="100%" border="0" cellspacing="0" cellpadding="4">
		  <tr class="HeaderColor">
			<td width="20%" style="vertical-align: top">			  <h3>Entrar no Sistema </h3>			</td>
			<td width="80%" style="vertical-align: top">			  <h3>BME Pré-Militar </h3>			</td>
		  </tr>
		  <tr style="vertical-align: top">
			<td width="20%" class="TitleColor">
			  <label for="txtLogin"><strong>Nome de Usuário </strong></label><br />
			  <input id="txtlogin" name="txtlogin" type="text" size="25" />
			  <p> </p>
			  <label for="txtSenha"><strong>Senha</strong></label> <br />
			  <input id="txtsenha" name="txtsenha" type="password" size="25" />
			  <p>
				<input name="entrar" type="submit" id="entrar" value="Entrar" />
			  </p>			</td>
			<td width="80%" class="StoryContentColor">
			  <h4 class="TitleColor">Instruções:</h4>
			  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.			</td>
		  </tr>
		</table>	  </td>
	</tr>
  </table>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitui o login.php por este código aqui:

 

 

PHP
<?php

//recebe os valores

if($_POST["entrar"]){

 

$protecao_login=addslashes(trim($_POST["txtlogin"]));

$protecao_senha=md5(trim($_POST["txtsenha"]));

 

if(empty($protecao_login || empty($protecao_senha))){

print "Digite os dados necessários!";

exit;

}

}else{

print "Erro de programação.";

}

//Inclui o arquivo de conexão

include "config.php";

//consulta

$sql = "SELECT * FROM tbuser where Login='$protecao_login'";

$resultado = @mysql_query($sql, $conexao);

$total = @mysql_num_rows($resultado);

 

if($total != 0){

$dados = @mysql_fetch_array($resultado,MYSQL_ASSOC);

 

if(!strcmp($protecao_senha, $dados["senhaUser"])){

//CRIA A SEÇÃO, GRAVA ELA E REDIRECIONA A PÁGINA

session_start();

$user["IdUser"] = $dados["idUser"];

$user["NomeCompleto"] = $dados["NomeCompleto"];

$user["Login"] = $dados["Login"];

$user["tipoUsuario"] = $dados["tipoUsuario"];

$user["senhaUser"] = $dados["senhaUser"];

 

$_SESSION["user"] = serialize($user);

header("Location: index2.php");

}

//senha inválida

else

{

echo "Senha Inválida!<br/>";

echo $protecao_senha;

exit;

}

}

else

{

echo "O login não existe!";

exit;

}

?>

faça um backup do original antes, e me fala qual o erro que aparece ai, caso tenha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai vai...

<form action="login.php" method="post" name="frmLogin" id="frmLogin">
  <table width="100%" border="0" cellspacing="0" cellpadding="1" class="TitleColor">
	<tr style="vertical-align: top">
	  <td>
		<table width="100%" border="0" cellspacing="0" cellpadding="4">
		  <tr class="HeaderColor">
			<td width="20%" style="vertical-align: top">			  <h3>Entrar no Sistema </h3>			</td>
			<td width="80%" style="vertical-align: top">			  <h3>BME Pré-Militar </h3>			</td>
		  </tr>
		  <tr style="vertical-align: top">
			<td width="20%" class="TitleColor">
			  <label for="txtLogin"><strong>Nome de Usuário </strong></label><br />
			  <input id="txtlogin" name="txtlogin" type="text" size="25" />
			  <p> </p>
			  <label for="txtSenha"><strong>Senha</strong></label> <br />
			  <input id="txtsenha" name="txtsenha" type="password" size="25" />
			  <p>
				<input name="entrar" type="submit" id="entrar" value="Entrar" />
			  </p>			</td>
			<td width="80%" class="StoryContentColor">
			  <h4 class="TitleColor">Instruções:</h4>
			  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.			</td>
		  </tr>
		</table>	  </td>
	</tr>
  </table>
</form>

Seguinte Kadu,

 

Eu não tenho muito conhecimento de PHP não, mas talvez o que eu falar seja inportante para a resoulução de seu problema. Tive um problema parecido com o seu. Aconcelho que você tente verificar se o valor da Session está sendo passado.

 

1 - Tente mandar imprimir o valor das sessões na página login.php para ver se está sendo declarada.

2 - Tente colocar um valor não-variável para a sessao, Ex.: $_SESSION['nomeCompleto'] == "Thiago Moreira"; e depois mande imprimir. Se der certo desta maneira, significa que a sua consulta está errada em algum ponto.

3 - Tente nao colocar $_SESSION["nomeCompleto"], coloque $_SESSION['nomeCompleto'] com aspas simples. As vezes acontece isso comigo, qnd mudo funciona.

 

Uma vez fiz uma declaração de Session com um valor de uma consulta, como você fez ($user["IdUser"] = $dados["idUser"];), porém nao funcionou. Tive que jogar o valor da consulta para uma variável, e depois declarar a session. Ex.: $nome = $dados['nomeCompleto']; $user['nomeCompleto'] = $nome;

 

Bom, acho q é só isso q tenho à comentar. Me desculpe se falei alguma besteira, pois sou iniciante ainda :P

 

Espero que consiga resolver seu problema.

 

 

Abração :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai Thiago...valeu pela dica... mas tbm não deu certo.

Mas agora eu sei que o problema é com a passagem da session para outra página.

 

The Cod.

Não tem dado nenhum erro, ele até redireciona mas o valor da session não aparece.

Se você puder elaborar um eu fico muito agradecido, se não for te incomodar.

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.