Flávio Silveira Programação & Desenvolvimento

  • BLOG
  • SOBRE
  • PORTFOLIO
  • CONTATO

CodeIgniter, Internet Explorer e o tempo de expiração da sessão

January 17th, 2009  |  Published in Browsers, CodeIgniter, Php  |  10 Comments

Nesta Quinta-feira antes de sair do trabalho me deparo com uma surpresa no novo sistema que estou trabalhando.  O login de acesso havia parado de funcionar no Internet Explorer. No Firefox tudo normal. Chata mania de ficar testando só no Firefox por conta das facilidades como Firebug e WebDeveloper, ai quando vamos testar no browser do usuário acontece essas coisas.

Sexta pela manhã, foi minha primeira tarefa do dia. Achei que seria algo bobo. Realmente era, mas levei 4 horas para descobrir.

Comecei pelos arquivos de JavaScript vendo se estava tudo ok.
Os retornos via ajax do banco estavam ok.
Parti para os controllers que gravam a sessão no browser.
Comentei a biblioteca que faz verificação da sessão para deixar eu acessar livremente a aplicação. Dei um print no valor da sessão, que pelo codeIgniter se verifica assim:

//Não esqueça de chamar o helper session
// Login é o valor que eu estava gravando na sessão
print($this->session->userdata('login'));

// A tradicional global session não funcionará no codeIgniter
print($_SESSION['login']);

No Firefox tudo ok. No Internet Explorer em branco. Que beleza, o Internet Explorer não está deixando escrever na sessão…

Navegando pelo segundo cérebro não tive nenhuma resposta conclusiva. As soluções propostas não se encaixavam para mim. Atualizar versão do apache, tirar Underlines da url, tirar números do nome do servidor, nada disso fez sentido pra mim.

Sem idéias, me juntei ao meu amigo Ronie e ao Rafael que também faz parte da minha equipe nesse projeto para caçar uma solução.

Tiramos o redirecionamento do Login, para manter na mesma página. E demos ali também um print, dessa vez em todos os valores da sessão

//Print_r por se tratar de array
print_r($this->session->userdata);

Os valores estavam ali, o problema estava no redirecionamento então.

Quebramos a cabeça demais, e como antes estava funcionando no IE, resolvemos rever tudo de brusco que mudamos no sistema.
Verificamos rotas, Jquery e seus plugins, Verificações de nível de acesso, nada.
Até que me lembrei que havia mudado a configuração da sessão, para expirar em meia hora (1800 segundos) tirando do padrão de duas horas (7200 segundos) que vem no CodeIgniter. Esses valores são alterados no config.php, ali você dá de encontro com outras configurações para sua sessão, como nome dela e etc.

E, Sim, era isso. Voltamos ao default do codeIgniter e tudo voltou a funcionar. Me lembro de ter tido uns problemas similares trabalhando com PHP sem frameworks, mas nem suspeitava. Fomos testando para ver o mínimo que o IE iria aceitar de tempo de expiração. Chegamos no valor de 3835 segundos. Mesmo assim continuou muita instável, e setamos em 4000 segundos.

Problema resolvido após 4 horas de Prints, Alerts, Pesquisa, Palpites e Indignação…

Valeu..
Abraços !!!

Compartilhe
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • PDF
  • RSS
  • Twitter
  • email

Posts Relacionados

  • CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.
  • Múltiplos sites com CodeIgniter
  • Erro 500, Timeout Apache, max_execution_time PHP

Comentários

Feed
Trackback
  1. Ronie Neubauer disse:

    January 17th, 2009 at 11:38 (#)

    Maldito IE, sempre atrasando nossos sites. haha.
    Deu trabalho mais com certeza esse post vai ajudar varias pessoas.
    Muito bom o post!

  2. Claudio disse:

    January 20th, 2009 at 05:08 (#)

    Cara, isso é pra dar nos nervos mesmo, mais é de lei ^^

    Parabens pelo site, ja ta nos favoritos aki

    Toma cuidado só pra vcs nao estaram trabalhando demais (normal pra kem gosta, que nem eu que ja trampei 12h por dia) heuaeau, mas que trava a memoria vez ou outra…

    Bom site e T+!

  3. Curioso disse:

    January 21st, 2009 at 07:14 (#)

    “Navegando pelo segundo cérebro não tive nenhuma resposta conclusiva.”
    O que é “segundo cérebro”?

    Obrigado

  4. admin disse:

    January 21st, 2009 at 07:17 (#)

    Sempre cito o segundo cérebro nos meus posts, foi uma falha não ter linkado nesse….

    Segundo cérebro é o Google..

    Abraço !!

  5. Djalma disse:

    January 26th, 2009 at 06:28 (#)

    Tá valendo, nunca tive essa problema, porém… vamo ve ne !

    Ei, a session nativa do CI é cookie?

  6. Marco Antonio disse:

    February 18th, 2009 at 11:31 (#)

    Flávio, estou tendo um problema semelhante, mas eu gravo as sessions do CI em cookie.
    No FF funciona perfeitamente, no IE não funciona nem com reza brava!
    Tem alguma coisa em mente que possa me ajudar?
    As configurações de session/cookie estão todas default.

    Valeu!

  7. admin disse:

    February 18th, 2009 at 16:59 (#)

    Marco…

    Se não é o que me ocorreu ai….
    tente o seguinte…

    Vc consegue resgatar os dados desse Cookie em algum momento ?? Se sim…tente acompanhar pra ver em q momento ela “some”..e ali então tentar achar o problema…

    Se não, esse cookie nem deve estar sendo criado…
    Use umas ferramentas como web developer para te ajudar…

  8. Louri disse:

    July 15th, 2009 at 10:50 (#)

    Pessoal,
    gostaria de saber se algum de vcs já usaram
    print_r($this) no CI.

    Ele retorna tanta coisa carregada.

    Isso acontece com vcs ?

    Grato

  9. hugo disse:

    January 1st, 2010 at 10:54 (#)

    Esse problema ocorre devido a diferença de horários entre o servidor e sua maquina de testes, ou seja, você resolveu o problema apenas no seu pc. Se em algum outro lugar a pessoa estiver com o horário adiantado mais de 2 hrs ( fuso horário por exemplo) o ie não vai deixar gravar o cookie pois o mesmo já estará “expirado”, sendo assim a sessão do CI não irá funcionar.

  10. Flávio Silveira disse:

    January 1st, 2010 at 18:45 (#)

    Certo Hugo mas então porque ocorria apenas no IE ?? Se era uma questão de horário no servidor não estariam todos os browsers com o problema ??

    E o que mudamos foi o tempo de expiração da sessão…..não me pareceu lógico na época que seria algo com horário do servidor….

    Valeu!!!

Deixe um comentário

Flávio Silveira

Programação & Desenvolvimentominha foto

Rss Logo Twitter Logo

Blogroll

  • Aurélio Marinho Jargas
  • Fábio Tomio
  • Mozart Petter
  • Renie Siqueira
  • Willian Rodriguez

Tags & Categorias

add-ons Adobe Air Adobe Flash Builder Adobe Flex Apache apple arrays Banco de Dados CodeIgniter complementos Configuração PHP debug Desenvolvimento Mobile erro 500 erros de servidor Expressões Regulares facilidade formatação via sql Forms framework php geração de cadastros Geração de formulários Internet Explorer não salva session iphone ipod touch Jquery Mobile Layouts mozart petter mozilla firefox multiple site múltiplos sites com codeIgniter Php PHP Sc Conf PodCast postgres Programação em geral reestruturando CodeIgniter Regex Replace Shell Site Mobile smarty SQL Sql Server Template engine Tempo de sessão codeIgniter Adobe (1)
Adobe Air (1)
Adobe Flash Builder (1)
Apache (1)
Banco de Dados (4)
Browsers (2)
CodeIgniter (7)
Expressões Regulares (1)
IPhone – Desenvolvimento (2)
JavaScript (1)
Mobile (1)
Php (10)
Podcast (1)
Programação em geral (12)
Programação SQL (4)
Screencast (1)
Servidor (1)
Shell Script (1)

WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.



©2010 Flávio Silveira
Powered by WordPress adapted of Gridline Lite of author Graph Paper Press.