Precisions sur sessions

Discussion dans 'Administration d'un site Web' créé par caro, 8 Février 2004.

  1. caro
    caro WRInaute impliqué
    Inscrit:
    21 Juillet 2003
    Messages:
    761
    J'aime reçus:
    0
    Salut les gars (et filles en moins grand nombre) :wink:

    j'ai fait des recherches sur le forum concernant mes problèmes de sessions pour référencement et il me reste quelques questions que j'aimerais que vous régliez. :lol:

    je ne peux pas toucher au php.ini, je me sers des cookies mais dois me servir aussi des transmissions par url, alors voilà les solutions que j'ai trouvé sur wri mais j'ai des questions concernant ces solutions :

    1) repérer l'ip des robots et en fonction ouvrir ou pas une session.
    prob : il me semble que ce doit être dur à gérer pour les mises à jour

    2) WebRankInfo a marqué dans un post qu'on devait alors "utiliser des url absolues (http)"
    si je comprends bien, cela veut dire que sur les liens des pages on doit mettre h**p://monsite.com/page2.php?$SID au lieu de page2.php?$SID
    cela suffit il à débloquer google ?
    et si oui, merci de m'expliquer.

    3) absoluteweb a lui marqué qu'il suffisait de changer le nom de session SID ou PHPSESSID par un nom propre au site par exemple "votre-variable-de-session".
    cela suffit il à débloquer google ? ca me parait bizarre.
    et si oui, merci de m'expliquer. (j'aime bien comprendre :D )

    voilà je pense que ce sont les seules solutions que j'ai trouvé sans toucher au php.ini et aussi en gardant les sessions par url.
    Merci de me dire ce que vous en pensez des solutions ou si vous avez autre chose je suis preneuse.

    merci de votre aide
    carole :wink:
     
  2. WebRankInfo
    WebRankInfo Admin
    Membre du personnel
    Inscrit:
    19 Avril 2002
    Messages:
    20 726
    J'aime reçus:
    779
    Salut la fille ;-)

    j'ai trouvé un exemple de site qui a dû utiliser il me semble un mélange des solutions 1 et 3 : h**p://v2.webdistrib.com/cat/home.php
    il génère un identifiant de session qu'il mélange dans le reste de l'URL, comme par exemple : h**p://v2.webdistrib.com/(15c0a3acfe4c592e)/cat/home.php

    par contre en regardant les 3000 pages que Google a indexées, j'imagine qu'ils détectent Google pour ne pas lui attribuer d'identifiant de session.

    pour la solution 2 tu as bien compris mais il me semble que ça ne marche pas dans tous les cas (d'autres voudront bien confirmer...)

    Olivier
     
  3. Kmacleod
    Kmacleod WRInaute passionné
    Inscrit:
    28 Novembre 2002
    Messages:
    2 456
    J'aime reçus:
    0
    Pour le point 1
    Ne pas utiliser les IP, mais le $_SERVER["HTTP_USER_AGENT"]
    et les valeurs possbiles en exemple
    Code:
    ("Googlebot","Slurp","Fast","ia_archiver","Scooter","VoilaBot","xecho")
    A completer avec d'autres noms d'agent de robot
     
  4. jeromax
    jeromax WRInaute impliqué
    Inscrit:
    12 Novembre 2003
    Messages:
    887
    J'aime reçus:
    0
    Moi j'utilise des URL absolues
    Avec création de sessions si ce n'est pas un robot.
    Du coup pas de "id" dans l'url et pas de sessions génantes pour les robots.
     
  5. BadProcESs
    BadProcESs WRInaute passionné
    Inscrit:
    28 Juillet 2003
    Messages:
    1 821
    J'aime reçus:
    0
    En plus, avec cette méthode, tu as l'avantage de pouvoir tester facilement le résultat, en utilisant un navigateur qui te permet de modifier son user-agent.
     
  6. caro
    caro WRInaute impliqué
    Inscrit:
    21 Juillet 2003
    Messages:
    761
    J'aime reçus:
    0
    Tout d'abord merci beaucoup les gars car vous trouvez toujours les solutions :wink:

    ensuite Kmacleod a écrit :
    1) ca c'est super comme truc car y a donc pas besoin de mise à jour, est ce que mon code est correct ? :
    Code:
    if ($_SERVER["HTTP_USER_AGENT"] != googlebot)
    {
    session_start();
    }
    2) comment trouver tous les noms des robots ?

    3) BadProcESs a écrit
    "En plus, avec cette méthode, tu as l'avantage de pouvoir tester facilement le résultat, en utilisant un navigateur qui te permet de modifier son user-agent."
    comment fait cela ?

    et encore mille merci car y a plus de tueurs ici que dans les forums spécialisés en php :lol:
    carole
     
  7. George Abitbol
    George Abitbol WRInaute passionné
    Inscrit:
    6 Juin 2003
    Messages:
    1 519
    J'aime reçus:
    0
    Non, c'est pas bon, car le nom d'agent ne sera pas juste 'googlebot' (d'ailleurs même dans ce cas il faudrait des guillemets autour). Tu dois donc chercher la présence de "googlebot" dans l'user agent, et ça peut se faire avec stristr()

    Du genre :

    Code:
    if (stristr($_SERVER['HTTP_USER_AGENT'], 'googlebot') === FALSE) {
         //_____ c'est pas googlebot !
    }
    else {
         //_____ c'est googlebot !
    }
    Télécharge Robostats et regarde la liste des robots présents, ça t'en fera déjà pas mal.

    Par exemple avec WannaBrowser.

    Fred
     
  8. caro
    caro WRInaute impliqué
    Inscrit:
    21 Juillet 2003
    Messages:
    761
    J'aime reçus:
    0
    ai je bien compris George ?

    Code:
    if (stristr($_SERVER['HTTP_USER_AGENT'], 'googlebot') === FALSE)
    && (stristr($_SERVER['HTTP_USER_AGENT'], 'fast') === FALSE)
    { 
    //c'est pas un robot
    session_start()
    // et tout le tralala 
    } 
    else
    { 
    // c'est un robot
    //on peut mettre un mailto afin d'alerter le webmaster d'un crawl sur la page 
    }
    j'espère que j'ai compris, en lisant l'article du stristr (qui est quand même peu développé) je pense avoir compris qu'il s'agissait d'une fonction permettant de rechercher une chaine dans une chaine de caractère et que si elle ne trouvait pas elle ranvoyait "false".

    George, est ce sûr à 100% ?

    et encore merci pour toute votre aide. :wink: carole
     
  9. Kmacleod
    Kmacleod WRInaute passionné
    Inscrit:
    28 Novembre 2002
    Messages:
    2 456
    J'aime reçus:
    0
    C'est pas George, mais Fred
    le mailto est surement pour faire appel de la fonction php mail

    Avec celà tu limites à deux moteurs

    Mais quel est le but de cet algo, recevoir beaucoup de mail par jour ?
    sinon il y a robostats qui piste le passage des robots
     
  10. caro
    caro WRInaute impliqué
    Inscrit:
    21 Juillet 2003
    Messages:
    761
    J'aime reçus:
    0
    non c'est parce qu'en reprenant l'exemple qu'avait donné george au dessus il y avait un "else" et au lieu de le supprimer je sais pas pourquoi j'ai marqué "mailto" en exemple, un peu pourri mon exemple d'ailleurs :lol:
    le mieux c'est juste d'enlever le "else" car cette source est juste présente pour supprimer les sessions aux robots.

    apres je rajouterais les autres moteurs, c'était juste pour vérifier le code.
     
  11. George Abitbol
    George Abitbol WRInaute passionné
    Inscrit:
    6 Juin 2003
    Messages:
    1 519
    J'aime reçus:
    0
    Ton if est mal construit :

    Code:
    if ( (stristr($_SERVER['HTTP_USER_AGENT'], 'googlebot') === FALSE)
    && (stristr($_SERVER['HTTP_USER_AGENT'], 'fast') === FALSE) ) {

    C'est plus qu'un article, c'est la doc officielle PHP ;) Et tu as parfaitement compris ce que faisait cette fonction. Il y a aussi stripos(), j'ignore laquelle des deux est la plus rapide, il faudrait faire des tests.

    Sinon, oui, c'est sûr, enfin, autant sûr que peut l'être une détection par user agent (sachant qu'on peut le modifier et se faire passer pour google).

    Fred
     
  12. caro
    caro WRInaute impliqué
    Inscrit:
    21 Juillet 2003
    Messages:
    761
    J'aime reçus:
    0
    merci beaucoup George pour ton aide
    (désolé pour mon oubli de paranthèse dans ma fonction "if" , décidemment je fais tout trop vite en ce moment)
     
  13. WebRankInfo
    WebRankInfo Admin
    Membre du personnel
    Inscrit:
    19 Avril 2002
    Messages:
    20 726
    J'aime reçus:
    779
    puisqu'on te dit qu'il s'appelle Fred !!! :mrgreen:
     
  14. caro
    caro WRInaute impliqué
    Inscrit:
    21 Juillet 2003
    Messages:
    761
    J'aime reçus:
    0
    oups pardon
    décidemment c'est pas mon jour :lol:
     
  15. Remi L.
    Remi L. WRInaute impliqué
    Inscrit:
    6 Septembre 2003
    Messages:
    905
    J'aime reçus:
    0
    Michèle, tu peux aussi écrire :

    Code:
    if (!eregi("googlebot|fast|robot",$navigateur))
    
    Et tu peux en mettre 40 à la file comme cela...
    Bonjour à Georges...
     
  16. XoSt
    XoSt WRInaute passionné
    Inscrit:
    6 Octobre 2003
    Messages:
    2 196
    J'aime reçus:
    0
    George de la jungle :-D
     
  17. George Abitbol
    George Abitbol WRInaute passionné
    Inscrit:
    6 Juin 2003
    Messages:
    1 519
    J'aime reçus:
    0
    Les "bêtes" fonctions de chaînes de caractères sont moins complexes et plus rapides que les expressions régulières. Mais si on veut vraiment utiliser les regex, alors il faut préférer les fonctions PCRE aux fonctions POSIX (ces dernières sont plus lentes). Donc preg_match() serait mieux.

    Code:
    if (!preg_match('/googlebot|fast|etc./i', $_SERVER['HTTP_USER_AGENT'])) {
    // etc.
    }
    Fred
     
  18. caro
    caro WRInaute impliqué
    Inscrit:
    21 Juillet 2003
    Messages:
    761
    J'aime reçus:
    0
    oula restons simples et concentrés :lol:

    je préfère le code du début :wink:
     
  19. Anonymous
    Anonymous Guest
    Je dirais même mieux
    Code:
    
    if (!ereg("googlebot|fast|robot",$navigateur)) 
    
    
    comme ça t'as pas de problème de casse de caractère :)

    oulah, j'avais pas vu le preg_match qui arrivait aprés :oops:
     
  20. Remi L.
    Remi L. WRInaute impliqué
    Inscrit:
    6 Septembre 2003
    Messages:
    905
    J'aime reçus:
    0
    Il faut peut-être mieux faire le test en 'case insensitive', par ce que quand on regarde la liste des IDs de robots, on voit de tout...
     
  21. sepang
    sepang WRInaute discret
    Inscrit:
    26 Janvier 2003
    Messages:
    58
    J'aime reçus:
    0
    Code:
    $robotList = array('googlbot', 'inktomi');
    
    //-- Si vous avez rentré le nom exact du robot dans le tableau: (solution la meilleure dans le cas que j'évoque, voir ma conclusion)
    
    if (in_array($_SERVER['HTTP_USER_AGENT'], $robotList))
    {
       // c'est un robot
    }
    else
    {
    }
    
    
    //-- Dans le cas ou on a pas rentré le nom exact (genre "googlebot" etc.)
    $cpt = 0;
    foreach($robotList as $robotName)
    {
        if (eregi($robotName, $_SERVER['HTTP_USER_AGENT']))
            $cpt++;
    }
    
    if ($cpt)
    {
       c'est un robot
    }
    else
    {
       visiteur normal
    }
    
    Avantage: qui dit données dans une variable tableau dit donnée dans une base de données... Permet d'utiliser par exemple la table robots de RobotsStats etc...

    A+!
     
  22. George Abitbol
    George Abitbol WRInaute passionné
    Inscrit:
    6 Juin 2003
    Messages:
    1 519
    J'aime reçus:
    0
    sepang : ok, mais pourquoi eregi, qui est plus lent ?

    Il faudrait faire des tests, mais à la limite, ce serait, je pense, encore plus rapide, en gardant le tableau comme ci-dessus, d'utiliser la boucle juste pour construire le pattern (/google|fast|etc./i) et n'exécuter qu'une seule fois la fonction de regex ensuite.

    Fred
     
  23. sepang
    sepang WRInaute discret
    Inscrit:
    26 Janvier 2003
    Messages:
    58
    J'aime reçus:
    0
    in_array() est vraiment ultra rapide...

    Et eregi pour la casse, mais bon, apres tu ajuste, si tu penses vraiment que tes données ont été bien rentrées, tu vires le "i"

    Sinon oui ta solution est bien aussi... On pourrait chipoter à coups de benchmark, mais bon, je suis sur que 80% des personnes qui s'intéressent à ce post utilisent PHPBB, donc on va peut etre pas parler d'optimisation hein :D
     
  24. George Abitbol
    George Abitbol WRInaute passionné
    Inscrit:
    6 Juin 2003
    Messages:
    1 519
    J'aime reçus:
    0
    C'est vrai, mais je parlais surtout pour la deuxième option (sans les noms exacts).

    Je voulais dire "pourquoi eregi() au lieu de preg_match()", je me suis mal exprimé.

    Fred
     
  25. sepang
    sepang WRInaute discret
    Inscrit:
    26 Janvier 2003
    Messages:
    58
    J'aime reçus:
    0
    Parce que plus rapide à écrire? :lol:
    Non tu as raison, vive les regex! ;-p
     
  26. Seagull
    Seagull Nouveau WRInaute
    Inscrit:
    6 Janvier 2004
    Messages:
    1
    J'aime reçus:
    0

    Dans le cas de l'utilisation de RobotsStats, on a l'include de robotstats.inc.php

    inutile donc de faire 2 fois le travail:
    la variable $detecte est sur false par défaut, et sur true lorsqu'un bot a été detecté.

    Code:
    if(!$detecte){
    	session_start();
    	}
    
    le code suivant devrais suffir dans ce cas là? Et ne serais-ce pas le plus rapide d'entre tous (sans recoder RobotsStats bien sûr)?


    Seagull
     
Chargement...
Similar Threads - Precisions sessions Forum Date
Des précisions sur les balises Hn des fiches produits Débuter en référencement 4 Juillet 2019
Suivre avec précisions le comportement de pages Youtube en site référent Google Analytics 26 Août 2015
Précisions sur la notion de returning visitors sur GA VS Xiti Google Analytics 3 Décembre 2014
Je cherche des précisions sur le duplicate content Référencement Google 19 Mars 2014
Précisions sur le référencement Débuter en référencement 5 Novembre 2012
Remplacement dans un fichier texte, précisions ? Développement d'un site Web ou d'une appli mobile 11 Mars 2012
Réduction temps de chargement - demande précisions CDN Développement d'un site Web ou d'une appli mobile 7 Juillet 2011
Précisions sur le référencement Google Référencement Google 19 Avril 2011
Le duplicate content, précisions Débuter en référencement 20 Février 2011
Petites précisions Jquery Développement d'un site Web ou d'une appli mobile 5 Août 2010
Duplicate content precisions Débuter en référencement 3 Septembre 2009
Reprécisions à propos du PR Netlinking, backlinks, liens et redirections 15 Mai 2008
Quelques précisions sur les backlinks (BL) Débuter en référencement 28 Mars 2008
Qualité de l'ancre? Precisions svp Netlinking, backlinks, liens et redirections 17 Août 2007
Quelques précisions sur le PageRank Netlinking, backlinks, liens et redirections 2 Mars 2007
plus de precisions s'il vous plait Netlinking, backlinks, liens et redirections 3 Octobre 2006
ClickIntext/Intellitext + Adsense des précisions ici Administration d'un site Web 16 Août 2006
Précisions sur le duplicate content Débuter en référencement 10 Janvier 2006
url rewriting besoin de précisions URL Rewriting et .htaccess 19 Décembre 2005
Yahoo Demande de précisions concernant Espotting Le café de WebRankInfo 8 Avril 2005