picture picture
juin 9, 2006 PHP 17 Commentaires

Supprimer le PHPSESSID des pages PHP utilisant des variables en session

… si vous avez un truc du style :page.php?PHPSESSID=5a3ecbee2d4e29eacf783d142f9ebf95, lisez ceci !

Suivant la version PHP et les parametrages du php.ini du serveur de votre site,
lors d’une mise en session de variables à l’entrée dans un site (ou d’une page),
la premiere page peut s’afficher avec une variable additionnelle en fin d’URL du style :

page.php?PHPSESSID=5a3ecbee2d4e29eacf783d142f9ebf95 :(

Sur les pages suivantes, la variable de session n’est plus passée en GET mais en cookie (s’ils ne sont pas désactivé, nouvelle mode chez les NewBies de l’info :/ ) et cette variable PHPSESSID disparait.

Pourquoi est-ce ennuyeux :gne: ?
– parceque le referencement de la page d’index de votre site est sensiblement cassé (ça c’est pénible…)
– et parceque l’URL devient illisable

Pour supprimer leur affichage, il y a 2 solutions :

1- ajoutez ces 4 lignes PHP AVANT de déclarer l’ouverture de la session :
ini_set('session.use_cookies', '1');
ini_set('session.use_only_cookies', '1'); // PHP >= 4.3
ini_set('session.use_trans_sid', '0');
ini_set('url_rewriter.tags', '');
Cette solution semble bien marcher chez OVH qui ne supporte pas tous les .htaccess (encore une bizarrerie de OVH !)

 

2- Si cette solution ne marche pas, il y en a une autre qui a fait merveille chez moi :
Dans un fichier .htaccess dans la racine du site, ajouter cette ligne :
php_flag session.use_trans_sid off

et voilà ! :bravo:

17 Responses to “Supprimer le PHPSESSID des pages PHP utilisant des variables en session”

17 Commentaires

  1. Ranee dit :

    Bonne écriture, je suis visiteur normal de http://www.webtolosa.com, de maintenir le fonctionnement agréable, et il va être un visiteur régulier pendant une longue période. et Happy New Year!

  2. zedannonce dit :

    Bonjour , la solution de PHPSESSID 1 er solution marche à merveille dans mon site , http://www.zedannonce.fr je suis un amateur mais reste tjr bcp de travail pour valider la page principale . sinon merci pour la solution impec .

  3. webtolosa dit :

    Bonjour,
    pour les variables de session, oui bien sur tu peux les récupérer sur une page appelée en Ajax puisque ta session est liée à ta page.
    Regarde là dessus :
    http://php.net/manual/fr/session.idpassing.php

  4. Bonjour,
    mon problème est tout autre,

    j’aimerais savoir si je peux me servir de cette variable SESSIONID et comment, pour récupérer ma session depuis une page php appelée en AJAX?

    Car aujourd’hui je dois recréer la session, ce qui me pose des problèmes de performances.

    Merci d’avance!
    Bonne journée

  5. Ming dit :

    j’ai le même problème sur mon site http://www.tataouine.org :s
    le PHPSESSID ne s’affiche pas sur la barre d’adresses mais googlebot le lit ce qui fait qu’il indexe des pages en doublons ce qui à son nuit au référencement du site :(

  6. DemonKN dit :

    Salut à tous,

    je suis chez phpnet, j’ai rajouté le "php_flag session.use_trans_sid off" à mon htaccess, et ça semble fonctionner à merveille. Merci pour cette astuce :)

  7. gamaniak dit :

    La quatrième ligne du ini_set() m’a suffit, je suis chez OVH, et ça marche très bien :)
    Merci pour la solution.

  8. 65685432 dit :

    8) :| ;) :)) :] :) lol lool :D :( :[ :(( :C 8) :o :O :""( :* ~:( 0) :p x| zzz ??? :no: oups! :bravo: :bye: thx :gne: love

  9. Galisurf dit :

    YES !!! :))

    J’ai farfouillé et finalement trouvé la solution a cette adresse : http://www.commentcamarche.net/f...

    Il ma suffit donc de faire une gentille déclaration à notre cher ami ~:( IE
    comme stipulé sur le post de comment ça marche, j’ai ajouté en tout debut de mon script php la ligne suivante, sans espace avant ni autre chose :
    header(‘P3P: CP="CAO PSA OUR"’);

    Et ça marche : menu de reroutage Ok et affichage du PHPSESSID disparu (logique)

    Je sais bien que je me suis fais un monodialogue sur ton billet en espérant que cela puisse aider d’autres personnes

    Bise a tous
    A+++

    Galisurf

  10. Galisurf dit :

    :C FAUSSE JOIE

    ça marche toujours pas, j’avais laisser la confidentialité sur basse (la pas de souci) :""(
    Vive IE, non mais sérieux !!!!
    :""(

    Si quelqu’un à une solution, autre que de demander aux utilisateurs de télécharger google chrome lool ou de modifier leur configuration

  11. Galisurf dit :

    :)) la quatrième ligne à résolu mon problème ( ini_set(‘url_rewriter.tags’,  »); )
    Petite précision, je suis sur un serveur mutualisé chez OVH

    Pour ma part, le phpsessid n’était pas visible dans l’adresse de l’url du navigateur mais dans la barre d’état (en bas à gauche), ce qui ne me gênait pas jusque là puisque c’est pour une interface personnelle. De plus, cela se pose seulement avec IE qui n’est pas mon navigateur par défaut et loin d’être mon fétiche (avec une configuration par défaut biensur, donc sécurité moyenne). J’utilise à 99% Google Chrome. Mais je teste toutes mes créations sur IE et Firefox

    Mon problème était le suivant :
    dans un formulaire, j’ai inclut un menu de reroutage, lors du rechargement je me retrouvais avec une session fermé !!! :[
    Le problème dans ce type de rechargement est que le phpsessid n’est pas retransmit dans le GET comme avec un lien classique.
    Solution 1 : j’ajoute phpsessid dans mon url :O
    Solution 2 : je cherche une autre solution ~:(

    Et me voilà ici
    Merci au rédacteur de ce billet :bravo:

    galisurf

  12. Congratulation dit :

    jayjay :))

    Ca m’a permis de valider ma page xhtml strict 1.0 qui ne pouvait l’être à cause de la balise <input name = ‘PHPSESSID’ value = ‘…’ /> rajoutée automatiquement et qui n’est pas encadré d’une balise de type block. :bravo:

  13. cddddcc dit :

    :(( :kill: zzz ??? :non: :no: oups!

  14. webtolosa dit :

    > khalad :

    2 ajouts pour être plus précis :

    – si tu veux utiliser un ini_set(), vérifie que tu as bien mis ton ini_set() tout en haut de ta page PHP, AVANT le code de déclaration de ta session ( session_start();)

    – certains serveur mutualisés les bloquent (cela dépend de ton hébergeur), en particulier les gratuits, donc si ca ne marche pas ca peut venir de là

    – et si tu as utilisé un .htaccess, et que ta zone sécurisée en utilise également un pour filtrer les visiteurs, remet de code « php_flag session.use_trans_sid off » à la suite de celui qui est sur le .htaccess déjà présent dans le dossier sécurisé
    celà va te donner un truc du genre :
    ============================
    AuthUserFile /home/… chemin du dossier … /.htpasswd
    AuthName « Protection_admin »
    AuthType Basic
    require valid-user

    php_flag session.use_trans_sid off
    ============================

    ;)

  15. khalad dit :

    Bonjour,

    J’ai essayé la ligne dans .htaccess, ca marche a merveille sauf au moment ou je rentre dans les pages à accès privé.

    Hors je teste la première solution, et ca ne marche pas, je précise que je ne suis pas un grand expert en PHP/MySql, si vous pourriez m’aider en expliquant d’une manière un peu plus détaillé par quel manière on enleve ce phpsessid…

    Merci bien, pour plus de question, voici mon adresse mail : snaser@noos.fr

  16. webtolosa dit :

    oui tu as raison … mais c’est une minorité. C’est le pb d’Internet avec sa multiplication de navigateurs, on ne peut prévoir des sites pour ceux qui ont désactivé les javascripts + les cookies + changé la taille des polices de caractères + des écrans extra-larges + ceux qui utilisent enciore la version 2 de Netscape + …..

    Total, il me semble qu’on travaille surtout pour « la majorité » (IE>5 et Mozilla &Co), en tentant d’inclure dans le lot des navigateurs un peu moins exotiques comme Safari ou Opéra, et pour le reste … tant pis pour les apprentis sorcier s ;)

  17. harcher81 dit :

    Mais le désavantage de désactivé cette option est que les sessions deviennent inutilisable si l’utilisateur a désactivé les cookies.

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: