Ir ao conteúdo
  • Cadastre-se

PHP Como manter o usuário logado usando cookies no PHP


Posts recomendados

Opa galera, tudo beleza? Então estou desenvolvendo um projeto e gostaria que na tela de login quando o usuário marcasse a opção mantenha-me conectado o usuário mantivesse logado independente se o navegador fosse fechado, eu até entendo que devo usar cookies mas acho meio complicado de como introduzir ao meu projeto se alguém puder me ajudar eu ficaria muito agradecido. Eu estou usando PHO OO .

Link para o comentário
Compartilhar em outros sites

@gomes_gabriel Você pode usar uma session para isso!

 

A documentação de como iniciar ela 

https://www.php.net/manual/pt_BR/function.session-start.php

 

Um tutorial de como usar

https://www.w3schools.com/php/php_sessions.asp

Link para o comentário
Compartilhar em outros sites

@gomes_gabriel Você poderia criar uma classe Header que se incluida no arquivo testa se existe ou não uma sessão, ai ela é setada com o id do login e senha que está no DB.

 

E como fariamos isso?

 

<?php 
//na classe header, ou somente header
if (! isset($SESSION)) { session_start()}

 

Para voce tem uma sessão constante que o usúario somente será deslogado após 1 hora por exemplos fariamos:

 

<?php
if (! isset($_SESSION)) {
    $time = 2 * 60 * 60; // Defini 2 horas
  						 // Os parametros são dados em segundos
    session_set_cookie_params($time); 
    session_start();
}

Beleza luiz entendi, mas e agora, como vou fazer para deixar ele logado eternamente e com um id?

Vamos supor que no banco de dados ele logue com email e senha, assim, quando validado é chamada uma função onde na sessão dele que é gravada em um arquivo PROPRIO no servidor, tu armazenará um ID único, ou seja, o id primary key do DB. como ficaria isso?

 

// Você valida e retorna os dados do usúario logado
// armazena em uma variavel com PDO
$dados = DB->getUser();

//assim com a sessão startada lá em cima com o Header, você só faz um if com algum parametro do usuário ¨Deseja manter'se conectado?¨. Se sim

if ($dConectado == 'sim') {
	$time = 60*60*24*30; // Defini 30 dias
    session_set_cookie_params($time); 
    session_start();
	$_SESSION['id'] = $dados->id;
} else {
	exit();
}

Não sei se é a melhor forma mas já é algo, não copie e cole, eu fiz um código exemplo que pode não funcionar porque não foi testado, mas usei inúmeras vezes o "conceito" e sempre deu certo. O usuário sai do navegador e continua logado.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!