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

Langage PHP Discussion :

Compteur de clics


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2018
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Compteur de clics
    Bonjour,

    Je souhaite comptabiliser le nombre de clic sur un bouton, mais j'ai un peu de mal a bien placer un bout de code récupéré sur internet. Pourriez-vous m'aider s'il vous plait ?

    Donc voici le problème en détails:

    la page ou est le bouton 'page-bouton.php'
    c'est ici que je sèche ...
    je me doute bien que cette balise est pas bien formulée, voila donc ou j'ai besoin d'aide svp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="url/fichier.pdf"> <input type="submit" value="télécharger" /><a class="btn" href="./data/compteur.php">Téléchargé </a><?php readfile("./data/clics.txt"); ?> fois</a></form>
    le fichier compteur.php (le fichier fonctionne bien lui)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $fichier_compteur = fopen('clics.txt', 'r+');
    $vues = fgets($fichier_compteur);
    $vues += 1;
    fseek($fichier_compteur, 0);
    fputs($fichier_compteur, $vues);
    fclose($fichier_compteur);
      ?>
    d'avance merci

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2018
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    bon finalement, j'ai intégrer le code du fichier 'compteur.php' directement dans ma page ou se trouve le bouton pour télécharger le fichier pdf, mais j'ai besoin d'une fonction qui indique a ce code qu'il doit comptabiliser uniquement si on clique sur ce bouton et pas quand on visite la page, ce qui est le cas en ce moment ...

    donc voila mon code de la page ou se trouve le bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      <form action="url/2018.pdf" ><input type="submit" value="télécharger" />
                </form>
    		Téléchargé <?php $fichier_compteur = fopen('./data/clics.txt', 'r+');
    		$vues = fgets($fichier_compteur);
    		$vues += 1;
    		fseek($fichier_compteur, 0);
    		fputs($fichier_compteur, $vues);
    		fclose($fichier_compteur);
    		readfile("./data/clics.txt"); ?> fois

  3. #3
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu t'y prends mal. Il faut savoir que le php est un langage serveur. Cela signifie que le php est traité sur le serveur alors que le html et le javascript sont exécutés sur le client (le navigateur).
    Donc quand tu vois la page html sur ton navigateur le serveur (donc le php) a fini son travail. C'est pour cela que cela incrémente le compteur quand on accède à ta page. En d'autre termes, il n'y a aucune interaction entre le php et le html.

    Il te faut utiliser ajax via jquery ou en js natif.

    Code html : 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
     
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script>
    function compteClics() {
     $.ajax({
          url  : 'compteur.php',
          type : 'GET',
       async: false,
          data : 'r=' + Math.random(), 
       dataType : 'html',
       success:function(data){
      nbTel();
          },
       error:function(message){
            alert( "Erreur 1: " + message.responseText );
          }
        });
    }
    function nbTel() {
     $.ajax({
          url  : 'getcompteur.php',
          type : 'GET',
       async: false,
          data : 'r=' + Math.random(), 
       dataType : 'html',
       success:function(data){
      $('#xfois').html(data);
          },
       error:function(message){
            alert( "Erreur 2 : " + message.responseText );
          }
        });
    }
    </script>
    <body onload="nbTel()">
    <form action="url/2018.pdf"  onsubmit="compteClics(); return true;"> 
     <input type="submit" value="télécharger"/>
     <span>Téléchargé <span id="xfois"></span> fois</span>
     </form>
     
     </body>

    fichier compteur.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $vues = file_get_contents('clics.txt');
    if ($vues !== false)
    {
     $vues += 1;
     file_put_contents('clics.txt',$vues);
    }
    ?>

    fichier getcompteur.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $vues = @file_get_contents('clics.txt');
    if ($vues === false)
    {
     // création du fichier s'il n'existe pas
     $vues = 0;
     file_put_contents('clics.txt',$vues);
    }
    print $vues;
    ?>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2018
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    bon finalement j'ai résolu mon problème tout seul.

    J'ai utilisé une redirection php

    la page avec le bouton renvoi vers une page ou ce code comptabilise mon compteur qui est stocké dans un fichier texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    	 $fichier_compteur = fopen('../data/clics.txt', 'r+');
    	$vues = fgets($fichier_compteur);
    	$vues += 1;
    	fseek($fichier_compteur, 0);
    	fputs($fichier_compteur, $vues);
    	fclose($fichier_compteur);
    	header('Location: url/2018.pdf');
    ?>
    cela fonctionne parfaitement comme je voulais

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2018
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    j'avais pas vu ta réponse badaze ...
    merci quand même !

  6. #6
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    C'est une solution à laquelle j'avais pensé mais dans ce cas tu ne dois pas pouvoir mettre le nom du fichier dans le formulaire. Ce qui fait que plus tu as de fichiers, plus tu as de problèmes.

    Pour que cela fonctionne d'une manière généralisée, il faudrait que tu mettes un lien dans le formulaire du style "ma_page.php?fic=url/2018.pdf"

    Puis dans le script de ma_page.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php 
    	$fichier_compteur = fopen('../data/clics.txt', 'r+');
    	$vues = fgets($fichier_compteur);
    	$vues += 1;
    	fseek($fichier_compteur, 0);
    	fputs($fichier_compteur, $vues);
    	fclose($fichier_compteur);
    	header('Location:'.$_GET['fic']);
    ?>

    Bien entendu il faut sécuriser le code pour tenir compte des erreurs qui pourraient arriver si on ne met rien ou bien si on met un nom de fichier qui n'existe pas.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2018
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    et comment sécuriser le code ?

  8. #8
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    En testant que la valeur du paramètre qui est transmis à la page est renseignée ou que la valeur correspond à un nom de fichier véritable.

    Edit. Ton fichier click.txt contient le nombre de téléchargement indépendamment du nom du fichier. Ce qui fait que si tu en as plus d'un tu ne sauras pas combien de fois chaque fichier a été appelé. Donc pas très utile.
    Je te conseille de créer une table dans une base de données et d'enregistrer le nombre de clics pour chaque fichier
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

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

Discussions similaires

  1. [MySQL] Compteur de clics
    Par Tee shot dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/06/2007, 16h12
  2. [Tableaux] Réaliser un compteur de clic sur un lien
    Par Klimium dans le forum Langage
    Réponses: 15
    Dernier message: 22/10/2006, 22h29
  3. [MySQL] Compteur de clics simple
    Par jim1 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 28/12/2005, 20h18
  4. Aide : Compteur de clic et clic sortant
    Par nono29370 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 24/11/2005, 16h47
  5. compteur de clic et liens en dur?
    Par xtaze dans le forum Langage
    Réponses: 6
    Dernier message: 16/10/2005, 13h47

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