Article mis à jour le : 05-05-2022
Comment désactiver la présence de l'identifiant de session dans l'url de votre siteDans le cadre d'une application en interne, la presence, visible ou non, de l'identifiant de session dans l'url n'est pas trop grave, car aucun robot de moteur de recherches de viendra indexer ces pages. Cependant en ligne, c'est la porte ouverte à la catastrophe SEO.
En interne, pour une application, cela peut cependant poser problème en cas de copier/coller de l'url d'un collaborateur à l'autre.
De plus, c'est une faille de sécurité.
Afin de se passer de ce genres d'inquiétudes, vous pouvez :
A noter qu'il est recommandé de refuser les utilisateurs dont le navigateur n'accepte pas les cookies dans ces cas-là...
En PHP :
ini_set('session.use_trans_sid', false);
Au passage autorisez l'utilisation des cookies à la place :
ini_set('session.use_cookies', "1");
et n'autorisez que les cookies :
ini_set('session.use_only_cookies', "1");
Parfois, l'id de session est ajouté au contenu HTML généré. Il faut s'en prémunir :
ini_set("url_rewriter.tags","");
Vous pourrez alors démarrer la session!
Par le htaccess :
SetEnv SESSION_USE_TRANS_SID 0
Par le fichier php.ini :
session.use_trans_sid = 0
Enfin, voici une méthode en PHP pour détecter les robots et adapter le comportement en fonction...
function checkIsRobot(){
$_UA = array("GoogleBot", "Slurp","MsnBot");
// C'est un tableau, rajoutez tous les robots que vous désirez détecter
foreach($_UA as $ua) {
// Comparaison du user agent du visiteur à notre liste précitée
if(eregi($ua,$_SERVER["HTTP_USER_AGENT"])) return true;
}
// Sinon, pas détecté :
return false;
}
?>
On appelerait la méthode comme ceci :
if (!checkUaRobot()) { session_start(); }
Voilà. Si vous avez d'autre solutions ou vous souhaitez ajouter des languages, allez-y!