OVH Community, votre nouvel espace communautaire.

Variable de session et URL


le_gweg
07/12/2006, 19h56
il suffite de créer un fichier .htacces à la racine du site et y inscrire

SetEnv SESSION_USE_TRANS_SID 0

OILA

D.Thorn
17/11/2006, 20h07
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
dans un fichier de configuration
Code PHP:
// 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.
Code PHP:
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_agenttrim($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 :
Code PHP:
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 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 ...

Spone
15/11/2006, 20h13
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

gaouzief
21/05/2004, 19h41
personne peut m'aider ????

gaouzief
17/05/2004, 21h09
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
--------------------------------------------------