2010-01-11 7 views
5

Est-ce que n'importe quel organisme a des informations/liens sur la façon d'intégrer un système de session basé sur les cookies? J'ai utilisé le fichier/mysql et j'utilise actuellement memcached. Je voulais jouer avec des sessions apc, mais je pensais que j'allais essayer les cookies, mais je ne sais pas grand-chose à ce sujet.php: sessions basées sur les cookies

Je suppose que je devrais écrire ma propre classe de gestionnaire de session?

+0

Je ne suis pas sûr que je suis. Vous voulez stocker des données de session dans des cookies? est-ce une bonne idée? –

+0

Veuillez noter que les cookies ne peuvent stocker qu'un maximum de 4 Ko de données. C'est généralement la raison pour laquelle vous ne voyez pas de stockage de session basé sur les cookies.Prenez également en compte le fait qu'un certain nombre d'utilisateurs ont des cookies totalement désactivés ou configurés avec un accès restrictif avec la politique de sécurité de leur navigateur. –

+1

@cballou: Les anciennes sessions régulières utilisent généralement des cookies. Ils stockent simplement le SESSID et le reste des données est stocké sur le serveur. Bien que je pense que PHP essayera de bourrer le SESSID dans le paramètre 'GET' si les cookies sont désactivés. – mpen

Répondre

5

En session PHP, les données sont généralement stockées dans un fichier. La seule chose stockée dans le cookie est un identifiant de session. Lorsque les sessions sont activées et qu'un cookie de session valide est trouvé, PHP charge les données de session des utilisateurs à partir du fichier dans un super global appelé SESSION assez drôle.

Les sessions de base démarrent en appelant session_start(); avant l'envoi du texte au navigateur. puis les éléments sont ajoutés ou supprimés de l'objet de session en utilisant l'indexation simple du tableau, par exemple.

$_SESSION['favcolour'] = 'blue'; 

plus tard ...

$favcolour = $_SESSION['favcolour']; 

cookies de base seulement des sessions (pas de stockage local) peuvent être créés avec un appel à

set_cookie('favcolour','blue'[,other params]); 

avant tout texte est envoyé au navigateur, puis récupéré à partir du cookie superglobal

$favcolour = $_COOKIE['favcolour']; 

vous n'avez pas besoin d'appeler session_start() si vous effectuez des sessions de cookie uniquement.

les options [autres] params sont plus avancés et peuvent être lus sur ici http://www.php.net/manual/en/function.setcookie.php

Les sessions peuvent devenir une discussion très complexe, je vous suggère de faire un travail de lumière en eux et puis développez vos connaissances.

DC

tout ce que vous avez toujours voulu savoir sur les sessions PHP

http://www.php.net/manual/en/book.session.php

DC

Pour réutiliser le code de gestion de session PHP vous devez ajouter un gestionnaire d'écriture à l'aide session_set_save_handler puis ne fais absolument rien dans ce gestionnaire. C'est parce que son appelé après la sortie vers le navigateur est fermé, donc vous ne pouvez rien envoyer au navigateur. Avant d'écrire des données non en-tête dans le navigateur, utilisez les fonctions set_cookie et stockez le contenu du tableau $ _SESSION (après sérialisation et cryptage) dans un cookie. Lorsque les applications démarrent, vous pouvez lire le cookie le désérialiser et le placer dans le tableau $ _SESSION.

C'est un indice rapide à quoi faire comme je ne l'ai jamais fait, je préfère écrire tout mon propre code de cookie. Il y a peut-être quelques getcha's mais ce n'est pas difficile, quelques tests devraient trouver des gotcha.

DC

+0

Je n'irais probablement pas sur cookie seulement, surtout si vous ne voulez pas que les utilisateurs falsifient (ou lisent) les données. – mpen

+0

Si vous avez un site Web très occupé, les sessions basées sur des fichiers sont trop gourmandes en ressources. mais si je voulais la sécurité par-dessus tout, j'utiliserais un db, parce que les fichiers peuvent être lus. – DeveloperChris

+2

Je n'ai pas besoin de savoir comment utiliser les sessions. Je comprends parfaitement cela. Les sessions basées sur les cookies (et non sur le stockage des identifiants dans les cookies) sont une technique valide qui minimise le nombre de recherches de db/file/cache sur le serveur et stocke toutes les données d'une session dans un cookie chiffré. Je suppose que personne ici ne comprend ce que je veux dire. – onassar

Questions connexes