Jump to content
RafsF

Armazenando vários dados na sessão

Recommended Posts

Boa noite.

 

Sou leigo em PHP e atualmente tenho um projeto apenas para fins didáticos.

 

Estou com um sistema de login, e gostaria de armazenar várias informações dentro de uma session. Porém, só estou conseguindo armazenar o email e senha (que é digitado pelo usuário no formulário de login).

 

O formulário de login (index.php) está assim:

<div class="modal-body">
	<form name="loginform" method="post" action="userauthentication.php" class="form-login">
		<div class="input-group">
        	<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
        	<input type="email" name="email" id="inputEmail" class="form-control" placeholder="Exemplo: usuario@hotmail.com" required autofocus> 
        </div>
            
        <div class="input-group">
        	<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
        	<input type="password" name="senha" id="inputPassword" class="form-control" placeholder="••••••••••••••••" required>
        </div>
</div>

 

O arquivo de autenticação de usuário (userauthentication.php) está assim:

<?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']=$_POST['email'];
	$_SESSION['senha']=$_POST['senha'];
	


	echo "<script>alert('Você foi autenticado com sucesso. Redirecionando...');</script>";
	echo "<script>loginsuccessfully()</script>"; //Script para redirecionamento de páginas
}
    else {
    	echo "<script>alert('Usuário ou senha incorretos. Tente novamente.');</script>";
    	echo "<script>loginfailed()</script>"; //Script para redirecionamento de páginas
    }
?>

 

Eu gostaria de armazenar todos os dados (nome, endereço, data nascimento, etc) do usuário quando ele logasse com seu login e senha, e depois fazer uma consulta com SESSION, exemplo:

.$_SESSION['data_nasc'].

 

Atualmente eu consigo fazer essa consulta como citada acima somente com o EMAIL e SENHA, que são os campos que o usuário completa no formulário de login.

 

Então, na verdade, a session só está armazenando os campos que o usuário digita no login. 

 

E como eu disse, eu gostaria de consultar todos os dados, e não somente o que o usuário digita no formulário de login.

 

Eu dei uma olhada neste tópico: https://forum.imasters.com.br/topic/562416-resolvido-mostrar-mais-de-um-dado-do-usuário-logado-php/ porém não consegui resolver.

 

Share this post


Link to post
Share on other sites

Olá, eu não sei realmente qual a duvida mas na minha seria somente colocar o resto do campo na autenticação, pois la você colocou semente o email e senha, colocque o que quer junto com os outros campos despois da session_star

 

  • Confuso 1

Share this post


Link to post
Share on other sites
3 minutos atrás, lucianfpaula disse:

Olá, eu não sei realmente qual a duvida mas na minha seria somente colocar o resto do campo na autenticação, pois la você colocou semente o email e senha, colocque o que quer junto com os outros campos despois da session_star

 

 

Não adianta só adicionar o resto dos campos (nome, cpf, etc) ali na autenticação pois a sessão está guardando o que o usuário digita no input do login. Caso eu quisesse gravar mais dados, eu teria que criar mais inputs, exemplo:

 

EMAIL:_________

SENHA:_________

CPF:___________

ENDEREÇO:________

 

Se tivesse esses 4 inputs pro usuário preencher na página de login, aí sim eu conseguiria "só adicionar" os dados na autenticação.

Share this post


Link to post
Share on other sites

você ta chamando seu arquivo de autenticação tipo

require_once 'autenticacao.php';

 

se assim estiver, dentro da autenticação coloque as variaveis.

    $usuario = $_SESSION["usuario"];
    $senha  = $_SESSION["senha"];

   $endereco  = $_SESSION["endereco"];

  etc....

 

e na outra pagina chame as variveis em vez de chamar as session direto.
    
    

Share this post


Link to post
Share on other sites

Amigo, se você esta verificando se existe um usuario com este email e login, apartir que ele encontre alguem, você pode trazer os dados do mesmo, vou da um exemplo: 

<?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();
  		//Pegando os dados do usuario e jogando nas sessões
  		$row  					 =  mysqli_fetch_assoc($sql);
        $_SESSION['id'] 		 = $row['id'];
  		$_SESSION['data_nac'] 	 = $row['data_nac'];
  		$_SESSION['nome']  		 = $row['nome'];		
		$_SESSION['email']		 = $row['email'];
		$_SESSION['senha']		 = $row['senha'];
	


	echo "<script>alert('Você foi autenticado com sucesso. Redirecionando...');</script>";
	echo "<script>loginsuccessfully()</script>"; //Script para redirecionamento de páginas
}
    else {
    	echo "<script>alert('Usuário ou senha incorretos. Tente novamente.');</script>";
    	echo "<script>loginfailed()</script>"; //Script para redirecionamento de páginas
    }
?>

 

  • +1 1

Share this post


Link to post
Share on other sites

Não entendi a necessidade de armazenar todos esses dados em sessão, se elas estão ali no db para quando e onde quiser.

 

