Cadastro e Login - #25 Sessions I
22/11/2018Nessa vídeo aula vamos iniciar os trabalhos com $_SESSION no PHP. Vamos setar algumas configurações para tornar nossas sessões mais seguras.
Trabalhando com Sessions para Login
Vamos iniciar criando a constante domain dentro do arquivo config.php
define("DOMAIN",$_SERVER["HTTP_HOST"]);
Posteriormente dentro do diretório classes vamos criar a ClassSession:
<?php
namespace Classes;
use Models;
class ClassSessions{
private $login;
private $timeSession=1200;
private $timeCanary=300;
public function __construct()
{
if(session_id() == ''){
ini_set("session.save_handler","files");
ini_set("session.use_cookies",1);
ini_set("session.use_only_cookies",1);
ini_set("session.cookie_domain",DOMAIN);
ini_set("session.cookie_httponly",1);
if(DOMAIN != "localhost"){ini_set("session.cookie_secure",1);}
/*Criptografia das nossas sessions*/
ini_set("session.entropy_length",512);
ini_set("session.entropy_file",'/dev/urandom');
ini_set("session.hash_function",'sha256');
ini_set("session.hash_bits_per_character",5);
session_start();
}
$this->login=new Models\ClassLogin();
}
#Proteger contra roubo de sessão
public function setSessionCanary($par=null)
{
}
#Verificar a integridade da sessão
public function verifyIdSessions()
{
}
#Setar as sessões do nosso sistema
public function setSessions($email)
{
$this->verifyIdSessions();
$_SESSION["login"]=true;
$_SESSION["time"]=time();
$_SESSION["name"]=$this->login->getDataUser($email)['data']['nome'];
$_SESSION["email"]=$this->login->getDataUser($email)['data']['email'];
$_SESSION["permition"]=$this->login->getDataUser($email)['data']['permissoes'];
}
#Validar as páginas internas do sistema
public function verifyInsideSession()
{
}
}
Dentro do arquivo ClassValidate vamos instanciar a class session através de uma composição e vamos chamar o método setSession()
private $session;
public function __construct()
{
$this->cadastro=new ClassCadastro();
$this->password=new ClassPassword();
$this->login=new ClassLogin();
$this->session=new ClassSessions();
}
#Validação final do login
public function validateFinalLogin($email)
{
if(count($this->getErro()) >0){
$this->login->insertAttempt();
}else{
$this->login->deleteAttempt();
$this->session->setSessions($email);
}
}
Posts Relacionados
Cadastro e Login - #24 Validate Active User
Nessa vídeo-aula vamos verificar se o token enviado pelo email está validado no nosso sistema verificando se o usuário está ativo.
Cadastro e Login - #26 Sessions II
Continuando nossa classe session, vamos desenvolver os métodos finais de configuração de uma sessão segura no PHP.