Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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.

 

Compartilhar este post


Link para o post
Compartilhar em outros 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

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.
    
    

Compartilhar este post


Link para o post
Compartilhar em outros 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
    }
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.