Voir la version complète : Variable de session et URL
gaouzief
17/05/2004, 20h09
Slt tout le monde,
j'aimerais empecher php de coller la variable de session a tout mes liens (d'utiliser que des cookies quoi)
seulement j'ai essayé avec
ini_set("session.use_only_cookies", 1);
ca marche pas, tout les ini_set ne fonctionnent pas apparement
Que faire ?
--------------------------------------------------
http://WarmAfrica.com Africa's E-Village
--------------------------------------------------
gaouzief
21/05/2004, 18h41
personne peut m'aider ????
J'ai le même problème et j'aimerais bien savoir comment désactiver ça... google référence mes pages avec les variables de session dans les URL :(
Le problème ici, c'est qu'on a beau essayer de forcer les cookies :
1) les robots indexeurs acceptent rarement les cookies.
2) au premier passage sur une page avec une session PHP, si on démarre immédiatement la session (et qu'on envoie le cookie de session), on a beau faire, la page contiendra des liens avec la SID (surtout si session.use_trans_sid vaut 1)
Alors soit on vérifie AVANT de démarrer la session que l'utilisateur peut accepter les cookies en envoyant un cookie de test et l'idée est que sur la "page suivante", on teste la présence de ce cookie et si le cookie est présent, on démarre la session.
=> Si googlebot n'accepte pas les cookies, on ne démarre pas la session.
Problème de la solution : si c'est juste pour "faire joli" dans les moteurs de recherche, il y a plus radical.
=> on compare le user agent de l'utilisateur et on le compare avec une liste de robots connus.
Si on tombe sur un robot connu (par exemple Googlebot), on ne démarre pas les sessions.
=> S'assurer que son code fonctionne (même de manière dégradée au niveau des services proposés) sans les sessions et que le site est au moins "indexable".
Exemple de code chippé à une solution e-commerce opensource adapté selon la méthode La RACHE (http://www.cafenware.org/la-rache/)
dans un fichier de configuration
// bloquer le demarrage des sessions pour les robots
define('SESSION_BLOCK_SPIDERS', 'True');
//
define('DIR_WS_INCLUDES', 'chemin/vers/fichiers/includes/caches/');
Dans un fichier inclus sur chaque page (en header),AVANT de démarrer les sessions.
function tep_not_null($value) {
if (is_array($value)) {
if (sizeof($value) > 0) {
return true;
} else {
return false;
}
} else {
if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) {
return true;
} else {
return false;
}
}
}
[...]
$session_started = false;
$spider_flag = false;
if (SESSION_BLOCK_SPIDERS == 'True') {
$user_agent = strtolower(getenv('HTTP_USER_AGENT'));
$spider_flag = false;
if (tep_not_null($user_agent)) {
$spiders = file(DIR_WS_INCLUDES . 'spiders.txt');
for ($i=0, $n=sizeof($spiders); $i<$n; $i++) {
if (tep_not_null($spiders[$i])) {
if (is_integer(strpos($user_agent, trim($spiders[$i])))) {
$spider_flag = true;
break;
}
}
}
}
} // #if SESSION_BLOCK_SPIDERS == 'TRUE'
[...]
if ($spider_flag == false) {
// on peut demarrer les sessions
[...]
session_start();
$session_started = true;
}
Et dans le code, plus loin, dans des fonctions nécessitant d'accéder à des variables en session, on utilise la valeur de la variable (global) "$session_started" pour savoir si les sessions ont démarré ou non.
Le fichier "spiders.txt" est un bete fichier texte avec une entrée par ligne du type :
almaden.ibm.com
appie 1.1
architext
ask jeeves
[...]
frooglebot
geobot
googlebot
gulliver
[...]
voilabot
w3c_validator
zao/0
zyborg/1.0
=> Voir le site oscommerce.com ou OsCommerce francophone (http://www.oscommerce-fr.info/) pour télécharger une version récente du code d'OsCommerce et notamment, donc, ce fichier spiders.txt
Sinon, je suis sûr que ca doit se trouver sur le net ...
il suffite de créer un fichier .htacces à la racine du site et y inscrire
SetEnv SESSION_USE_TRANS_SID 0
OILA
vBulletin® v.3.8.4, Copyright ©2000-2012, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org