Ir para o conteúdo

GPWeb

 Voltar a Bugs encontr...
Tela cheia

Erro Após Login - Sessão Encerrada Automaticamente

20 de Maio de 2011, 19:12 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 101 vezes

Fiz o upgrade do GPWeb para versão 7.5, criei um novo banco e apaguei a pasta anterior do GPWeb_7.4, porém após autenticar no sistema e clicar em qualquer botão ou link, automaticamente a sessão encerra e me redireciona para a página inicial solicitando login novamente.

Se eu coloco em outro servidor funciona normalmente. Porém não posso mudar de servidor por que o DNS já está configurado em nosso orgão gerenciador de rede do estado e tenho outros serviços rodando paralelamente no servidor em questão.

Com isso, peço a gentileza que faça o acesso para você verificar o problema no GPWeb em:

http://gestao.inclusaodigital.mg.gov.br (O erro só ocorre quando o sistema é acessado através do nome em questão)
ou
http://200.149.134.117/gpweb (Quando o sistema é acessado via IP, funciona normalmente.

Reparei também que na função da versão 7.4 acessando o sistema via nome funciona, porém com  a mansagem de erro:
Notice: Undefined offset: 4 in /var/www/html/gpweb/incluir/sessao.php on line 188

Na função abaixo da versão 7.5 não aparece a mensagem de erro, porém após autenticar no sistema ao clicar em qualquer link ou botão o sistema me redireciona para a página inicial solicitando login novamente.

Acredito que com esse detalhe da função a gente consiga resolver essa questão.

#Função Padrão da versão 7.5
function sessaoIniciar($variaveis_inicio = 'Aplic') {
        session_name(config('nomeBd'));
        if (ini_get('session.auto_start') > 0) session_write_close();
        if (config('administrando_sessao') == 'app') {
                ini_set('session.save_handler', 'user');
                if (version_compare(phpversion(), '5.0.0', '>=')) register_shutdown_function('session_write_close');
                session_set_save_handler('sessaoAbrir', 'sessaoFechar', 'sessaoLer', 'sessaoEscrever', 'sessaoDestruir', 'sessaoGC');
                $tempo_max = sessaoConverterTempo('max_lifetime');
                }
        else $tempo_max = 0;
        preg_match('_^(https?://)([^/]+)(:0-9]+)?(/.*)?$_i', BASE_URL, $url_parts);
        $diretoriogpweb = array_pop($url_parts);
        if (!$diretoriogpweb) $diretoriogpweb ='/gpweb';

        if (substr($diretoriogpweb, 0, 1) != '/') $diretoriogpweb = '/'.$diretoriogpweb;
        if (substr($diretoriogpweb, -1) != '/') $diretoriogpweb .= '/';
        session_set_cookie_params($tempo_max, $diretoriogpweb);
        session_start();
        }



#Função da versão 7.4
function sessaoIniciar($variaveis_inicio = 'Aplic') {
        session_name(config('nomeBd'));
        if (ini_get('session.auto_start') > 0) session_write_close();
        if (config('administrando_sessao') == 'app') {
                ini_set('session.save_handler', 'user');
                if (version_compare(phpversion(), '5.0.0', '>=')) register_shutdown_function('session_write_close');
                session_set_save_handler('sessaoAbrir', 'sessaoFechar', 'sessaoLer', 'sessaoEscrever', 'sessaoDestruir', 'sessaoGC');
                $tempo_max = sessaoConverterTempo('max_lifetime');
                }
        else $tempo_max = 0;
        preg_match('_^(https?://)([^/]+)(:0-9]+)?(/.*)?$_i', BASE_URL, $url_parts);
        $diretorioCookie = $url_parts[4];
        if (substr($diretorioCookie, 0, 1) != '/') $diretorioCookie = '/'.$diretorioCookie;
        if (substr($diretorioCookie, -1) != '/') $diretorioCookie .= '/';
        session_set_cookie_params($tempo_max, $diretorioCookie);
        session_start();
        }

Autor: Henrique Vieira


