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

Discussion :

Développement de compteurs de visiteurs

  1. #1
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut Développement de compteurs de visiteurs
    Bonjour,

    je veux développer un compteur de visiteurs pour mon site web.

    Ce que j'en sais du point de vue algorithmique est qu'il va me falloir différencier chaque visiteur, pour ne pas compter le même à chacune de ses visites.

    J'ai utilisé des compteurs gratuits mais rien ne garantit leur durabilité et ni la stabilité du contrat d'utilisation. Ceux qui les offrent peuvent le désactiver quand ils veulent et pour n'importe quelle raison. En plus, la plupart imposent leur publicité.

    Comment puis-je développer mon propre compteur de visiteurs ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  2. #2
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonsoir

    Tu peux par exemple le faire en PHP/MySQL...

    Tu te base sur les sessions : tu enregistres dans la base de données l'identifiant de session pour la page en cours. Ensuite tu vérifie si cet identifiant existe déjà.

    Si non tu incrémente dans une autre table la valeur du nombre de visiteurs pour cette page.
    Si oui tu ne l'incrémente pas, ou tu incrémente une autre valeur pour la même page correspondant aux nombre de visites totales de la page...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  3. #3
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut en route !
    Merci 12Monkeys, j'ai adopté ta solution.

    J'ai donc créé une table Sessions dans ma base MySQL avec un seul champ en UNIQUE pour éviter les doublons.

    Et là ça se corse !

    Comme je débute en PHP, j'ai commencé par faire un code qui affiche la nombre d'entrées de ma table, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $host = "MonHost";
    $user = "MonUser";
    $pass = "MonPass";
    $connection = mysql_connect($host, $user, $pass);
    $get_query = "SELECT id FROM `MaBase`.`Sessions`";
    $res = mysql_query($get_query, $connection);
    $nbr = mysql_num_rows($res);
    echo "Nombre de sessions : $nbr";
    ?>
    Avec ça j'obtiens un message qui m'indique le nombre d'entrées de ma table, et donc le nombre de sessions différentes et le nombre de visiteurs.

    Ma première question : comment intégrer l'affichage de ce résultat à ma page html ?

    Ma seconde question : comment récupérer l'id session ? Ce que j'ai lu sur le sujet était incompréhensible et j'ai fini par lâcher l'affaire pour ce soir.
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  4. #4
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    Citation Envoyé par anadoncamille Voir le message
    Ma première question : comment intégrer l'affichage de ce résultat à ma page html ?
    Je dois pas bien comprendre la question parce que tu le fais déjà dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Nombre de sessions : $nbr";
    Citation Envoyé par anadoncamille Voir le message
    Ma seconde question : comment récupérer l'id session ? Ce que j'ai lu sur le sujet était incompréhensible et j'ai fini par lâcher l'affaire pour ce soir.
    Pour ce faire il faut déjà initialiser la session avec session_start() au début de chaque page où tu veux les utiliser. Ensuite tu peux récupérer l'id des session courante avec session_id() http://php.developpez.com/faq/?page=...sions_methodes

    Mais n'as tu crée qu'une seule table ? Il faut en créer une seconde avec au moins 2 champs : dans laquelle tu enregistres de manière unique l'adresse de la page visitée ainsi que le nombre de visites pour chaque page.

    Dans ton exemple en comptant le nombre de sessions tu saura combien il y a eu de visiteurs sur ton site, mais pas page par page, mais c'est peut être ce que tu veux ?
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  5. #5
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut sessions
    Salut,

    pour l'instant, je veux me limiter au compteur de visiteurs pour démarrer en php et bien comprendre le principe des sessions, c'est pour ça que je n'ai fait qu'une table.

    Si je veux faire un compteur de visites de pages, il me faudra effectivement une autre table avec les adresses de page et les compteurs associés. Pour le moment, vu mon niveau en php, c'est trop compliqué. Mais après le compteur de visiteurs je ferai certainement des compteurs de visites.

    Pour l'affichage, j'ai cru comprendre qu'il est impossible de faire une page contenant du php et portant une extension '.html'. Ce que j'envisageais était de faire une page php dédiée au compteur et afficher cette page dans un cadre de ma page html. Je ne sais pas encore ce que ça va donner.

    Il y a quelque chose qui me trouble avec les sessions. Est-ce qu'un internaute sera reconnu d'une session à l'autre ou est-ce que le système de session considère qu'il est un internaute nouveau chaque fois qu'il redémarre son navigateur ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par anadoncamille
    Pour l'affichage, j'ai cru comprendre qu'il est impossible de faire une page contenant du php et portant une extension '.html'. Ce que j'envisageais était de faire une page php dédiée au compteur et afficher cette page dans un cadre de ma page html. Je ne sais pas encore ce que ça va donner.
    C'est simple : tu ne peux pas intégrer de script php dans un fichier .html
    Ensuite, reste la question de fond : en quoi une page d'extension .php te gêne-t-elle ?
    Citation Envoyé par anadoncamille
    Il y a quelque chose qui me trouble avec les sessions. Est-ce qu'un internaute sera reconnu d'une session à l'autre ou est-ce que le système de session considère qu'il est un internaute nouveau chaque fois qu'il redémarre son navigateur ?
    Une session correspond à une visite. Si le visiteur revient, ce sera à priori une autre session.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Citation Envoyé par anadoncamille Voir le message
    pour l'instant, je veux me limiter au compteur de visiteurs pour démarrer en php et bien comprendre le principe des sessions, c'est pour ça que je n'ai fait qu'une table.
    Ah ok j'avais pas compris.

    Tu as tout à fait raison de procéder par étapes...

    Tout à fait d'accord avec Bovino.

    La session est perdue lors de la fermeture du navigateur... Comment ça se passe : lors de la visite, la session est créée, c'est à dire qu'un fichier est créé sur le serveur, de même qu'un identifiant de session, celui ci est en général transmis dans un cookie, c'est cela qui fait le lien avec le visiteur. S'il ferme le navigateur le cookie est supprimé et il n'y a plus de relation entre le fichier sur le serveur et le visiteur... Ensuite PHP s'occupe selon un système de nettoyage, de supprimer les fichiers sur le serveur auxquels il n'y a plus eu d'accès depuis un moment...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  8. #8
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut débutant power
    Citation Envoyé par Bovino Voir le message
    C'est simple : tu ne peux pas intégrer de script php dans un fichier .html
    Ensuite, reste la question de fond : en quoi une page d'extension .php te gêne-t-elle ?
    C'est que je ne veux pas mélanger les deux codes. Je m'y perds déjà facilement parce que je débute, alors je préfère séparer les deux types de fichiers.

    Cependant j'ai trouvé une solution à mon problème, j'intègre ma page php dans une iframe dans la page html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <iframe src="pageCompteur.php" name="visiteurs">
    <p>pas d'iframe sur ce browser<a href="pageCompteur.php">page du compteur</a></p>
    </iframe>
    La méthode fonctionne bien, je vois la taille de ma table dans ma page html.

    Citation Envoyé par Bovino Voir le message
    Une session correspond à une visite. Si le visiteur revient, ce sera à priori une autre session.
    Citation Envoyé par 12monkeys Voir le message
    La session est perdue lors de la fermeture du navigateur... Comment ça se passe : lors de la visite, la session est créée, c'est à dire qu'un fichier est créé sur le serveur, de même qu'un identifiant de session, celui ci est en général transmis dans un cookie, c'est cela qui fait le lien avec le visiteur. S'il ferme le navigateur le cookie est supprimé et il n'y a plus de relation entre le fichier sur le serveur et le visiteur...
    Dans ce cas, un internaute sera compté comme nouveau visiteur à chacune de ses visites. Est-ce que l'on peut compter chaque internaute comme un seul visiteur ?

    Bon, je me replonge dans ces histoires de sessions
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  9. #9
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut Aaahhh !!
    J'ai des difficultés avec session_start().

    J'ai écris le code suivant pour récupérer l'identifiant de session et le transmettre à la table de compteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    session_start();
    $ids = session_id();
    $host = "MonHost";
    $user = "MonUser";
    $pass = "MonPass";
    $connection = mysql_connect($host, $user, $pass);
    $add_query = "INSERT INTO `maBase`.`Sessions` (`id`) VALUES ($ids)";
    mysql_query($add_query, $connection);
    ?>
    Mais à l'affichage, j'obtiens ces messages d'erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Warning: session_start() [function.session-start]: open(/mnt/139/sdb/3/2/sylv.tournois/sessions/sess_9f86757acddaee8385f435d872cef840, O_RDWR) failed: No such file or directory (2) in /mnt/139/sdb/3/2/sylv.tournois/sessions.php on line 2
    
    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/139/sdb/3/2/sylv.tournois/sessions.php:2) in /mnt/139/sdb/3/2/sylv.tournois/sessions.php on line 2
    
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/139/sdb/3/2/sylv.tournois/sessions.php:2) in /mnt/139/sdb/3/2/sylv.tournois/sessions.php on line 2
    
    Warning: Unknown(): open(/mnt/139/sdb/3/2/sylv.tournois/sessions/sess_9f86757acddaee8385f435d872cef840, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
    
    Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/139/sdb/3/2/sylv.tournois/sessions) in Unknown on line 0
    Apparemment la session ne peux pas être démarrée. Par contre ça génère un nouvel identifiant à chaque rafraîchissement de page, ce qui remplit ma table d'entrées qui correspondent à des identifiants normaux.

    Comment puis-je valider l'ouverture de session sans générer de messages d'erreur ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  10. #10
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Apparemment le dossier dans lequel les fichiers de session doivent être enregistrés n'est pas accessible ou n'existe pas :

    http://php.developpez.com/faq/?page=...ssions_erreurs

    Sinon il y a peut être plus simple que les iframes : les includes...

    Cela sert à insérer un fichier dans un autre comme si cela avait été un seul fichier... Comme ça tu ne mélange pas HTML et PHP...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  11. #11
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut pb : erreur 500
    Bonjour,

    Citation Envoyé par 12monkeys Voir le message
    Apparemment le dossier dans lequel les fichiers de session doivent être enregistrés n'est pas accessible ou n'existe pas :
    Je crois aussi que le problème vient de là, alors j'ai essayé différentes méthodes :
    - j'ai créé un document php.ini avec une ligne : session.save_path = /tmp et ensuite j'ai placé le php.ini à la racine de mon site et j'ai créé un dossier tmp. Résultat, je tombe sur une page de free (mon hébergeur) indiquant : erreur 500 - Erreur interne du serveur
    - j'ai donc effacé le dossier tmp et le php.ini puis en regardant les messages d'erreur j'ai vu que php cherchait à sauvegarder dans un dossier 'sessions' que j'ai donc créé. Mais j'ai eu le même problème qu'avec l'essai précédent : erreur 500

    Depuis, je ne fais que tomber sur cette page d'erreur, même après avoir rétabli la configuration initiale de mon site (pas de php.ini, pas de dossier /tmp ni /sessions). Même en vidant le cache de mon explorateur et en le redémarrant je retombe sur cette page à chaque fois que je teste mon compteur.

    Je ne sais plus quoi faire et c'est d'autant plus frustrant que j'ai l'impression que le compteur est presque prêt.

    Citation Envoyé par 12monkeys Voir le message
    Sinon il y a peut être plus simple que les iframes : les includes...
    J'ai essayé dans ma page html d'écrire : include "sessions.php", mais sans succès. Le navigateur affiche include "sessions.php" au lieu d'afficher la page à inclure. Je suis donc repassé aux iframes.

    Pour revenir au compteur de visiteurs lui-même, y a-t-il un moyen de différencier chaque internaute et d'éviter que le même internaute soit reconnu comme un visiteur différent à chaque fois qu'il redémarre son navigateur ?
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  12. #12
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Alors si ton hébergeur est free, la situation est un peu différente : http://php.developpez.com/faq/?page=...#sessions_free


    Citation Envoyé par anadoncamille Voir le message
    J'ai essayé dans ma page html d'écrire : include "sessions.php", mais sans succès. Le navigateur affiche include "sessions.php" au lieu d'afficher la page à inclure. Je suis donc repassé aux iframes.
    La page dans laquelle tu as mis l'include a t'elle bien l'extension .php ? Et le code correspond-il bien à ceci ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    include "sessions.php";
    ?>

    Citation Envoyé par anadoncamille Voir le message
    Pour revenir au compteur de visiteurs lui-même, y a-t-il un moyen de différencier chaque internaute et d'éviter que le même internaute soit reconnu comme un visiteur différent à chaque fois qu'il redémarre son navigateur ?
    Il y a quelques discussions sur le sujet sur le forum. Cela est très difficile et il n'y a aucune garantie d'exactitude... La solution encore la plus sure c'est d'obliger les personnes à s'identifier, cela n'est pas applicable sur la plupart des sites... Sinon tu peux essayer avec les cookies : tu crées un cookie sur le poste du client en lui attribuant un identifiant unique, et à chaque visite tu vérifies si le cookie existe, si oui tu le reportes dans la base pour tes données statistiques, si non tu crées le cookie avec un nouvel identifiant unique... On va un peu plus loin dans la complexité là...

    Personnellement c'est ce que je fais, sur un site d'amicale, alors que je sais pertinemment qu'il y a au maximum 50 ou 100 personnes qui visitent le site, avec le temps j'ai plusieurs centaines d'identifiants uniques, cette solution n'est donc pas fiable : effacement du cookie, la personne utilise plusieurs ordinateurs, nouvelle visite après l'expiration du cookie, etc...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  13. #13
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut ça marche !
    Salut,

    ça y est, le compteur visiteurs fonctionne !

    Citation Envoyé par 12monkeys Voir le message
    Alors si ton hébergeur est free, la situation est un peu différente : http://php.developpez.com/faq/?page=...#sessions_free
    Je l'ai lu et ça a été très simple, j'ai juste eu à créer un dossier /sessions/ et maintenant ça fonctionne.
    Par prudence j'ai ajouté l'instruction session_name parce que j'utilise un forum phpBB2.

    Voilà le code de mon compteur :
    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
    <?php 
    session_name('MaSession');    // pour distinguer plusieurs systèmes de session sur le même serveur
    session_start();    // début de session
    $ids = session_id();    // récupération de l'id session
    $host = "MonHost";    // données de connection MySQL
    $user = "MonUser";
    $pass = "MonPass";
    $connection = mysql_connect($host, $user, $pass); // connection
    $add_query = "INSERT INTO `MaBase`.`Sessions` (`id`) VALUES ('$ids')"; // requête d'ajout d'id session
    $get_query = "SELECT id FROM `MaBase`.`Sessions`"; // requête de lecture de compteur
    mysql_query($add_query, $connection);    // ajout d'id session
    $res = mysql_query($get_query, $connection);    // lecture de la table Sessions (qui fait office de compteur)
    $nbr = mysql_num_rows($res);    // le nombre de visiteurs correspond au nombre d'entrées dans la table
    $nbr += 3537;    // ce nombre sert à faire correspondre le résultat de l'ancien compteur avec celui du nouveau (si c'était un compteur tout neuf, ce nombre serait à 0)
    echo "$nbr";    // affichage du résultat
    ?>


    Ensuite j'ai inséré un lien vers mon compteur sur les pages html qui en avaient besoin.
    Citation Envoyé par 12monkeys Voir le message
    La page dans laquelle tu as mis l'include a t'elle bien l'extension .php ?
    Non, ce sont des extensions html ou htm donc j'ai fait l'insertion de lien par iFrame. Mais j'aurais préféré l'include et je l'aurais fait si mes pages étaient en .php



    Pour l'identification de l'internaute,
    Citation Envoyé par 12monkeys Voir le message
    Il y a quelques discussions sur le sujet sur le forum. Cela est très difficile et il n'y a aucune garantie d'exactitude...
    Pour le moment je vais rester dans le facile, mais je pensais à quelque chose : est-il possible d'utiliser l'ip de l'internaute pour rendre le compteur plus fiable ? On m'a dit que c'était grâce à cette méthode que certains compteurs gratuits arrivent à fonctionner.


    Merci pour votre aide !
    Prochaine étape : les compteurs de visite.
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  14. #14
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Citation Envoyé par anadoncamille Voir le message
    Salut,

    Pour l'identification de l'internaute,
    Pour le moment je vais rester dans le facile, mais je pensais à quelque chose : est-il possible d'utiliser l'ip de l'internaute pour rendre le compteur plus fiable ? On m'a dit que c'était grâce à cette méthode que certains compteurs gratuits arrivent à fonctionner.


    Merci pour votre aide !
    Prochaine étape : les compteurs de visite.
    Je ne suis pas persuadé de la pertinence de l'utilisation des adresses ip dans ton cas. Une adresse ip change lorsque la personne se déconnecte puis se reconnecte à internet. Sauf à avoir une ip fixe. Donc un même visiteur aura des adresses ip différentes.
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  15. #15
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut précision du compteur
    Salut,

    Citation Envoyé par 12monkeys Voir le message
    Je ne suis pas persuadé de la pertinence de l'utilisation des adresses ip dans ton cas. Une adresse ip change lorsque la personne se déconnecte puis se reconnecte à internet. Sauf à avoir une ip fixe. Donc un même visiteur aura des adresses ip différentes.
    Effectivement, les IP fixes ne sont pas systématiques, loin de là.
    Par contre, les identifiants de sessions changent plus souvent que les adresses IP. En fait il est impossible qu'un internaute garde son id session en ayant changé d'adresse IP. Par contre il peut avoir plusieurs id sessions pour la même adresse IP.

    Donc un compteur basé sur l'adresse IP serait plus fiable qu'un compteur basé sur l'id session.

    On se rapproche du but mais on n'atteint pas encore la précision de l'identification par inscription (login).

    En fait le problème que j'ai en tant que développeur est de m'exclure automatiquement des statistiques du compteur de visiteurs. Pour ce problème, il serait plus efficace que j'utilise l'adresse IP plutôt que l'identifiant session.

    Ce qui consisterait à remplacer dans le code du compteur les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    session_name('MaSession');    // pour distinguer plusieurs systèmes de session sur le même serveur
    session_start();    // début de session
    $ids = session_id();    // récupération de l'id session
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ids = getenv("REMOTE_ADDR");  // identification par IP (pas besoin de système de session)
    Je vais essayer la deuxième méthode pour faire un comparatif. Mais pour ce que j'en ai lu, le comptage par IP semble trop "radin" et le comptage par id session semble trop "généreux".

    Pour l'adresse IP, le problème de l'attribution aléatoire des IP fait que la même adresse IP peut servir successivement à plusieurs utilisateurs différents. Dans ce cas, le compteur n'enregistrera qu'une seule entrée sans voir les différents utilisateurs.
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  16. #16
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Tu as tout à fait raison dans ta réflexion.

    Cependant tu n'évoques pas une autre possibilité qui est celle de l'identifiant stocké dans les cookies, et qui as ma préférence.

    L'idéal serait de cumuler les 3...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  17. #17
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut cookies
    Citation Envoyé par 12monkeys Voir le message
    Tu as tout à fait raison dans ta réflexion.

    Cependant tu n'évoques pas une autre possibilité qui est celle de l'identifiant stocké dans les cookies, et qui as ma préférence.

    L'idéal serait de cumuler les 3...
    C'est vrai que la solution du cookie est la plus fiable pour identifier un utilisateur qui accepte les cookies.

    L'idée de cumuler les 3 méthodes est très bonne.
    Notre but serait d'obtenir une identification de l'utilisateur aussi fiable que possible afin de ne pas le compter plusieurs fois.

    Comme sources d'informations sur l'utilisateur, on a :
    - l'identifiant de session (renouvelé à chaque redémarrage du navigateur)
    - l'adresse IP (parfois renouvelée à la connexion à internet)
    - le marquage par cookie (durée de vie variable)

    Existe-il d'autres données accessibles qui seraient plus stables (ayant une plus grande durée de vie) et donc qui garantiraient un meilleure fiabilité du compteur ?

    Je reste perplexe devant la difficulté du problème, je ne m'attendais pas à ça. C'est assez facile de créer un compteur mais le rendre fiable est une autre paire de manches !
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

  18. #18
    Membre averti
    Avatar de anadoncamille
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 395
    Points : 310
    Points
    310
    Billets dans le blog
    1
    Par défaut redondance ?
    Bonjour,

    j'ai réfléchi à l'idée de cumuler les trois méthodes de comptage et il me semble que le comptage par session et le comptage par IP sont redondants.

    Le cumul des trois méthodes reviendrait donc à utiliser le comptage par cookie plus une des deux autres, au choix.

    J'avoue que j'ai une préférence pour le comptage par IP pour la simplicité de sa mise en place et la taille réduite de la base de données qu'elle génère.
    __________________________________
    | +
    | Sylvain Tournois - Création logicielle
    |
    | sylv.tournois.free.fr
    |

Discussions similaires

  1. compteur de visiteur : votre avis
    Par libuma dans le forum Langage
    Réponses: 7
    Dernier message: 07/06/2008, 14h37
  2. position du compteur de visiteurs
    Par pulse1960 dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 30/08/2007, 23h26
  3. [PHP-JS] Un compteur de visiteurs par mois
    Par frank69 dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2006, 00h01
  4. Modification Compteur de Visiteur en PHP (Ajout D'Url)
    Par thefutureisnow dans le forum Langage
    Réponses: 4
    Dernier message: 11/03/2006, 19h16
  5. Réponses: 15
    Dernier message: 15/01/2006, 20h02

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