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 Evandrorussi
      Olá pessoal,
       
      Trabalho com PHP a uns 6 anos e me deparei com um problema de session que nunca ouvi falar, pelo menos não encontrei nada pela internet desse tipo. Tenho um servidor dedicado no Google Cloud e o site tem um sistema de login via session. O problema é que a session funciona aleatoriamente, tem hora que não funciona, o cliente troca de tela e o servidor perde a session e pede pra logar novamente, isso não acontece com todos usuários, comigo por exemplo não acontece.
      O cara que trabalha comigo não ocorria esse problema mas agora começou a acontecer e ele reparou que com guia anônima o problema não ocorre.
       
      Caso alguém pergunte, session_start() está iniciando em todas as páginas.
       
      Abraço
       
       
    • By Anderson Maciel
      Boa tarde pessoal,

      Estou quebrando a cabeça para resolver um problema, tenho uma div dinâmica que carrega uma <table> em uma das colunas deveria apresentar o componente Switchery, esta <table> é montada a partir de uma função PHP que faz o select em uma tabela do banco de dados conforme abaixo:
       
      echo '<table class="table table-hover"> <thead> <tr> <th>Nome</th> <th>Agrupamento</th> <th>Ativo</th> </tr> </thead> <tbody>'; foreach($data as $row) { If ($row['ativo'] == 1) {$vativochk = "checked";} else {$vativochk = "";} echo '<tr> <td>'.$row['nome'].'</td> <td>'.$row['agrupamento'].'</td> <td><input type="checkbox" name="ativo_grid" class="js-switch" '.$vativochk.' disabled="disabled"></td> </tr>'; } echo ' </tbody> </table>'; Aqui está o Ajax que chama e retorna atualizando a DIV:
      //funcoes do grid dos graficos function atualiza_grid_graficos() { $.ajax({ type: "POST", url: "hubfuncind.php", data: { id_tabindicadores_paineis: $('#id_tabindicadores_paineis').val(), acao: "gridgraficos" }, success: function(data) { $('#conteudo').html(data); } }); } O retorno vem certinho, mas apenas o componente Switchery está vindo desconfigurado, ou seja vem um checkbox normal (html).

      O que é mais incrível é que neste mesmo formulário mais acima tenho este mesmo componente funcionando normalmente, somente dentro da DIV dinâmica é que fica desconfigurado conforme imagem anexa.

      Será que alguém já passou por isso?

    • By violin101
      Caros amigos membros do grupo, saudações...
       
      Gostaria de tirar uma dúvida com os amigos.
       
      Tenho uma rotina onde consigo efetuar o Download de arquivos para uma pasta dentro do sistema, o que preciso seria mudar o nome do arquivo, por exemplo:
       
      após selecionar  o arquivo criado com o nome de: ESTOQUE.PDF
       
      gostaria de gravar na pasta de upload's com um novo nome, como por exemplo: cliente[1]-estoque.pdf.
       
      Onde poderia fazer essa alteração na rotina abaixo, para gravar o arquivo com um novo nome ?
       
      abaixo posto o fonte da rotina.
      <?php public function anexar() { $this->load->library('upload'); $this->load->library('image_lib'); $upload_conf = array( 'upload_path' => realpath('./assets/anexos'), 'allowed_types' => 'pdf|PDF|doc|DOC|docx|DOCX', // formatos permitidos para anexos de os 'max_size' => 1024, ); //Recebe a variável via POST $validade = $this->input->post('validade'); $this->upload->initialize($upload_conf); foreach ($_FILES['userfile'] as $key => $val) { $i = 1; foreach ($val as $v) { $field_name = "file_".$i; $_FILES[$field_name][$key] = $v; $i++; } } unset($_FILES['userfile']); $error = array(); $success = array(); foreach ($_FILES as $field_name => $file) { if (! $this->upload->do_upload($field_name)) { $error['upload'][] = $this->upload->display_errors(); } else { $upload_data = $this->upload->data(); if ($upload_data['is_image'] == 1) { // set the resize config $resize_conf = array( 'source_image' => $upload_data['full_path'], 'new_image' => $upload_data['file_path'].'thumbs/thumb_'.$upload_data['file_name'], 'width' => 200, 'height' => 125 ); $this->image_lib->initialize($resize_conf); if (! $this->image_lib->resize()) { $error['resize'][] = $this->image_lib->display_errors(); } else { $success[] = $upload_data; $this->load->model('Dados/Dadosclie_model'); $this->Dadosclie_model->anexar($this->input->post('idCli'), $this->input->post('descricao'), $validade, $upload_data['file_name'], base_url().'assets/anexos/', 'thumb_'.$upload_data['file_name'], realpath('./assets/anexos/')); } } else { $success[] = $upload_data; $this->load->model('Dados/Dadosclie_model'); $this->Dadosclie_model->anexar($this->input->post('idCli'), $this->input->post('descricao'), $validade, $upload_data['file_name'], base_url().'assets/anexos/', '', realpath('./assets/anexos/')); } } } if (count($error) > 0) { echo json_encode(array('result'=> false, 'mensagem' => 'Nenhum arquivo foi anexado.')); } else { echo json_encode(array('result'=> true, 'mensagem' => 'Arquivo(s) anexado(s) com sucesso .')); } } ?>  
      Grato,
       
      Cesar
    • By ViniciusRamoa
      Oi! Quando eu comecei a estudar php e logica de programação, é que uma das primeiras coisas que precisamos ter é uma noção exata do que queremos fazer, entao, o que eu estou querendo fazer, eu diria que é bem ousado para um iniciante, mas eu estou estudando e meu único foco é criar um de conteudos simples para meu site, será apenas para uso pessoal, nal tenho interesse em vender, mas iria disponibilizar para download , caso alguém queira, ele irá apenas postar conteúdos, apagar, editar e somente isso, não editará banner, ou layout ou qualquer outra coisa. Quero criar um sistema de loguin e dar permissão para apenas quem tiver o "rank 2" será considerado um adm e poderá postar.
      Nesse campo de postagem, terá apenas os campos de:
      Titulo
      Imagem (thumbnail)
      Link da página  (pois será um post clicavel, como um cardbox que ira redirecionar o visitante para a página destinada apenas àquele  conteudo) 
      Descrição 
      Apenas  isso
      Então, eu estou estudando PHP, no início ainda, mas é possivel eu criar tal ferramente em quanto tempo em média com a experiência que vocês ja possuem? 
      E outra, qual caminho devo seguir? Quero apenas criar o gerenciador de conteudo e sistema de loguin, tem algum "caminho" que eu deva seguir? Tenho que focar mais em x area para atingir o que eu quero e nao focar em y area, pois será perda de tempo? Como eu disse, quero apenas criar isso, e futuramente me aprofundar mais
      Então, possui alguma dica, orientação, link ou qualquer coisa que possa me ajudar a pelo menos ver qual caminho seguir, levando em conta que estou estudando por conta propria e nao tenho quem me orientar? Obrigado 
    • By Anderson Maciel
      Boa tarde pessoal,

      Estou quebrando a cabeça para resolver um problema, tenho uma div dinâmica que carrega uma <table> em uma das colunas deveria apresentar o componente Switchery, esta <table> é montada a partir de uma função PHP que faz o select em uma tabela do banco de dados conforme abaixo:
       
      echo '<table class="table table-hover"> <thead> <tr> <th>Nome</th> <th>Agrupamento</th> <th>Ativo</th> </tr> </thead> <tbody>'; foreach($data as $row) { If ($row['ativo'] == 1) { $vativochk = "checked"; } else { $vativochk = ""; } echo '<tr> <td>'.$row['nome'].'</td> <td>'.$row['agrupamento'].'</td> <td><input type="checkbox" name="ativo_grid" class="js-switch" '.$vativochk.' disabled="disabled"></td> </tr>'; } echo '</tbody> </table>'; Aqui está o Ajax que chama e retorna atualizando a DIV:
       
      function atualiza_grid_graficos() { $.ajax({ type: "POST", url: "hubfuncind.php", data: { id_tabindicadores_paineis: $('#id_tabindicadores_paineis').val(), acao: "gridgraficos" }, success: function(data) { $('#conteudo').html(data); } }); } O retorno vem certinho, mas apenas o componente Switchery está vindo desconfigurado, ou seja vem um checkbox normal (html).

      O que é mais incrível é que neste mesmo formulário mais acima tenho este mesmo componente funcionando normalmente, somente dentro da DIV dinâmica é que fica desconfigurado conforme imagem anexa.

      Será que alguém já passou por isso?

×

Important Information

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