[Tutoriel] Masquer les PHPSESSID dans vos pages web

Vous pouvez retrouver ici nos tutoriels concernant PHP

Adsense

Adsense
 

[Tutoriel] Masquer les PHPSESSID dans vos pages web

Message non lupar mnttech » Lun 27 Fév 2012 02:11

Sur votre site internet, si vous utilisez le langage PHP, vous avez certainement été tenté par l’utilisation de variables de session. Leur but est de vous permettre de réutiliser vos variables PHP sur les différentes pages de votre site. Contrairement aux variables superglobales $_GET, elles ont l’avantage de ne pas transformer vos URL, et donc de ne pas nuire au référencement (ou vous obliger à utiliser l’URL rewritting). Elles fonctionnent sur le même principe que les cookies sauf qu’ici l’information est stockée coté serveur (logique vu que le PHP un langage serveur). Vous pouvez supprimer les informations ainsi stockées à tout moment via la fonction PHP session_destroy(), sinon elles seront effacées lorsque le visiteur fermera son navigateur (ou après un délai d’inactivité). Ces variables semblent donc fournir tous les avantages pour vous convaincre de les utiliser. Cependant, suivant la configuration de votre hébergement, vous pouvez rencontrer des problèmes avec des PHPSESSID qui se « baladent ».

Pour retrouver vos variables de session, et ne pas les mélanger avec celles d’un autre utilisateur, PHP attribue un identifiant à votre session (le fameux PHPSESSID). Ainsi, si vous créer une variable de session (par exemple $_SESSION['test']), PHP saura ensuite la distinguer des autres $_SESSION['test'] du serveur qui ont été crées par d’autres utilisateurs, grâce à cette variable. Le problème est que PHP ne peut donc pas enregistrer cette variable en session, puisque il ne pourrait plus distinguer votre PHPSESSID de celui d’un autre utilisateur du site. Suivant la configuration du serveur, il est possible que ces PHPSESSID soient transmis (de manière masquée) par chaque lien de vos pages (cela ne se voit pas dans la barre d’URL). Cela peut alors poser des problèmes notament pour la validation W3C de vos pages. Mais, si vous n’avez pas votre propre serveur Apache et PHP, il est fort probable que vous ne puissiez pas modifier les paramètres du fichier php.ini comme vous le souhaiteriez. Pour contourner le problème, on peut forcer le serveur à modifier son comportement via le fichier .htaccess :

Code: Tout sélectionner
php_flag session.use_cookies On


Code: Tout sélectionner
php_flag session.use_only_cookies On


Code: Tout sélectionner
php_flag session.use_trans_sid Off


Après cette modification, votre PHPSESSID se trouve enregistré dans un cookie, comme vous vous en doutiez surement, et ne se balade plus via les URL. Cette méthode, si elle semble résoudre notre problème, n’est pas parfaite. En effet, un utilisateur qui a désactivé les cookies rencontrera des problèmes avec votre site. Cependant, il reste possible de tester sur une page, via un script très simple, si vous retrouvez bien une variable qui aurait du obligatoirement être stockée à la page d’avant. Dans le cas contraire, vous pouvez en déduire que l’utilisateur a désactiver les cookies et l’avertir. Là, vous allez me répondre que quitte à utiliser les cookies pour sauver le PHPSESSID pourquoi ne pas simplement utiliser cette méthode pour toutes les variables. Effectivement ça peut être une solution plus rentable dans certains cas. Après tout va dépendre du nombre de variables à créer. De plus, il ne faut pas oublier qu’ici, la création de cookie se fait automatiquement, et qu’on n’a pas besoin, par exemple, de créer la fonction qui détermine sa durée de vie. Vous pouvez aussi utiliser cette fonction en début de page pour masquer les PHPSESSID :

Code: Tout sélectionner
ini_set(« url_rewriter.tags », »" );


Mais dans ce cas, vous devez y faire appel sur chaque page. La meilleure solution a utiliser dépendra donc de l’utilisation que vous aller faire des sessions et de leur fréquence d’utilisation. Attention : N’oubliez-pas d’ouvrir les sessions en début de page (avant le head) avec la fonction session_start(). Il en va de même pour la fonction setcookie(), si vous ne voulez pas rencontrer de message d’erreur.
N'hésitez pas à faire appel à nous pour de la maintenance informatique
Avatar de l’utilisateur
mnttech
Administrateur du site
 
Messages: 290
Inscription: Lun 10 Aoû 2009 15:45

Retourner vers PHP

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités