Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
>
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
você faz um login corretamente e cai aí?
Limpe os cookies do navegador.
>
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.
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.
>
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.Faça o teste usando um navegador diferente, pode ser algo relacionado com o cache...
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.
Nossa mano, por favor poste o código dessas páginas que você está usando atualmente.
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?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?
>
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.
Está faltando: $resultado = mysql_fetch_array($sql);
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.
Não cara, adicione esse código abaixo de $sql...
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