Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Cadastro e Login - #25 Sessions I

22/11/2018

Nessa 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);
    }
}
Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

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.
Saiba mais!
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.
Saiba mais!
Cadastro e Login
Neste curso vamos aprender a criar um sistema completo de cadastro e login.
Saiba mais!