45 votes

Sessions CodeIgniter vs sessions PHP

Je suis relativement nouveau à CodeIgniter et fais mon premier IC projet dans lequel il y a l'utilisateur des comptes, etc. Dans le passé, j'ai toujours utilisé PHP $_SESSION variable à cette fin. Cependant, CI semble avoir son propre mécanisme de session, dont il prétend qu'il est "mieux"

CI mécanisme de session semble pour stocker toutes les données dans un cookie? Personnellement, j'aime l'idée de toutes les données stockées sur le serveur, accessible avec un témoin-clé comme PHPs natif mécanisme de session... Suis-je stupide de penser que c'est mieux? Devrais-je accepter les CI mécanisme? Ou devrais-je aller de l'avant et utiliser les sessions natives de PHP?

Que faites-vous les gars faire?

Merci,
Mala

34voto

Cinnamon Points 963

D'après mon expérience avec CI, j'ai rencontré quelques anomalies lors de ses sessions, mais pour la plupart des besoins quotidiens, la bibliothèque est simple et facile à utiliser. Comme il a été souligné, Flashdata est une fonctionnalité très intéressante.

Si vous choisissez de rester avec les sessions de CI, je vous suggère fortement de stocker les sessions dans une base de données et, en outre, de chiffrer les cookies:

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

La structure de la base de données devrait être la suivante:

 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)
);
 

8voto

Álvaro G. Vicario Points 57607

Le manuel dit plus de souplesse plutôt que mieux ;-)

Je suppose que le principal avantage de CodeIgnite session de classe, c'est qu'il s'intègre dans le cadre et il offre quelques fonctionnalités supplémentaires, telles que l'adresse IP de suivi et de ce qu'il appelle flashdata (les données de session, qui s'efface dès qu'il est lu). Si vous utilisez un cadre, en premier lieu, cela signifie que ces options peut être attrayante pour vous.

Quel que soit, vous pouvez également enregistrer les données de session dans une base de données:

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

4voto

shin Points 6280

Conservez la session PHP pour les informations importantes et utilisez la session CI pour les informations moins importantes.

Lire ici wyh. http://codeigniter.com/forums/viewthread/130577/

1voto

Brian Hammond Points 11

Je sais que c'est un vieux post, mais je pense qu'il vaut la peine de partager ce que j'ai trouvé.

Depuis CI utilise une approche basée sur les cookies ( même avec un stockage de base de données ), il provoque un problème pour mon application particulière qui sert de données pour les clients distants d'une demande de données par le biais de curl. La ligne de fond est que les Cookies et le Cross Site Scripting, bien que gérable, ne pas bien jouer ensemble.

J'ai choisi de tenter de remplacer le natif Session.php classe fournie par CI avec mon propre MY_Session.php. J'ai été heureux de découvrir que ce n'était pas trop difficile, mais a été surpris de constater que celui CI est en phase de régénération de l'id de session, même si mon script explicitement fournis.

Selon le manuel CI

L'utilisateur ID de Session unique (ce qui est statistiquement chaîne aléatoire avec une très forte entropie, hachée avec MD5 pour la portabilité, et régénéré (par défaut) toutes les cinq minutes)

Bien que je ne peux probablement trouver un moyen de remplacer ce, je me demandais si il ne serait pas beaucoup plus facile de revenir à des sessions PHP.

Juste de la nourriture pour la pensée, si vous allez utiliser l'IC.

1voto

Clain Dsilva Points 534

CI sessions de Stockage des limitations de taille

Comme vous le savez , CI sessions sont des cookies fondamentalement, si vous le chiffrer ou pas. Comme ce qui concerne la sécurité, les deux ont ses avantages et ses inconvénients.

Ma préoccupation est à la limite de la taille de l'IC des séances, Il peut contenir seulement 4 ko de données que de son fond un biscuit, bien que Natif de session PHP seulement des magasins de référence id de cookie et toutes les données de session sont stockées dans la mémoire du serveur. C'est pratique lorsque vous avez un plus grand nombre d'éléments doivent être stockés dans une session.

Dire un panier avec plus d'articles, ou d'un utilisateur de la musique liste de lecture avec plus de 50 pistes... etc.

J'espère que cette information aide à quelqu'un un jour.

Acclamations..!!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X