88 comentários

  • F205f9606b3272f6589a208b80b051ee?only path=false&size=50&d=404Sérgio Reinert(usuário não autenticado)
    20 de Maio de 2011, 20:32

     

    Esse erro é mais complexo de analisar que os anteriores. Mas vou fazer o possível para estar resolvido até domingo, na versão 7.5.2.

    • F205f9606b3272f6589a208b80b051ee?only path=false&size=50&d=404Sérgio Reinert(usuário não autenticado)
      20 de Maio de 2011, 21:46

       

      Da primeira análise sumária aqui vai o que está ocorrendo.

       O programa a princípio é instalado num servidor como uima pasta chamada gpweb.

       Mas imagine que vc queira duas versões ao mesmo tempo no mesmo servidor. Isso não é problema, basta, criar uma nova pasta dcom outro nome, ex: gpweb_demo .

      O programa descobre o nome do programa pegando a URL do mesmo e explodindo em pedaços de acordo com as barras caídas para à direita (/) , e considera a última o nome do programa.

      Quando vc mascara usando gest​ao.i​nclu​saod​igit​al.m​g.go​v.br​ar o programa não retem o nome do programa e a sessão não é criada corretamente.

       

      Faça este teste:

      logo acima de session_set_cookie_params($tempo_max, $diretoriogpweb);

      coloque  $diretoriogpweb='\gpweb\';

      Ou seja:

          if (substr($diretoriogpweb, -1) != '/') $diretoriogpweb .= '/';
          $diretoriogpweb='\gpweb\';
          session_set_cookie_params($tempo_max, $diretoriogpweb);
          session_start();

       Acredito que irá sanar. Se não funcionar, me avise.

  • 6606582dd3577e14ee2732a4bb3e7da2?only path=false&size=50&d=404Ricardo Guimarães Mueller Rocktaeschel(usuário não autenticado)
    25 de Maio de 2011, 13:50

     

    O problema é decorrente do código abaixo que gera um path incorreto para a função session_set_cookie_params quando a url não contem um diretório da aplicação.

    É o caso de gest​ao.i​nclu​saod​igit​al.m​g.go​v.br​, sendo gerado o path '//gestao.inclusaodigital.mg.gov.br/' que é o último elemento do array $url_parts.

    O mesmo não ocorre ao acessar pelo IP 200.​149.​134.​117/​gpwe​b, quando é gerado o path correto '/gpweb/' por haver sido informado o diretório da aplicação.

        preg_match('_^(https?://)([^/]+)(:0-9]+)?(/.*)?$_i', BASE_URL, $url_parts);
       $diretoriogpweb = array_pop($url_parts);
        if (!$diretoriogpweb) $diretoriogpweb ='/gpweb';

        if (substr($diretoriogpweb, 0, 1) != '/') $diretoriogpweb = '/'.$diretoriogpweb;
        if (substr($diretoriogpweb, -1) != '/') $diretoriogpweb .= '/';
        session_set_cookie_params($tempo_max, $diretoriogpweb);

     Para corrigir o problema sugiro o código a seguir:

      preg_match('_^(https?://)([^/]+)(:0-9]+)?(/.*)?$_i', BASE_URL, $url_parts);
      if (count($url_parts) > 3) {
          $diretoriogpweb = array_pop($url_parts);
          if (!$diretoriogpweb) $diretoriogpweb ='/gpweb';

          if (substr($diretoriogpweb, 0, 1) != '/') $diretoriogpweb = '/'.$diretoriogpweb;
          if (substr($diretoriogpweb, -1) != '/') $diretoriogpweb .= '/';
      }
      else {
          $diretoriogpweb = '/';
      };
      session_set_cookie_params($tempo_max, $diretoriogpweb);

    • F205f9606b3272f6589a208b80b051ee?only path=false&size=50&d=404Sérgio Reinert(usuário não autenticado)
      25 de Maio de 2011, 15:14

       

      Agradeço a dica de código farei um teste aqui, e se correr bem estará na versão 7.5.3 que lançarei sexta-feira desta semana.

       Torço para mais pessoas contribuam com solução de código, pois terei mais tempo para me dedicar a criar novas funcionalidades.

      • 58a5ce2cab03010c037e7d7710b254ee?only path=false&size=50&d=404Henrique Vieira(usuário não autenticado)
        25 de Maio de 2011, 18:54

         

        Após inserir o código que o Ricardo passou FUNCIONOU!!! Agradeço a todos da comunidade e especialmente ao Ricardo e Sérgio por contribuírem para a solução do problema.  

GP-Web v. 8.0.26 (24 Jun)

25 de Junho de 2012, 1:22, por Desconhecido



Treinamento do GP-Web em Porto Alegre-RS

8 de Maio de 2012, 0:22, por Desconhecido

Devido a uma solicitação da Polícia Militar do Rio de Janeiro, que enviará oficiais ao 3º Batalhão de Comunicações, para treinamento no software GP-Web, dentre os dias 15 a 17 de maio do corrente ano, foi franqueado para as Forças Armadas, demais Polícias e Bombeiros Militares do Brasil.



Patrocínio do Tribunal de Justiça do Acre ao GP-Web

23 de Abril de 2012, 12:44, por Desconhecido

Foram realizadas diversas melhorias na versão 8.0.17 do GP-Web, todas patrocinadas pelo Tribunal de Justiça do Acre, com destaque para:



Treinamento do GP-Web para o Ministério da Integração

8 de Abril de 2012, 19:56, por Desconhecido



Treinamento do GP-Web para o INSS

4 de Abril de 2012, 5:49, por Desconhecido