A resposta acima faz exatamente o que você quer.. Entretanto, como você mencionou 'fins didáticos' na sua pergunta, devo dizer ... esse código está obsoleto.. dá uma pesquisada em mysqli e pdo, pois não tem sentido aprender errado.

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 fideles
      Pessoal, tudo bem?
       
      Tenho uma pagina onde as pessoas me enviam NF para faturamento.
       
      Me perguntaram, é possível que essa pagina funcione por exemplo, somente os 15 primeiros dias do mês e os últimos 15 dias, elas permaneça fechada ou direcione para outra pagina mostrando "Período de envio fechado" (exibir a mensagem é tranquilo).
       
      Alguém imagina algo? Não consegui, sendo sincero mesmo.
       
    • By asacap1000
      Salve Galera!!! estou com um projeto onde preciso disponibilizar na intranet documentos que estão em um servidor.
      Estes documentos estão salvos em diversas pastas dividido por dias meses e anos etc etc.
      Não quero que list todos os documentos porém ele seria pesquisado.
      Exemplo: NF 123456
      No arquivo salvaram assim "cliente NF 123456.pdf", tentei utilzar o glob porém ele não retorna nada nem deu erro.
      Por ser em outro servidor não seu se ele consegue ler já pesquisei mas não encontrei nada sobre isso.
       
      Saberiam me ajudar com este caso:
       
      Na intranet ele terá uma busca normal de relatórios ao listar essas informações ele diponibiliza um link com o numero da NF a qual eu chamaria essa página para realizar a busca no servidor e assim abrir o arquivo no navegador..
    • By k9studio
      Olá Pessoal,
       
      Tenho um campo em uma tabela que grava os dados neste formato a baixo:
      {""user_id":"1","user_token":"5181e24c8a7e60304156e08595f48ad6"}
       
      como faço para chamar esses dados no php separados...
       
      fico grato se alguém puder ajudar..
    • By adrianno
      Olá, estou com a seguinte dúvida com uso do JWT , trabalho com PHP a um tempo e estou migrando alguns projetos para formato API REST,  mas também começando a trabalhar com JS,REACT, NODE etc e a dúvida basicamente se aplica independente da linguagem uma vez  que o formato JWT é padrão.
      Vamos lá,   imagine que ao fazer um login bem sucedido o usário receba um token JWT  padrão, e no payload  coloquei o ID: "ff0eb2864feb22354747f8c85d42ccb5" e EMAIL :  "email@teste.com" do usuário junto com outras info padrão de um JWT,   mas qual pe a forma mais correta de validar este token?  usando métodos de verificar a assinatura, ok,   desmontando e montando novamente o token passado para comparar, OK  mas como eu verifico a integridade do usuário, imagine que eu de alguma forma um usuário malicioso obtenha o token de outro usuário, se ele enviar este token em uma requisição, ele seria aceito, mesmo sem ter que fazer o login de usuário, uma vez  que a rota em questão vai verificar o token e o mesmo teoricamente vai funcionar e este teria acesso a API em nome de outro usuário. Quais são as formas corretas de se trabalhar com JWT?
    • By leandro123456789
      <div id="direito">
             
             <?php 
                      
                 $link = filter_input(INPUT_GET, 'link');
                 
                 $pag[1] = "../admin/home.php";
                 $pag[2] = "../admin/classes/Lista.php";
                 
              
              
                 if(!empty($link)){
                     
                     if(file_exists($pag[$link]))
                        
                      {
                         include $pag[$link];
                      
                      }
                        
                      else
                      { 
                         
                          include "home.php";
                      
                      }
                     
                 }else{
                     include "home.php";
                 }
              
              ?>
             
          </div>
       
       
      Estou tentando colocar a paginação do meu banco em $ pag [2] na minha página: ../admin/classes/Lista.php tem o seguinte código de paginação:

      <? php
          
          include_once ("../ admin / classes / ClassConexao.php");
          
          
          // verifique a página atual se informado no URL, caso contrário, ela será atribuída como 1ª página
          $ pagina = (isset ($ _ GET ['link = 2']))? $ _GET ['link = 2']: 1;
       
          // seleciona todos os itens da tabela
          $ cmd = "selecione * da categoria";
          $ produtos = mysqli_query ($ conn, $ cmd);
          
          // conta o total de itens
          $ total = mysqli_num_rows ($ produtos);
       
          // seta o número de itens por página, neste caso, 2 itens
          $ registros = 2;
       
          // calcula o número de páginas arredondando o resultado
          $ numPaginas = teto ($ total / $ registros);
       
          // variável para calcular o início da visualização com base na página atual
          $ inicio = ($ registros * $ pagina) - $ registros;
       
          // seleciona itens por página
          $ cmd = "selecione * da categoria limite $ inicio, $ registros";
          $ produtos = mysqli_query ($ conn, $ cmd);
          $ total = mysqli_num_rows ($ produtos);
           
          // exibe produtos selecionados
          while ($ produto = mysqli_fetch_array ($ produtos)) {
              echo $ produto ['id_categoria']. "-";
              echo $ produto ['categoria']. "-";
              echo $ produto ['ativo_categoria']. "<br />";
          }

      // Não sei como consertar esta parte para mostrar a paginação nesse $ pag [2] = "../admin/classes/Lista.php";
           
          // exibe paginação
          para ($ i = 1; $ i <$ numPaginas + 1; $ i ++) {
              
             echo "<a href='?pagina=$i'>". $ i. "</a>";
          }
                  
      ?>
      Meu menu fica assim:

      <div id = "sessao"> Categoria </div>
         <ul>
             
            
             <li> <a href="index.php?link=3"> Cadastro </a> </li>
             <li> <a href="index.php?link=2"> Listar / Editar </a> </li>
         
        </ul>
×

Important Information

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