IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

pb avec session_start


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Par défaut pb avec session_start
    bonjour,

    dans une appli ASP.NET, à chaque démarrage de session, j'utilise la procédure session_start du global.asax pour écrire une ligne dans un fichier txt
    avec l'IP de l'utilisateur et la date et heure
    mon problème est que je me retrouve dans mon fichier texte avec la même IP enregistrer plusieurs fois à la suite dans un intervalle de temps très court
    exple :
    02/06/2007 01:32:39 ip= 66.249.72.170
    02/06/2007 01:32:45 ip=66.249.72.170
    02/06/2007 01:32:54 ip= 66.249.72.170
    02/06/2007 01:32:59 ip=66.249.72.170

    tout se passe comme si la session de l'utilisateur était très courte, alors qu'elle doit durer en théorie 30 min
    bref j'ai plusieurs lignes écrites dans mon fichier pour une seule session

    est-ce que cela ne viendrait pas des moteurs de recherche qui visitent l'apllication, dans ce cas, peut-être que eux déclenchent une session mais la ferme aussitôt, je ne sais pas , et c'est très génant car cela fausse mes statistiques

    si vous avez une solution ou une pistes je suis preneur

    merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Effectivement..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    C:\Documents and Settings\blablabla>tracert 66.249.72.170
    
    Détermination de l'itinéraire vers crawl-66-249-72-170.googlebot.com [66.249.72.17
    avec un maximum de 30 sauts*:
    
      1    <1 ms    <1 ms    <1 ms  ME
      2     1 ms    <1 ms    <1 ms  ME
      3    15 ms    16 ms    16 ms  NEXT
      4    15 ms    16 ms    14 ms  NEXT
      5     *       14 ms    14 ms  NEXT
      6    15 ms    14 ms    14 ms  NEXT
      7    15 ms    16 ms    16 ms  NEXT
      8    17 ms    16 ms    16 ms  ae-32-52.ebr2.paris1.level3.net [4.68.109.62]
      9    15 ms    16 ms    16 ms  ae-1-100.ebr1.paris1.level3.net [4.69.133.81]
     10    36 ms    36 ms    36 ms  ae-2.ebr1.london2.level3.net [4.69.133.94]
     11    28 ms    35 ms    36 ms  ae-1-100.ebr2.london2.level3.net [4.69.132.122]
     12    33 ms    21 ms    31 ms  ae-2.ebr1.london1.level3.net [4.69.132.146]
     13    21 ms    24 ms    23 ms  ae-11-53.car1.london1.level3.net [4.68.116.79]
     14    22 ms    23 ms    23 ms  195.50.118.210
     15    89 ms    88 ms    88 ms  72.14.236.216
     16   109 ms   109 ms   106 ms  66.249.94.235
     17   108 ms   107 ms   107 ms  64.233.175.109
     18   122 ms   122 ms   124 ms  64.233.175.111
     19   124 ms   107 ms   108 ms  crawl-66-249-72-170.googlebot.com [66.249.72.170]
    D'un coté, tu peux avec beaucoup d'entreprise, meme réaliser une statistique sur les bot qui visite ton site

    Sinon... Regarde plutot à la session_end, et tu enregistre uniquement ce qui te parait "humain" (en terme de temps)

  3. #3
    Membre averti
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Par défaut
    que vais-je avoir de plus avec la session_end ?
    si j'écris dans le fichier à la session_end , ce sera le même problème non ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    A la session_start tu enregistre la date en cours
    a la session_end tu enregistre la date en cours.

    La différence donne la durée de session : si elle est inférieur à 10 secondes, on peut considérer que ce n'est pas humain.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    Je m'avance un peu car je n'y connais pas grand chose, mais si une entreprise est derrière un proxy, est-ce que toute les machines de l'intranet n'ont pas en qque sorte la même adresse "externe". Si c'est le cas ça pourrait expliquer ton log: plusieurs personnes de la même entreprise se connectent et seule l'ip du proxy est affichée...

  6. #6
    Membre averti
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Par défaut
    oui c'est vrai, mais la probabilité que plusieurs personnes d'une même entreprise se connecte à chaque fois avec 2 secondes d'intervalles est tres faible

    je vais plutot voir du coté de session_end. chubyone, j'image que sur le session start, je met la date dans une variable de session, variable que je récupére dans le session_end pour calculer l'interval de temps entre les 2, c'est ça ? merci en tot cas, il fallait y penser .

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Citation Envoyé par Chubyone
    A la session_start tu enregistre la date en cours
    a la session_end tu enregistre la date en cours.

    La différence donne la durée de session : si elle est inférieur à 10 secondes, on peut considérer que ce n'est pas humain.
    ça ne fonctionnera pas. L'évenement session_end n'est pas déclenché par le client mais par le serveur automatiquement au bout d'un certain temps d'inactivité du client, paramétrable dans IIS et le web.config. Par défaut c'est 20 minutes, donc tout ce que tu risques de voir c'est que les sessions durent 20 minutes, aucun intérêt.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Vi... J'ai un peu "synthétisé" ma pensée en 2 mots...

    Je ne te promets pas que ca marche... J'ai juste balancer ce qui me paraissait le plus naturel pour distinguer un robot...

    Il faut surtout trouver un bon équilibre dans la durée.

    Et si pour un peu le bot met un peu plus de temps ou qu'il ne la ferme pas, cela faussera les stats tout de meme des "vrais" utilisateurs.

  9. #9
    Membre averti
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Par défaut
    une solution : je me sers de l'objet application pour stocker une chaine d'ip et la date de la dernière session, et arbitrairement, j'écris dans le fichier log, uniquement les sessions pour lesquelles l'ip n'a pas déj à été enregistrée depuis au moins 5 minutes

    ce qui donne dans la void session_start du global.asax

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
                 DateTime au;
                au = DateTime.Now;
                string midenti;
                string yidenti;
                string fichier_identi;
                string ip = Request.ServerVariables["REMOTE_ADDR"];
                midenti = au.ToString("%M");
                yidenti = au.ToString("yyyy");
     
                Application.Lock();
                string list_ip;
     
                TimeSpan dure;
                DateTime date_ip = new DateTime();
     
                if (Application["ip"] != null && Application["date_ip"] != null)
                {
     
                    list_ip = Convert.ToString(Application["ip"]);
                    date_ip = Convert.ToDateTime(Application["date_ip"]);
                    dure = au - date_ip;
                    if (dure.Minutes > 5)
                    {
                        list_ip = "";
                    }
     
     
                    if (list_ip.IndexOf(ip) == -1)
                    {
                        // ecriture dans le fichier texte
                        fichier_identi = "/chambagri/consult/log/identi-" + midenti + "-" + yidenti + ".txt";
                                           System.IO.StreamWriter monstream = new System.IO.StreamWriter(Server.MapPath(fichier_identi), true);
                        string lachaine;
                        lachaine = au.ToString() + " |  | |  | observatoire |  | " + ip ;
                        monstream.WriteLine(lachaine);
                        monstream.Close();
     
                    }
                      list_ip = list_ip + ip + ";";
     
     
                }
                else
                {
                   list_ip = ip + ";";
                    // ecriture dans le fichier texte
                    fichier_identi = "/chambagri/consult/log/identi-" + midenti + "-" + yidenti + ".txt";
                                   System.IO.StreamWriter monstream = new System.IO.StreamWriter(Server.MapPath(fichier_identi), true);
                    string lachaine;
                    lachaine = au.ToString() + " |  | |  | observatoire |  | " + ip; ;
                    monstream.WriteLine(lachaine);
                    monstream.Close();
     
                }
     
     
                Application["ip"] = list_ip;
                Application["date_ip"] = au;
                Application.UnLock();
     
     
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec session_start()
    Par selmac594 dans le forum Windows
    Réponses: 2
    Dernier message: 22/03/2007, 21h11
  2. [Cookies] problème avec session_start
    Par tom42 dans le forum Langage
    Réponses: 2
    Dernier message: 13/03/2007, 14h25
  3. Erreur avec session_start();
    Par fourniey dans le forum Langage
    Réponses: 7
    Dernier message: 06/03/2007, 13h38
  4. [Cookies] Problème avec session_start
    Par philippef dans le forum Langage
    Réponses: 3
    Dernier message: 29/06/2006, 20h55
  5. problème avec session_start()
    Par hanane_iaai dans le forum Langage
    Réponses: 1
    Dernier message: 12/12/2005, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo