Jump to content
Casas Junior

[Resolvido] Mostrar mais de um dado do usuário logado PHP

Recommended Posts

Fala galera, beleza?

Estou a 2 semanas a fio, aprendendo PHP.. Já fiz os links de cadastro, login e senha, recuperação e tal.. Agora me pintou uma dúvida, que já quebrei muito a cabeça e não consigo, achar uma solução... 
Bom, tenho a página minhaconta.php nela está a estrutura de quando o cara loga com sucesso e tem a parte, claro que mostra o usuário logado:

Nickname:

<?php echo $_SESSION['usuario'];?><br>



OK!!! Esse não é o problema!!! Queria saber como trazer o resto.. O cara não precisa editar é somente para visualizar:

Eu achei que fazendo com os demais campos, o mesmo com o que fiz com o usuário daria certo, mas pelo visto ele só funciona com o campo usuário.
Exemplo de como ta:
 

Data de Cadastro: <?php echo $_SESSION['datacadastro'];?><br>
Cidade: <?php echo $_SESSION['cidade'];?><br>



Se não é dessa maneira acima, como seria? o_O
Alguma sugestão?

 

 

no select está assim:
 

$usuario=$_POST['usuario'];
$senha=$_POST['senha'];
$sql = mysqli_query($conn, "SELECT * FROM usuarios WHERE usuario = '$usuario' and senha = '$senha'") or die (mysqli_error());
$row = mysqli_fetch_assoc($sql);
if($row > 0) {
session_start();
$_SESSION['usuario']=$_POST['usuario'];


 

Share this post


Link to post
Share on other sites

Você salvou apenas o campo usuario na SESSION (na última linha do seu código).

Você tem o resultado dos dados do usuário associado ao array $row, certo? Basta registrar os valores que você precisa, assim:

$_SESSION[ 'usuario' ] = $row[ 'usuario' ]; //armazenando usuario
$_SESSION[ 'nascimento' ] = $row[ 'nascimento' ]; //armazenando data de nasc.

Os dados não serão armazenados para posterior consulta se você não fizer dessa forma...

Mas você ainda pode facilitar um pouco as coisas e fazer dessa forma:

$_SESSION[ 'dados_user' ] = $row; //armazenando tudo em forma de array associativo

//agora basta acessar dessa forma:
echo $_SESSION[ 'dados_user' ][ 'usuario' ]; //acessando usuario
echo $_SESSION[ 'dados_user' ][ 'nascimento' ]; //acessando data de nasc.

 

Mas o ideal mesmo é você armazenar apenas o id do usuário e em toda vez que recarregar a página você extrair os dados novamente, como você já está fazendo. Dessa forma você garante que o usuário não foi excluído, editado, teve sua senha modificada, etc.

 

E vou te dar uma dica extremamente importante: sei que você está começando agora e provavelmente esse código é apenas para fins didáticos, mas procure por SQL Injection, pois seu código está extremamente vulnerável.

Veja: 

 

Share this post


Link to post
Share on other sites
17 horas atrás, Matheus Tavares disse:

Você salvou apenas o campo usuario na SESSION (na última linha do seu código).

Você tem o resultado dos dados do usuário associado ao array $row, certo? Basta registrar os valores que você precisa, assim:


$_SESSION[ 'usuario' ] = $row[ 'usuario' ]; //armazenando usuario
$_SESSION[ 'nascimento' ] = $row[ 'nascimento' ]; //armazenando data de nasc.

Os dados não serão armazenados para posterior consulta se você não fizer dessa forma...

Mas você ainda pode facilitar um pouco as coisas e fazer dessa forma:


$_SESSION[ 'dados_user' ] = $row; //armazenando tudo em forma de array associativo

//agora basta acessar dessa forma:
echo $_SESSION[ 'dados_user' ][ 'usuario' ]; //acessando usuario
echo $_SESSION[ 'dados_user' ][ 'nascimento' ]; //acessando data de nasc.

 

Mas o ideal mesmo é você armazenar apenas o id do usuário e em toda vez que recarregar a página você extrair os dados novamente, como você já está fazendo. Dessa forma você garante que o usuário não foi excluído, editado, teve sua senha modificada, etc.

 

E vou te dar uma dica extremamente importante: sei que você está começando agora e provavelmente esse código é apenas para fins didáticos, mas procure por SQL Injection, pois seu código está extremamente vulnerável.

Veja: 

 

Excelente!! Nossa funcionou mesmo!! Muito obrigado!

 

E respondendo ali, sim é mais didático, quero aprender toda a logica primeiro e depois partir para a segurança.

 

Muito obrigado novamente, pode encerrar o tópico.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By MateusDuarte
      Preciso de um Help.
      Eu tenho um sistema e nele os usuários precisam fazer login para acessar, os usuarios se logan, a SESSION é armazenada bonitinha, passa pela verificação de que está logado e até retorna o valor da SESSION. Porem se eu fechar o navegador e abrir de novo, ele pede para se logar de novo.
      Como faço para armazenar essa SESSION apenas uma vez? Tipo o facebook, você se loga 1 vez, e quando fecha e abre de novo ele sabe que você tem permissão naquele PC.
    • By studdiox
      Galera estou com um problema com session start ...
       
      houve atualização na versão do php no servidor de hospedagem caindo fora alguns argumentos estou tentando com uma nova versão
       
      passada por indicação de um colega aqui do forum washalbano
      que já me quebrou uma baita galho eliminando o primeiro erro do argumento extinguido da versão do php ( session_is_registered  )
      mas agora ele não quer logar se alguém puder dar uma mãozinha vou postar os códigos abaixo do formulário de acesso
      log-admin.php e da verificação loga.php
       
      e o erro que retorna a mensagem "Acesso Negado !! Usuário Não Logado"
      vinda do final do código   loga.php  Não aparece nenhum erro apenas  isso e retorna para o formulário de login ( log-admin.php )
       
      //agora a parte que verifica se o login já foi feito // se não há user em $_SESSION if (!isset($_SESSION['nome'])) { // Usuário não logado! Redireciona para a página de login echo '<script>' . 'alert("Acesso Negado !! Usuario Não Logado");' . 'document.location="log-admin.php";' . '</script>';  
       
       
      log-admin.php
      <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>: : : PAINEL DE ADMINISTRACAO DO WEBSITE : : :</title> <style type="text/css"> <!-- body, td, th { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #FFFFFF; } body { background-color: #000000; } a:link { color: #000000; text-decoration: none; } a:visited { color: #000000; text-decoration: none; } a:hover { color: #000000; text-decoration: none; } a:active { color: #000000; text-decoration: none; } --> </style> </head> <body> <?php session_name("user1,user2"); session_start(); ?> <form name="form1" method="post" action="loga.php?acao=logar"> <div align="center"> <p>&nbsp;</p> <p>Painel de Acesso <br> </p> </div> <table width="338" border="0" align="center" cellpadding="4" cellspacing="2"> <tr> <td width="59" bordercolor="#333333" bgcolor="#333333">NOME : </td> <td width="239" bordercolor="#333333" bgcolor="#333333"> <label> <input name="nome" type="text" id="nome" size="35"> </label> </td> </tr> <tr> <td bordercolor="#333333" bgcolor="#333333">SENHA : </td> <td bordercolor="#333333" bgcolor="#333333"> <label> <input name="pwd" type="password" id="pwd" size="35"> </label> </td> </tr> <tr> <td colspan="2" bordercolor="#333333" bgcolor="#333333"> <div align="center"> <label> <input type="submit" name="Submit" value="ENTRAR"> </label> <div align="right"></div> </div> <div align="right"></div> </td> </tr> </table> <div align="center"><br> <br> <br> <br> <br> <br> <label> </label> <a href="deslogar.php">Deslogar</a><br> </div> </form> </body> </html>  
       
      loga.php
      <?php // Turn off all error reporting error_reporting(0); // Report simple running errors error_reporting(E_ERROR | E_WARNING | E_PARSE); // Reporting E_NOTICE can be good too (to report uninitialized // variables or catch variable name misspellings ...) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // Report all errors except E_NOTICE // This is the default value set in php.ini error_reporting(E_ALL ^ E_NOTICE); // Report all PHP errors error_reporting(E_ALL); // Same as error_reporting(E_ALL); ini_set('error_reporting', E_ALL); ini_set("display_errors", 1); ?> <?php // variáveis para conexão $host = 'localhost'; // define o host do banco de dados $user = 'root'; // user do banco de dados $password = ''; // senha do banco de dados $database = 'database'; // nome do banco de dados // estabelecer conexão com o mysql $sqli = new mysqli($host, $user, $password); // verificar se houve erro na conexão if ($sqli->connect_error) { // se houve erro, mostra erro na tela echo "<p>Erro ao Conectar: $sqli->connect_error</p>"; } // alterar o tipo de codificação da conexão com o banco de dados, para utf8 if (!$sqli->set_charset('utf8')) { echo "<p class='error'>O charset não é utf8: $sqli->error</p>"; } // selecionar/abrir o banco de dados para trabalhar if (!$sqli->select_db($database)) { // se o banco de dados não for encontrado echo "<p class='error'>Banco de dados não encontrado, chefe!</p>"; } // arquivo de verificar o login session_name('user1,user2'); session_start(); if (isset($_POST['acao']) && $_POST['acao'] == 'logar') { // trata o nome $nome = $sqli->real_escape_string($_POST['nome']); // define a query de busca $query = "SELECT * FROM sis_login WHERE login='$nome' LIMIT 1"; // executa a query e guarda o resultado em $result $result = $sqli->query($query); // se há algum resultado if ($result->num_rows) { // guarda o resultado em $dados $dados = $result->fetch_assoc(); // verificar se a senha postada é igual a senha retornada if ($_POST['pwd'] == $dados['senha']) { // registra o user na sessão $_SESSION['nome'] = $dados; // redireciona para admin.php header('Location: admin.php'); exit; } // Se a senha não confere else { echo '<script>' . 'alert("Senha Inválida !!");' . 'document.location="log-admin.php";' . '</script>'; } } // Se não há resultados em $result, o Login é inválido else { echo '<script>' . 'alert("Login Inválido !!");' . 'document.location="log-admin.php";' . '</script>'; } } //agora a parte que verifica se o login já foi feito // se não há user em $_SESSION if (!isset($_SESSION['nome'])) { // Usuário não logado! Redireciona para a página de login echo '<script>' . 'alert("Acesso Negado !! Usuario Não Logado");' . 'document.location="log-admin.php";' . '</script>'; } ?>  
    • By studdiox
      Opa galera tudo certinho sou iniciante e a um tempo atrás fiz um sisteminha com session deixei parado e essa semana resolvi usar ele o que para minha surpresa não esta funcionando mais devido a atualização da versão do php na minha hospedagem .... bom se alguém puder me dar uma força ja tentei de tudo mas não consegui meu conhecimento é baixo ainda ....
       
      Erro esta no final do código  teria que substituir if(!session_is_registered("nome")) { 
       
       
      segue o código de verificação completo
      <? session_name("name"); session_start(); if($acao == "logar") { $conn = mysql_connect("mysql.servidor.com.br","user","senha"); //configure os dados do seu MySQL $banco = mysql_select_db("banco"); //coloque o nome do seu banco de dados $nome = $_POST['nome']; $q_user = mysql_query("SELECT * FROM login WHERE login='$nome'"); if(mysql_num_rows($q_user) == 1) { $query = mysql_query("SELECT * FROM login WHERE login='$nome'"); $dados = mysql_fetch_array($query); if($_POST['pwd'] == $dados['senha']) { session_register("nome"); header("Location: admin.php"); exit; } // Senha inválida else { echo("<script>"); echo("alert('Senha Inválida !!');"); echo("document.location='index.php';"); echo("</script>"); } } // Login inválido else { echo("<script>"); echo("alert('Login Inválido !!');"); echo("document.location='index.php';"); echo("</script>"); } } //agora a parte que verifica se o login já foi feito if(!session_is_registered("nome")) { // Usuário não logado! Redireciona para a página de login echo("<script>"); echo("alert('Acesso Negado !!');"); echo("document.location='log-admin.php';"); echo("</script>"); } ?>
    • By Philippe Luis
      Galera, bom dia.
      Bom, tenho uma aplicação aonde salvo o carrinho de compras em uma session.
      Em desenvolvimento local wampserver tudo ocorre tranquilo.
      Subi meus arquivos pra nuvem e criei um subdominio para api (api.meudominio.com.br). HTTPS
      So que oque acontece, quando tento gravar o carrinho na sessão simplesmente não acontece.
      (Sim. Estou usando session_start() antes de declarar a session);
      Alimento minha api via ajax via POST (não sei se tem alguma coisa haver, so informação). Os dados chegam e tudo certo mais só não grava não grava na session. e não me apresenta nenhum erro.
      Verifico pra ver se existe a $_SESSION['cart'] mais não encontro.
      O mais estranho é que se eu declarar uma session no script. Ex: $_SESSION['teste'] = 'valor';   a session é gravada perfeitamente. Apenas não grava dados dinâmicos.
      Estou hospedando no HostGator.
       
      Aplicação toda finalizada e acontece esse erro com prazo de entrega curtíssimo.
      Ajuda ai galera. 
       
    • By Philippe Luis
      Galera boa noite.
      Bom tenho um sistema em php onde uso sessions.
      Bom quando acesso meu site através do pc cria se uma session na pasta  /tmp no meu servidor, bom até ai tranquilo.
      Mais quando acesso o mesmo site pelo meu Smartphone, cria-se 4 arquivos de sessoes no minha pasta /tmp.
      Isso é um erro ou é comum acontecer ? Se for um erro como posso resolver?
       
      A foto a seguir mostra o ocorrido. Lembrando que nesse momento da foto só declarei apenas uma sessão .
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.