Baixe o app para aproveitar ainda mais
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
Compartilhar