Ir para conteúdo

POWERED BY:

Arquivado

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

KS_Scream

Não consigo usar os dados da session

Recommended Posts

Boa noite, preciso logar um usuário e carregar seu nome na tela, porém, apesar de simples não estou conseguindo fazer, segue abaixo meu código do formulário de login:

 

<?php
	require("conect.php");
	$email = $_POST['_email'];
	$senha = $_POST['senha'];
	$sql = mysql_query("SELECT * FROM usuarios WHERE email='$email' AND senha='$senha'")or die(mysql_error());
	$row = mysql_num_rows($sql);
		if ($row > 0) {
			session_start();
			$_SESSION['email'] = $resultado['email'];
			$_SESSION['nome'] = $resultado['nome'];
			$_SESSION['imagem'] = $resultado['imagem'];
			header("Location: home.php");
			}
		else {
			header("Location: login.php");
			}
?>

O problema é que não sei como imprimir as informações na tela home.php. Alguém pode me ajudar?

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

em home.php, você abre a sessão com [inline]session_start();[/inline] e resgata os valores assim como você fez para salvá-los

 

home.php

<?php

session_start();
echo "Olá, {$_SESSION['nome']}, seja bem vindo ao meu incrível website!";

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

em home.php, você abre a sessão com [inline]session_start();[/inline] e resgata os valores assim como você fez para salvá-los

 

home.php

<?php

session_start();
echo "Olá, {$_SESSION['nome']}, seja bem vindo ao meu incrível website!";

Obrigado pela ajuda amigo, mas pra mim ainda deu o erro:

 

Notice: Undefined index: nome in D:\Program Files\EasyPHP-12.1\www\Teste\home.php on line 7

Compartilhar este post


Link para o post
Compartilhar em outros sites

você faz um login corretamente e cai aí?

 

Limpe os cookies do navegador.

 

Exatamente, já tentei limpar cookies, cache e testei em navegadores diferentes, sempre da isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em todas as páginas que você trabalhar com sessões, é obrigatório que você use o session_start();

Adicione o session_start(); antes de qualquer saída HTML em todas as páginas que você trabalhar com sessões.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em todas as páginas que você trabalhar com sessões, é obrigatório que você use o session_start();

Adicione o session_start(); antes de qualquer saída HTML em todas as páginas que você trabalhar com sessões.

 

Boa noite Wanderson, estou fazendo assim:

<?php
	require("conect.php");
        session_start();
        echo "Olá, {$_SESSION['nome']}, seja bem vindo ao meu incrível website!";
?>

E ainda assim ocorre o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o teste usando um navegador diferente, pode ser algo relacionado com o cache...

 

Já tentei no Chrome, IE, Opera e Safari, além disso limpei todos os dados, infelizmente o erro persiste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa mano, por favor poste o código dessas páginas que você está usando atualmente.

 

valida.php

<?php
	require("conect.php");
	$email = $_POST['_email'];
	$senha = $_POST['senha'];
	$sql = mysql_query("SELECT * FROM usuarios WHERE email='$email' AND usr_senha='$senha'")or die(mysql_error());
	$row = mysql_num_rows($sql);
		if ($row > 0) {
			session_start();
			$_SESSION['email'] = $resultado['email'];
			//$_SESSION['senha'] = $resultado['senha'];
			$_SESSION['nome'] = $resultado['nome'];
			$_SESSION['imagem'] = $resultado['imagem'];

			header("Location: home.php");
			}
		else {
			header("Location: login.php");
			}
?>

E aqui a home.php

<?php
	require("conect.php");
        session_start();
        echo "Olá, {$_SESSION['nome']}, seja bem vindo ao meu incrível website!";
?>

Sera que estou fazendo algo errado na valida.php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte:

 

 

echo "<pre>";
print_r($_SESSION);
echo "</pre>";
exit();

 

No inicio da home.php e posta o resultado. Tá meio estranho isso, de qualquer forma deixe o session_start(); na primeira linha do arquivo.



Já sei, talvez a sua validação no banco de dados não esteja funcionando, ai ele dá esse erro, pois a sessão não foi definida. Faça:

 

<?php
session_start();
	require("conect.php");
	$email = $_POST['_email'];
	$senha = $_POST['senha'];
	$sql = mysql_query("SELECT * FROM usuarios WHERE email='$email' AND usr_senha='$senha'")or die(mysql_error());
	$row = mysql_num_rows($sql);
		if ($row > 0) {
			$_SESSION['email'] = $resultado['email'];
			//$_SESSION['senha'] = $resultado['senha'];
			$_SESSION['nome'] = $resultado['nome'];
			$_SESSION['imagem'] = $resultado['imagem'];

			header("Location: home.php");
			}
		else {
$_SESSION['nome'] = 'Sessão não definida, erro no login';
			header("Location: login.php");
			}
?>


 

$email = $_POST['_email'];

 

Tem certeza que no atributo name do campo E-mail você definiu como "_email" mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte:

 

 

echo "<pre>";
print_r($_SESSION);
echo "</pre>";
exit();

 

No inicio da home.php e posta o resultado. Tá meio estranho isso, de qualquer forma deixe o session_start(); na primeira linha do arquivo.

 

Já sei, talvez a sua validação no banco de dados não esteja funcionando, ai ele dá esse erro, pois a sessão não foi definida. Faça:

 

<?php
session_start();
	require("conect.php");
	$email = $_POST['_email'];
	$senha = $_POST['senha'];
	$sql = mysql_query("SELECT * FROM usuarios WHERE email='$email' AND usr_senha='$senha'")or die(mysql_error());
	$row = mysql_num_rows($sql);
		if ($row > 0) {
			$_SESSION['email'] = $resultado['email'];
			//$_SESSION['senha'] = $resultado['senha'];
			$_SESSION['nome'] = $resultado['nome'];
			$_SESSION['imagem'] = $resultado['imagem'];

			header("Location: home.php");
			}
		else {
$_SESSION['nome'] = 'Sessão não definida, erro no login';
			header("Location: login.php");
			}
?>

 

 

$email = $_POST['_email'];

 

Tem certeza que no atributo name do campo E-mail você definiu como "_email" mesmo?

 

A saida ficou:

 

Array(    [email] => teste@teste    [senha] => 123    [nome] =>     [imagem] => )

 

O atributo é _email mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitui o:

$row = mysql_num_rows($sql);

por:

$resultado = mysql_fetch_array($sql);

 

e a saida foi a mesma, ele não recebe o que tem no banco.

Tá feia a coisa pra mim hehe.

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.