Buscar

php Apresentar nome de usuário logado em tela Stack Overflow em Português

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 3 páginas

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

Outros materiais