Jump to content
Jonas Ribeiro Nascimento

Perco a sessão $_SESSION de uma view para outra view sistema php mvc próprio.

Recommended Posts

Estou criando meu próprio mvc php para adquirir mais conhecimento.

Mas estou me deparando com uma coisa muita estranha, eu perco a $_SESSION de uma view para outra view

Fiz um codigo simples pra testar.a.php ----- view a.php

Citar

a.php ----- view a.php

<?php
session_start();
$_SESSION['teste'] = 'Funcionou';
echo $_SESSION['teste'];
?>
Citar

b.php ----- view b.php

<?php
session_start();

echo $_SESSION['teste'];
// Notice: Undefined variable: _SESSION in    

var_dump($_SESSION);
// Notice: Undefined variable: _SESSION in NULL

?>
Citar

Minha Classe da Session

<?php
namespace Sis\Classes;

use App\Model\ClassLogin;
use Sis\Traits\TraitGetIp;

class ClassSession {

private $login;
private $timeSession = 1200;
private $timeCanary  = 300;

        public function __construct(){
                if(session_id() == ''){

                        ini_set("session.save_handler", "files"); //Cabeçalhos somente atraves de arquivos
                        ini_set("session.use_cookies", 1); //Habilita o uso de cookies
                        ini_set("session.use_only_cookies", 1); //Só pode habilitar a seção atraves de coockies
                        ini_set("session.cookie_domain", DOMAIN); //Só aceita coockies vindo do nosso sistema
                        ini_set("session.cookie_httponly", 1); //Só aceita script php e não deixa o javascript alterar o sistema

                        if(DOMAIN != "localhost"){
                                ini_set("session.cookie_secure", 1); //Para trabalhar com o SSL do servidor ativo
                        }

                        /*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 ClassLogin();
        }

        #Proteger contra roubo de sessão
        public function setSessionCanary($par=null){
                session_regenerate_id(true);
                if($par == null){
                        $_SESSION['canary']=[
                        "birth" => time(),
                        "IP" => TraitGetIp::getUserIp() //Pega o ip do usuario
                        ];

                }else{
                        $_SESSION['canary']['birth']=time();

                }
        }

        #Verificar a integridade da sessão
        public function verifyIdSessions(){
                if(!isset($_SESSION['canary'])){
                        $this->setSessionCanary();

                }

                if($_SESSION['canary']['IP'] !== TraitGetIp::getUserIp()){
                        $this->destructSessions();
                        $this->setSessionCanary();

                }

                if($_SESSION['canary']['birth'] < time() - $this->timeCanary){
                        $this->setSessionCanary("Time");

                }
        }

        #Setar as sessões do nosso sistema
        public function setSessions($Email){

                $this->verifyIdSessions();

                $_SESSION['Login']      = true;
                $_SESSION['Time']       = time();
                $_SESSION['Nome']       = $this->login->getIssetSession($Email)['data']['Nome'];
                $_SESSION['Email']      = $this->login->getIssetSession($Email)['data']['Email'];
                $_SESSION['Permissoes'] = $this->login->getIssetSession($Email)['data']['Permissoes'];

        }

        #Validar as páginas internas do sistema
        public function verifyInsideSession(){

                $this->verifyIdSessions();

                if(!isset($_SESSION['Login']) || !isset($_SESSION['Permissoes']) || !isset($_SESSION['canary'])){
                        $this->destructSessions();

                        header("Location: ".DIRPAGE."NaoAutorizado");

                }else{
                        if($_SESSION['Time'] >= time() - $this->timeSession){
                                $_SESSION['Time']=time();
                        }else{
                                $this->destructSessions();

                                header("Location: ".DIRPAGE."NaoAutorizado");

                        }
                }
        }

        #Destruir as sessions existentes
        public function destructSessions(){
                foreach (array_keys($_SESSION) as $key) {
                        unset($_SESSION[$key]);
                }
        }

        #testar
        public function testarSessions(){
                echo 'oiiiiiiiiiiiiiiiiiiiiiiooooooooooo';
        }

}
Citar

Abaixo segue as fotos dos comportamentos em 2 navegadores diferentes Mozila e Chorme

PUL73kBQQfr_Y9niFLbPIcYFJKwU1bmW2oPCP3ES

mBZCS3LX1ZZ8XK5i9nqt5viPwY6ygoOnE0f25Jje

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 peterstefan
      Boa tarde, quero fazer anúncios em um projeto e quero mostrar dentro de um foreach, mais quero mostrar a cada 5 blocos e depois mostro o anuncio do google.. isso tem algum novo para que eu possa pesquisar?
    • By violin101
      Caros amigos.
       
      saudações...
       
      Por favor PRIMEIRAMENTE peço desculpa em recorrer ao auxílios dos amigos, mas sou novato em CODEIGNITER.
       
      Através de muita Leitura e pesquisa sobre o tema, tenho conseguido desenvolver o que gostaria de executar.
       
      Me deparei com o seguinte problema que não estou conseguindo executar com êxito.
       
      Preciso criar uma FUNÇÃO onde o Sistema após o USUÁRIO efetuar o LOGIN possa realizar uma VALIDAÇÃO de Data e Hora.
      Por exemplo:
       
      Na base de dados tenho campos distintos como:
        `dataInicio` DATE NOT NULL ,
        `horaInicio` TIME NOT NULL ,
        `dataFim` DATE NOT NULL ,
        `horaFim` TIME NOT NULL ,
       
      Pergunta:
      como faço uma função para que o sistema possa comparar e calcular o PRAZO de VENCIMENTO com a DATA e HORA atual, ou seja:
      prazo para encerrar
      dataFim: 19/04/2019
      horaFim: 12:00
      ---------------------------------------
      vencimento
      dataAtual: 19/04/2019
      horaAtual: 12:01
      ==========================
       
      Se a Data/Hora já venceu o Sistema muda o STATUS para 2 (prazo encerrado).
       
      Grato,
       
      Cesar
       
       
       
       
       
       
    • By emersonbrs
      string(77) "[ 1, { "mensagem": "Recarga", "pin": "", "nsu": 1096 } ]" tenho esse array como eu faço para pegar mensagem com json_decode, exemplo se eu fizer assim
      <?php $array = file_get_contents( 'http://www.json-generator.com/api/json/get/bTLlkwcgOa?indent=2' ) ; $obj = json_decode($array); echo $obj->1->mensagem; ?> dessa forma da erro
       
       
      syntax error, unexpected '1' (T_LNUMBER), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in
       
      como resolver ?
    • By guzulino
      Eu tenho uma dúvida meio tosca, mas as páginas que eu estou colocando no site não estão carregando, quando acesso o site aparece uma página padrão de domínio reservado para um cliente HostGator, mas quando vou no cPanel fazer upload dos arquivos, eles não são carregados no site, tentei colocar na pasta "public_html" com o nome de index, mas mesmo assim ela não é carregada na página principal do site. Gostaria de saber qual a pasta em que devo colocar os arquivo das páginas principais para serem carregados. Eu já trabalhei com hospedagem na Locaweb, mas quis testar outra hospedagem para ver como funciona, mas até agora não deu muito certo, adquiri o domínio na semana passada então ele já deveria funcionar teoricamente.
    • By Anderson Ronilson Xavier
      Olá a todos gostaria da ajuda dos colegas estou em um projeto de site landing page  usando o plugin construtor de sites chamado themify ultra e não estou conseguindo uma galeria de imagens igual ao cliente está me pedindo que responsiva e com um menu que tenha as opções por exemplo "todas maçã banana laranja " se eu clicar em maçã a galeria ocultaria as bananas e Laranja e se eu clicar em todas e voltaria a apresentar todas as frutas ... Desculpa o jeito de explicar ... Mas galeria não estou conseguindo achar nada que me ajude a opção do themify ultra foi do próprio cliente que já tinha e acabei topando por fazer usando ele mesmo mas no site do themify não achei nenhum pluguin interessante a galeria deles é a padrão do WordPress será que teria como eu usar alguma outra os colegas tem alguma sugestão? 
       Vou deixar um site que o cliente deixou de modelo de como ele gostaria de que dele ficasse
       
      www.levelmont.com.br
       
      Grato pelo ajuda dos colegas.
       
       
×

Important Information

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