Classe "remplaçant" les sessions php (avec vérification de l'adresse ip)

Description

Voici une classe PHP(5) de sessions.
C'est le même principe que les sessions PHP sauf qu'ici, il y a une vérification de l'adresse IP et une clé plus longue pour éviter les "vols" de sessions.
Les sessions sont stockées sous forme de fichiers textes (fichiers .sess) dans un répertoire donné.

La classe gère aussi le "temps de vie" (expiration) des sessions.

Vous pouvez gèrer plusieurs sessions en même temps grâce aux noms de sessions (pareil qu'avec les sessions PHP).

La clé est passée de page en page via les cookies ou par l'URL si ceux-ci ne sont pas acceptés par le navigateur du client.

Le ZIP contient :
- la classe en elle-même (session.class.php)
- un exemple d'utilisation (exemple.php)
- le "session cleaner" (sessioncleaner.php)
- une documentation (session.doc.pdf)

Qu'est-ce que le "session cleaner" ?
Tout simplement, il peut rester quelques vieux fichiers .sess lors de bugs, de tests, de vieilles sessions qui n'ont pas été correctement "destroy" ou autres ... Ce fichier est à executer régulièrement (via des tâches CRON par exemple). Il va supprimer toutes les vieilles sessions qui ont expiré.

Vous pouvez retrouver plus d'informations sur l'utilisation de la classe dans le fichier session.doc.pdf.

Conclusion :


Bugs / problèmes connus :
- Pour que la détection d'acceptation des cookies par le navigateur client fonctionne correctement, vous devez, avant de faire appel à la classe, envoyer un cookie "cookieAccept" ayant la valeur "true" au client. Si non, la classe va croire que le client n'accèpte pas les cookies.
En effet, pour détecter si le client accèpte ou non les cookies, j'utilise le principe tout simple du "on envoie un cookie et on le lit". Le problème est que, lors de l'envoie du cookie, pour le lire, il faut rafraichir la page...
Pour remédier au problème, il vous suffit de, par exemple sur la page d'accueil de votre site faire :
setcookie('cookieAccept','true',time()+3600*24*365);

Points méritants d'être modifiés / optimisés :
- Le système du "sessioncleaner.php"...
En effet, par exemple, si un visiteur va sur une page utilisant la classe et la quitte... La session en cours n'a donc pas pû être destroy(). J'ai donc eu l'idée de faire un script supprimant ce types de sessions (expirées).
Mais bon, ce n'est pas très pratique d'appeler un script régulièrement comme ça. Si vous avez des idées pour optimiser ce point ça m'arrangerai ;)

Bon, je pense que j'ai tout dit, je vous invite maintenant à télécharger le fichier ZIP ;)
Si vous avez des commentaires, idées, n'hésitez pas !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.