Prévia do material em texto
23/04/2018 php - Apresentar nome de usuário logado em tela - Stack Overflow em Português
https://pt.stackoverflow.com/questions/185572/apresentar-nome-de-usu%C3%A1rio-logado-em-tela 1/3
Apresentar nome de usuário logado em tela Faça uma pergunta
Olá! Na página restrita do meu site, precisa apresentar o nome do usuário logado, o mesmo ocorre no formulário que é exibido. Mas notei que não está
aparecendo, nem no "Olá" e nem no formulário. Analisei o código e não consegui encontrar nada diferente do que eu havia deixado antes. Gostaria de
uma ajudinha pra identificar o possível erro do porque não apresentar. :)
É assim que está na página restrita para buscar e apresentar o nome do usuário em tela:
Olá, <p id="usuario"></p>
<script>document.getElementById("usuario").innerHTML = localStorage.getItem("usuario");
</script>
E assim que está no código de verificar login, onde eu busco pelas i'ds apresentadas no banco de dados:
<?php
session_start();
include_once 'config.php';
ini_set('display_errors',true);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
if ( isset( $_POST ) && ! empty( $_POST ) ) {
$dados_usuario = $_POST;
} else {
$dados_usuario = $_SESSION;
}
$validacao = login($dados_usuario['usuario'], $dados_usuario['password']);
if(isset($dados_usuario)){
if ($validacao) {
$_SESSION['logado'] = true;
$_SESSION['nome_usuario'] = $validacao->user_name;
$_SESSION['usuario'] = $validacao->user;
$_SESSION['user_id'] = $validacao->user_id;
$_SESSION['nom_clin']= $validacao->nom_clin;
?><script>localStorage.setItem("usuario", "<?php echo $validacao->usuario?
>");</script><?php
}
exit;
}
else {
echo 'Login e Senha incorretos. Favor voltar a página e tentar novamente.';
// Continua deslogado
$_SESSION['logado'] = false;
// Preenche o erro para o usuário
$_SESSION['login_erro'] = 'Usuário ou senha inválidos';
//session_destroy();
//header("Location: restrito.php");
//exit;
}
function login($login, $senha)
{
try {
$sql = "SELECT cod_clin, user, user_name, user_id, nom_clin FROM usuarios
WHERE user_id='$login' AND user_password='$senha' LIMIT 1";
$conn = getConexao();
$result = $conn->query($sql);
$row = $result->fetch(PDO::FETCH_OBJ);
return $row;
} catch (PDOException $e) {
echo $e;
return false;
}
}
?>
E as id's conferem com as do banco de dados.
php
editada 21/02/17 às 17:35 perguntada 21/02/17 às 11:26
Inez Boldrin
77 5
–
Quais são as propriedades retornadas pela função ? Pois, em um momento você usa
e em outro você usa . Pode ser que a propriedade não exista e
sim .
login($dados_usuario['usuario'], $dados_usuario['password'])
$_SESSION['usuario'] = $validacao->user; <?php echo $validacao->usuario?> $validacao->usuario
$validacao->user Carlos Fernandes 21/02/17 às 13:37
–
Você testou colocando o como mencionei em minha resposta ? Onde estão declaradas as varáveis presente em sua querie ?; $login e $senha MagicHat 21/02/17 às
18:01
–
@MagicHat Testei sim, e não influenciou em nada. Há uns 2 meses, a apresentação do nome do usuário aparecia normalmente sem nenhum problema. E semana passada fui
mexer nos arquivos do site e foi onde eu vi que não apresenta mais. Inez Boldrin 21/02/17 às 18:31
– Tá e as variáveis ? MagicHat 21/02/17 às 18:32
– @MagicHat Na linha " function login($login, $senha) {" Inez Boldrin 22/02/17 às 13:08
23/04/2018 php - Apresentar nome de usuário logado em tela - Stack Overflow em Português
https://pt.stackoverflow.com/questions/185572/apresentar-nome-de-usu%C3%A1rio-logado-em-tela 2/3
4 Respostas
PHP SESSION
Você tem armazenado o nome do usuário no SESSION então basta chamá-lo no código, muda ele da
seguinte forma:
Olá, <p id="usuario"><?php echo $_SESSION['nome_usuario']; ?></p>
// Pode remover o Script
Para acessar os dados do é importante iniciar a Sessão, utitlizando , da
seguinte forma:
SESSION session_start()
<?php session_start(); // é possível inicializar o SESSION logo no início do arquivo.
editada 21/02/17 às 13:04 respondida 21/02/17 às 11:30
Thiago Santos
1.735 1 19
–
@InezBoldrin bom dia, é como o Thiago te mencionou, como se trata de uma váriavel global você pode utiliza-la
em qualquer parte do projeto bastando apenas chamar a variável. WMomesso 21/02/17 às 11:38
–
Thiago, fiz dessa forma que você colocou e não apresentou nada. O session_start já havia sido colocado antes,
que também não estava apresentando nome nenhum em tela. Inez Boldrin 21/02/17 às 12:58
–
Logo Após o faz um e verifica se tem algo salvo na sessão, se estiver
vazia verifica se tu iniciou a sessão no arquvio onde tu faz a validação.
session_start() print_r($_SESSION);
Thiago Santos 21/02/17 às 13:03
–
No arquivo que verifica o login do usuário já está com o session_start. Coloquei o print e abri o consola, está em
branco. Inez Boldrin 21/02/17 às 14:07
–
o é a primeira coisa na página? Coloca como primeira coisa. Mais um teste, faz um
logo antes de colocar essa variável pra dentro da sessão e verifica se ela não está em
branco!
session_start(); echo
$validacao->user_name;
Thiago Santos 21/02/17 às 14:12
Não esqueça de iniciar a sessão :
$validacao = login($dados_usuario['usuario'], $dados_usuario['password']);
if(isset($dados_usuario))
{ if($validacao)
{ session_start();
//continue
E então você pode chamá-lo como na resposta do Thiago...
Olá, <p id="usuario"><?php echo $_SESSION['nome_usuario']; ?></p>
Outro detalhe é que do jeito que está na sua pergunta
<?php echo $validacao->usuario?>
Está faltando um , então se for fazer com js começa por alterar para :;
<?php echo $validacao->usuario;?>
------------------------------^
editada 21/02/17 às 14:27 respondida 21/02/17 às 11:39
MagicHat
8.780 1 16 55
–
Essa validação eu já tenho no arquivo verifica_login.php. Quando coloquei no arquivo da restrito.php apresentou a
página em branco. Inez Boldrin 21/02/17 às 12:57
–
Edite sua pergunta e coloque o bloco do código anterior relevante a parte de sessão.... MagicHat 21/02/17 às
14:07
–
A linha que possui o "Olá" é onde eu quero que apareça o nome do usuário em tela. Na linha que tem $validacao é
onde está o código do verifica_login (pra verificar usuário e senha), onde as mesmas id's conferem com as que
estão no banco de dados. Inez Boldrin 21/02/17 às 14:31
–
Bom, o que acontece é o seguinte, você possui um código anterior que pode influenciar o comportamento do que
está sendo proposto na pergunta, então fica mais fácil de resolver se postar esses códigos tmb... MagicHat
21/02/17 às 14:33
Você poderia criar um método HTTP request para o código retornar um JSON contendo todos os
dados que você quer utilizar, e passar para o Javascript utilizando o Jquery.
$.getJSON("DadosDoUsuario.php").
done(function (dados) {
23/04/2018 php - Apresentar nome de usuário logado em tela - Stack Overflow em Português
https://pt.stackoverflow.com/questions/185572/apresentar-nome-de-usu%C3%A1rio-logado-em-tela 3/3
$("#nomedadiv").html("Olá "+dados.NOMEUSUARIO);
});
respondida 21/02/17 às 14:10
Herbert Junior
131 4
Olá,
Seguindo a query
o irá lhe retornar as seguintes
propriedades: , , , , .
$sql = "SELECT cod_clin, user, user_name, user_id, nom_clin FROM usuarios WHERE
user_id='$login' AND user_password='$senha' LIMIT 1"; PDOcod_clin user user_name user_id nom_clin
object(stdClass) {
public $cod_clin;
public $user;
public $user_name;
public $user_id;
public $nom_clin;
}
Ou seja, ao chamar irá retornar que a propriedade não foi definida,
quebrando a aplicação. Experimente chamar
$validacao->usuario usuario
$validacao->user
respondida 21/02/17 às 19:22
Carlos Fernandes
436 2 8
–
Troquei o por e também não apresentou em tela o usuário.$validacao->usuario $validacao->user
Inez Boldrin 23/02/17 às 14:17
–
Dessas colunas , qual retorna o nome do usuário?cod_clin, user, user_name, user_id, nom_clin
Carlos Fernandes 23/02/17 às 14:29
– É o mesmo que retorna.user Inez Boldrin 23/02/17 às 19:13
–
Faz um apos
e vê se está lhe retornando os dados do usuário. Se puder compartilha o retorno.
var_dump($validacao); $validacao = login($dados_usuario['usuario'],
$dados_usuario['password']);
Carlos Fernandes 23/02/17 às 21:26