Compter le nombre de fois ou une page a été vue

fabrice88
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 289
Inscription: 15 Oct 2007

Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 9:12

Bonjour,
en parralele avec mon autre message sur ce forum je voudrait savoir comment faire pour compté le nombre de fois ou un sujet de mon forum aura été vue apr les internautes ?
J'imaginai faire comme ceci : dans ma table forum_sujet, je rajoute un nouveau champ que je nomme 'vues'.
ensuite lorsq'un internaute clique sur un sujet pour voir son detail je cré un compteur qui ajoute +1 a chaque ouverture du sujet.

Est ce que l'idée est bonne ou est ce qu'il faut procéder autrement ?


M&B Multimédia
WRInaute impliqué
WRInaute impliqué
 
Messages: 544
Inscription: 1 Oct 2009

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 9:20

Ton idée est bonne... personnellement je ne vois pas comment tu pourrais faire autrement.

ZelkiN
WRInaute impliqué
WRInaute impliqué
 
Messages: 500
Inscription: 27 Juil 2007

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 10:06

En effet tu n'as guerre le choix, et puis la plupart des compteurs sont fait ainsi, après tu peux gérer au niveau des ip pour ne pas compter plusieurs fois la meme page vu au meme utilisateur

fabrice88
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 289
Inscription: 15 Oct 2007

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 10:19

ok merci bon alors voilà se que je fais :
Code: Tout sélectionner
   //création de la requête SQL: 
   $sqlvue = "UPDATE forum_sujets SET vue = $vue+1 WHERE id = ".$_GET['id_sujet_a_lire']; 
   $reqvue = mysql_query($sqlvue);


lors de la toute premiere ouverture de la page j'ai bien l'incrementation du + 1 qui se fait et j'ai donc mon champ vue qui prend la valeur de 1 au lieu de 0.
par contre apres sa ne fonctionne plus. si je retourne sur la meme page mon champ vue n'est plus incrémenté il reste à 1.
:?


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 10:26

fabrice88 a écrit:ok merci bon alors voilà se que je fais :
Code: Tout sélectionner
   //création de la requête SQL: 
   $sqlvue = "UPDATE forum_sujets SET vue = $vue+1 WHERE id = ".$_GET['id_sujet_a_lire']; 
   $reqvue = mysql_query($sqlvue);


lors de la toute premiere ouverture de la page j'ai bien l'incrementation du + 1 qui se fait et j'ai donc mon champ vue qui prend la valeur de 1 au lieu de 0.
par contre apres sa ne fonctionne plus. si je retourne sur la meme page mon champ vue n'est plus incrémenté il reste à 1.
:?


C'est le "$vue" qui semble bizarre, je sais pas ce qu'il contient, ça devrait plutôt être:

Code: Tout sélectionner
   //création de la requête SQL: 
   $sqlvue = "UPDATE forum_sujets SET vue = vue+1 WHERE id = ".$_GET['id_sujet_a_lire']; 
   $reqvue = mysql_query($sqlvue);

fabrice88
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 289
Inscription: 15 Oct 2007

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 10:33

ah oui zut ! Merci.
Sa fonctionne.

ZelkiN
WRInaute impliqué
WRInaute impliqué
 
Messages: 500
Inscription: 27 Juil 2007

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 10:40

Euh Spout a raison d'une part, d'autre part attention a la sécurité o_O, ne met jamais un GET pas traité dans une requête SQL !

Si il s'agit d'un nombre, vérifie le avec un is_numeric, ou au moins met un addslashes($_GET['..']) sinon tu risques d'avoir des problèmes :)

Bon courage !


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 10:44

Pour éviter les comptages multiples il y a un moyen simple (mais pas infaillible):
- Quand un comptage est fait, envoyer un cookie vers le navigateur du visiteur.
- Sauvegarder la dernière IP qui a incrémenté le compteur.
- Avant chaque incrémentation du compteur, vérifier si cookie et si pas la même IP.

Si un petit malin supprime les cookies, il est encore bloqué par la dernière IP.
La faille c'est si le visiteur change d'IP et supprime ses cookies, mais c'est quand même beaucoup mieux que sans vérification.

Edit: oui j'ai pas fait gaffe, il faut évidement bien vérifier le contenu du _GET avant de le transmettre à la requête.
Avec mysql_real_escape_string() http://php.net/manual/fr/function.mysql-real-escape-string.php au lieu de addslashes()

fabrice88
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 289
Inscription: 15 Oct 2007

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 10:48

sinon tu risques d'avoir des problèmes

quel genre de probleme peut on avoir ?


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 10:50

fabrice88 a écrit:
sinon tu risques d'avoir des problèmes

quel genre de probleme peut on avoir ?



http://fr.wikipedia.org/wiki/Injection_SQL

fabrice88
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 289
Inscription: 15 Oct 2007

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 11:14

ok donc si je met en tout debut de ma page :
Code: Tout sélectionner
$id_sujet_a_lire = mysql_real_escape_string($_GET['id_sujet_a_lire']);

C'est ok ?


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 11:19

oui

fabrice88
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 289
Inscription: 15 Oct 2007

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 12:00

ok merci. alors du coup dès que j'intégre des données dans ma base sql je doit mettre mysql_real_escape_string().

Est ce que dans le cas de la requete ci dessous je doit la modifié :

Code: Tout sélectionner
$sql = 'INSERT INTO forum_reponses VALUES("", "'.$_POST['auteur'].'", "'.$_POST['message'].'", "'.$date.'", "'.$_GET['numero_du_sujet'].'")';


pour (mais sa va être long si y'a beaucoup de champs a remplir...):
Code: Tout sélectionner
$auteur = mysql_real_escape_string($_POST['auteur']);
$message= mysql_real_escape_string($_POST['message']);
$date = mysql_real_escape_string($_POST['date']);
$numero_du_sujet = mysql_real_escape_string($_GET['numero_du_sujet']);

$sql = 'INSERT INTO forum_reponses VALUES("", "'.$auteur.'", "'.$message.'", "'.$date.'", "'.$numero_du_sujet.'")';


HawkEye
WRInaute accro
WRInaute accro
 
Messages: 17013
Inscription: 23 Fév 2004

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 12:03

NB: tu as pensé que chaque crawl de GoogleBot, Mediapartners, Slurp! et ses amis va faire une comptabilisation de plus ? :roll:

hyadex
WRInaute impliqué
WRInaute impliqué
 
Messages: 756
Inscription: 23 Jan 2005

Re: Compter le nombre de fois ou une page a été vue

Message le Jeu Juin 03, 2010 12:19

Et si tu as de nombreuses pages vues par jours, ca va te faire un sacré nombre de requêtes SQL !

Compter le nombre de fois ou une page a été vue

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

  • Calcul d'indice de densité
    Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page.
  • Analyse des backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Déterminer l'ancienneté d'un site
    Cet outil vous permet de connaître une estimation de l'ancienneté d'un site : il fournit la date à laquelle Google l'a indexé la première fois (et la même chose pour archive.org).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités