Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CrazyLOL

Trabalhando OO - Classe Sessao

Recommended Posts

Galera, estou trabalhando em um projeto e estou usando PHP OO, e nesse processo encontrei uma classe na internet que é responsavel para trabalhar com as session que vou ter no sistema, até ai está tranquilo.

 

Único problema é que estou tendo está mensagem:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /Users/tabaco/Google Drive/Projetos/Sites/crm/com/php/model/Autenticar.php:55) in /Users/tabaco/Google Drive/Projetos/Sites/crm/com/php/lib/Sessao.php on line 12

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /Users/tabaco/Google Drive/Projetos/Sites/crm/com/php/model/Autenticar.php:55) in /Users/tabaco/Google Drive/Projetos/Sites/crm/com/php/lib/Sessao.php on line 12

Vou postar as minhas duas classes, ambas estão na raiz do meu projeto.

 

Classe Sessao:

<?php
 
class Sessao {
 
    public static function set($chave, $valor) {
        session_start();
        $_SESSION[$chave] = $valor;
        session_write_close();
    }
 
    public static function get($chave) {
        session_start();
        $value = $_SESSION[$chave];
        session_write_close();
        return $value;
    }
 
    public static function checar($chave) {
        session_start();
        if (isset($_SESSION[$chave]) && (!empty($_SESSION[$chave]))) {
            session_write_close();
            return true;
        }
        else {
            session_write_close();
            return false;
        }
    }

    public static function destroy(){
        session_start(); 
        session_regenerate_id(true); 
        session_destroy();
        session_write_close();
    }
}

Classe Autenticar:

<?php
/**
* Autenticar
* @author Roni
*/
class Autenticar {
 
    public static function isLogin(){
       if(Sessao::checar('crm_cod_empresa') && Sessao::checar('crm_cod_funcionario')){
            return true;
       }else{
            self::logoff();
            //redirecionar
            header("Location: login.php");
       }
    }
    
    public static function logoff(){
      Sessao::destroy();        
    }

    public static function loginWeb($usuario, $senha){
      $DB = new DataBase(); 
      
      //recuperando os dados do funcionario
     $query = "select a.*,
                       c.ativo as ativo_empresa,
                       c.cod_sistema_empresa
                  from
                empresas_funcionario a 
                left outer join empresas b on b.cod_empresa = a.cod_empresa
                left outer join sistema_empresas c on c.cod_sistema_empresa = b.cod_sistema_empresa
                 where a.usuario = '{$usuario}' 
                  and a.senha = '{$senha}'";
      $result = $DB->query($query); 
     
      if($result->num_rows > 0){
        
        $obj = $result->fetch_object();

        //verificando se a empresa está ativa no sistema
        if($obj->ativo_empresa === 'S'){
          //verificando conta do usuario ativo
          if($obj->ativo === 'S'){
            //criando as Sessões
            Sessao::set('crm_cod_sistema_empresa', $obj->cod_sistema_empresa);
            Sessao::set('crm_cod_funcionario', $obj->cod_funcionario);
            Sessao::set('crm_cod_empresa', $obj->cod_empresa);
            Sessao::set('crm_cod_grupo_acesso', $obj->cod_grupo_acesso);

            //verificando se tem acessos
            $acessos = $obj->acessos !== '' && $obj->acessos !== null ? explode(",", $obj->acessos) : array();
            Sessao::set('crm_acessos', $acessos);

            echo "meu csaco".$obj->cod_sistema_empresa."<br>";
            echo "Testestests: ".Sessao::get('crm_cod_sistema_empresa');

            return true;
          }else{
            return "Seu usuário está inativo, entre em contato com o administrador do sistema";
          }
        }else{
          return "Ops, acesso não autorizado. Entre em contato com o Suporte.";
        }
      }else{
        return "Usuário ou senha estão incorretos";
      }

    }
}

Já procurei na internet e alguns foruns falaram que o Session precisa iniciar antes de qualquer arquivo, fiz os testes colocando o session_start() no inicio do arquivo antes de tudo mas mesmo assim aparece a mensagem, o meu arquivo esta salvo no formato certo tambem vi algo falando sobre o formato BOM do editor de texto e etc.. Enfim, gostaria de seguir a logica correta no OO, o que fiz ou deixei de fazer?

 

Agradeço a ajuda antecipadamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim LandersonAlmeida o arquivo está salvo neste formato.

 

Mas ai que está o negocio... os includes dos arquivos estão sempre no TOPO, antes do doctype...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passei por isto ano passado, e quando fui ver era uma quebra de linha desnecessária e um arquivo sem estar salvo em UTF-8, verifique novamente todos os seus arquivos, tenho quase certeza que é isto :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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