Sessões CodeIgniter vs sessões PHP

Eu sou relativamente novo no CodeIgniter e estou fazendo meu primeiro projeto de CI em que existem contas de usuários, etc. No passado, sempre usei a variável $ _SESSION do PHP para este fim. No entanto, a CI parece ter seu próprio mecanismo de session, o que afirma ser “melhor”

O mecanismo de session de CI parece armazenar todos os dados em um cookie? Pessoalmente, eu gosto da idéia de todos os dados que estão sendo armazenados no servidor, acessados ​​com um cookie-key como o mecanismo de session nativa do PHP … Estou ficando mudo pensando que é melhor? Devo aceitar o mecanismo da CI? Ou devo seguir em frente e usar sessões de PHP nativas?

O que vocês fazem?

Obrigado,
Mala

Na minha experiência com CI, encontrei algumas anomalias com suas sessões, mas para a maioria das necessidades do dia-a-dia, a biblioteca é boa e fácil de trabalhar. Como foi apontado, o Flashdata é um recurso muito bom.

Se você optar por ficar com as sessões da CI, gostaria de sugerir fortemente a armazenagem de sessões em um database e, além disso, criptografar cookies:

$config['sess_encrypt_cookie'] = TRUE; $config['sess_use_database'] = TRUE; $config['sess_table_name'] = 'sessions'; 

A estrutura do database deve ser a seguinte:

 CREATE TABLE IF NOT EXISTS `sessions` ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(16) DEFAULT '0' NOT NULL, user_agent varchar(50) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL, PRIMARY KEY (session_id) ); 

O manual diz mais flexibilidade do que melhor 😉

Presumo que o principal benefício da class de session CodeIgnite é que ele se integra com o framework e oferece algumas funcionalidades extras, como o rastreamento de endereços IP e o que ele chama de flashdata (dados de session apagados assim que são lidos). Se você está usando uma estrutura em primeiro lugar, isso significa que essas opções podem ser atraentes para você.

Seja como for, você também pode salvar os dados da session em um database:

http://codeigniter.com/user_guide/libraries/sessions.html

Mantenha a session PHP para obter informações importantes e use a session CI para obter informações menos importantes.

Leia aqui wyh. http://codeigniter.com/forums/viewthread/130577/

Eu sei que esta é uma postagem mais antiga, mas acho que vale a pena compartilhar o que encontrei.

Como a CI usa uma abordagem baseada em cookies (mesmo com armazenamento de database), ele causa um problema para o meu aplicativo particular que serve dados para clientes remotos solicitando dados através de curl. A linha inferior é Cookies e Cross Site Scripting, embora gerenciáveis, não jogue bem juntos.

Eu optei por tentar replace a class nativa Session.php fornecida pela CI com meu próprio MY_Session.php. Fiquei feliz em achar que isso não era muito difícil, mas ficou surpreso ao descobrir que a CI estava regenerando o id da session, mesmo que meu script os forneceu explicitamente.

De acordo com o manual CI

O ID de session exclusivo do usuário (esta é uma string estatisticamente aleatória com entropia muito forte, hash com MD5 para portabilidade e regenerada (por padrão) a cada cinco minutos )

Embora eu possa provavelmente encontrar uma maneira de replace isso, estou me perguntando se não seria muito mais fácil reverter para as sessões do PHP.

Apenas alimento para pensar se você estiver indo usar CI.

As sessões de CI possuem limitações de tamanho de armazenamento

Como você sabe, as sessões de CI são basicamente cookies, quer criptografar ou não. No que diz respeito à segurança, ambos têm seus prós e contras.

A minha preocupação era o limite de tamanho das sessões de CI, ele pode conter apenas 4 kb de dados como basicamente um cookie, enquanto a session nativa do PHP apenas armazena o ID de referência no cookie e todos os dados da session são armazenados na memory do servidor. Isso é útil quando você tem um número maior de itens que precisam ser armazenados em uma session.

Diga um carrinho de compras com mais itens ou uma lista de músicas de usuários com mais de 50 faixas … etc.

Espero que essa informação ajude alguém algum dia.

Felicidades..!!