Ir para conteúdo
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por allencar.limma
      Tento incluir as informações de um formulário no banco de dados e não consigo. conforme código abaixo.
      <? /*Incluir as informações no formulario */ include "config.php"; $nome = trim($_POST['nome']); $masp = trim($_POST['masp']); $cpf = trim($_POST['cpf']); $telefone = trim($_POST['telefone']); $email = trim($_POST['email']); $endereco = trim($_POST['endereco']); $data_nascimento = trim($_POST['data_nascimento']); $unidade_lotacao = trim($_POST['unidade_lotacao']); /* Vamos checar algum erro nos campos */ if ((!$nome) || (!$masp) || (!$cpf) || (!$telefone) || (!$email) || (!$endereco) || (!$data_nascimento) || (!$unidade_lotacao)){ echo "ERRO: <br /><br />"; if (!$nome){ echo "Nome Completo é requerido.<br />"; } if (!$masp){ echo "Masp é requerido.<br />"; } if (!$cpf){ echo "CPF é requerido.<br /)>"; } if (!$telefone){ echo "Telefone é requerido.<br />"; } if (!$email){ echo "Email é requerido.<br />"; } if (!$endereco){ echo "Endereço é requerido.<br />"; } if (!$data_nascimento){ echo "Data de Nascimento é requerido.<br />"; } if (!$unidade_lotacao){ echo "Unidade de Lotação é requerido.<br>"; } echo "Preencha os campos abaixo: <br />"; include "formulario_cadastro.php"; }else { /* Vamos checar se o nome de Usuário escolhido e/ou Email já existem no banco de dados */ $sql_email_check = mysql_query( "SELECT COUNT(usuario_id) FROM usuarios WHERE email='{$email}'" ); $sql_masp_check = mysql_query( "SELECT COUNT(usuario_id) FROM usuarios WHERE masp='{$masp}'" ); $sql_cpf_check = mysql_query( "SELECT COUNT(usuario_id) FROM usuarios WHERE cpf='{$cpf}'" ); $eReg = mysql_fetch_array($sql_email_check); $uReg = mysql_fetch_array($sql_masp_check); $uReg = mysql_fetch_array($sql_cpf_check); $email_check = $eReg[0]; $masp_check = $uReg[0]; $cpf_check = $uReg[0]; if (($email_check > 0) || ($masp_check > 0) || ($cpf_check > 0)){ echo "<strong>ERRO</strong>: <br /><br />"; if ($email_check > 0){ echo "Este email já está sendo utilizado.<br /><br />"; unset($email); } if ($masp_check > 0){ echo "Este Masp já está sendo utilizado.<br /><br />"; unset($masp); } if ($cpf_check > 0){ echo "Este CPF já está sendo utilizado.<br /><br />"; unset($cpf); } include "formulario_cadastro.php"; }else{ /* Se passarmos por esta verificação ilesos é hora de finalmente cadastrar os dados. Vamos utilizar uma função para gerar a senha de forma randômica*/ function makeRandomPassword(){ $salt = "abchefghjkmnpqrstuvwxyz0123456789"; srand((double)microtime()*1000000); $i = 0; while ($i <= 7){ $num = rand() % 33; $tmp = substr($salt, $num, 1); $pass = $pass . $tmp; $i++; } return $pass; } $senha_randomica = makeRandomPassword(); $senha = md5($senha_randomica); // Inserindo os dados no banco de dados //$cpf = htmlspecialchars($cpf); ***RETIRADO PELO FATO DE NÃO ESTA SENDO USADO $sql = mysql_query( "INSERT INTO usuarios (none, masp, cpf, telefone, email, endereco, data_nascimento, unidade_lotacao) VALUES ('$nome', '$masp', '$cpf', '$telefone', '$email', '$endereco', '$data_nascimento', '$unidade_lotacao', now())") or die( mysql_error() ); if (!$sql){ echo "Ocorreu um erro ao criar sua conta, entre em contato."; }else{ $usuario_id = mysql_insert_id(); // Enviar um email ao usuário para confirmação e ativar o cadastro! $headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; $headers .= "From: RCI - <rci@rcionline.com.br>"; $subject = "Confirmação de cadastro - www.rcionline.com.br"; $mensagem = "Prezado {$nome} {$masp},<br /> Obrigado pelo seu cadastro em nosso site, <a href='http://www.rcionline.com.br'> http://www.rcionline.com.br</a>!<br /> <br /> Para confirmar seu cadastro e ativar sua conta em nosso site, podendo acessar à áreas exclusivas, por favor clique no link abaixo ou copie e cole na barra de endereço do seu navegador.<br /> <br /> <a href='http://www.rcionline.com.br/ativar.php?id={$usuario_id}&code={$senha}'> http://www.rcionline.com.br/ativar.php?id={$usuario_id}&code={$senha} </a> <br /> <br /> Após a ativação de sua conta, você poderá ter acesso ao conteúdo exclusivo efetuado o login com os seguintes dados abaixo:<br > <br /> <strong>Usuario</strong>: {$usuario_id}<br /> <strong>Senha</strong>: {$senha_randomica}<br /> <br /> Obrigado!<br /> <br /> Webmaster<br /> <br /> <br /> Esta é uma mensagem automática, por favor não responda!"; mail($email, $subject, $mensagem, $headers); echo "Foi enviado para seu email - ( ".$email." ) um pedido de confirmação de cadastro, por favor verifique e sigas as instruções!"; } } } ?>  
    • Por vinicius.david
      Gostaria que fosse possível encontrar produtos pela marca no Opencart 2.3.0.2. Quando a pessoa digitar no buscar a marca do produto, ele deveria mostrar todos os produtos que pertencem aquela marca. Em catalog/model/catalog/product.php já existe por padrão a função de procurar por fabricante: 

      if (!empty($data['filter_manufacturer_id'])) {                 $sql .= " AND p.manufacturer_id = '" . (int) $data['filter_manufacturer_id'] . "'";             }
      Mas ela não faz a função de procurar por marca. Alguém já encontrou alguma solução na internet para este caso?
    • Por manolegal
      Bom dia.
      Recebo em meu formulário um dado em forma de url.
      Extraio desta url o CNPJ da empresa. A seguir faço uma pesquisa para verificar se este CNPJ está em minha base de dados, sendo que se estiver trago dados da empresa para preenchimento do campo empresa do formulário.
      Estando a empresa no BD, consigo trazer os dados corretamente, porém estes dados não passados para o formulário para serem o valor inicial do campo empresa.
      $cnpj_numero = 12345678910; $Sql_cnpj = "SELECT id_empresa as id_empresa_bd_ext, upper(empresas.empresa) as fornecedor_bd_ext FROM empresas WHERE empresas.cnpj = '$cnpj_numero'"; $Resultado_cnpj = executa($Sql_cnpj); while ($linha_cnpj = pg_fetch_array($Resultado_cnpj)){ $empresa_bd_ext = $linha_cnpj["fornecedor_bd_ext"]; $forn_hid_bd_ext = $linha_cnpj["id_empresa_bd_ext"]; } echo "Fornecedor BD: $empresa_bd_ext - $forn_hid_bd_ext<br><hr>"; // Está mostrando dados corretamente // Definir valor a ser recebido pelo campo Empresa do Formulário if ($cnpj_numero != ""){ $empresa = $empresa_bd_ext; $forn_hid = $forn_hid_bd_ext; }else{ // Caso url não tenha trazido CNPJ, atribuo outro valor $empresa = $empresa_bd; $forn_hid = $forn_hid_bd; } O campo empresa do formulário não está recebendo o valor de $empresa. Considerando que exista um CNPJ, onde pode estar o problema?
    • Por edvaldo123
      Olá para todos, preciso de um código em PHP ou HMTL que mostre cotações de moedas, pra colocar em um site de notícias. Vou deixar um link abaixo onde tem exatamente o que preciso, porém queria remover algumas linhas desse código para não identificar seu site de origem.

      http://www.precododolar.com/widgets/cotacao.php
    • Por violin101
      Caros amigos
       
      Gostaria de tirar uma dúvida com os amigos.
       
      No Codeiginter tem como visualizar um arquivo .PDF dentro do sistema ?
       
      Por exemplo:
             o usuário realizou um download do arquivo --> DadosEmpresa.pdf
       
      Quando clicar em cima do arquivo, tem como visualizar em uma página o arquivo ?   E como faria ?
       
      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.