Compteur de hits

Résolu
bonjour, j'ai refait mon site (http://unesourisetmoi.teria.org) en changeant le contenu et j'y ai mis des économiseurs à télécharger.
J'avais trouvé ceci pour compter les 'hits', cela fonctionne nickel en local avec easyphp mais sur le site il n'y a même pas d'affichage du nombre !!!
alors : sos
Voici la 'recette' que j'ai trouvée :
1 - faire un fichier s1.inc avec :
<?
/* lecture du fichier pour s1.php en compteur lié à s1.txt*/
$fichier = fopen("s1.txt","r+");
$visites = fgets($fichier,255);
$visites++;
fclose($fichier);

/* écriture du fichier */
$fichier=fopen("s1.txt","w");
fwrite($fichier,$visites);
fclose($fichier);
echo "<font color=\"black\"><b>",$visites," fois </b></font>";
?>
2 - faire un fichier s1.txt avec :
20
3 - mettre dans s1.php:
<p>
ouvert :
<?include("s1.inc");?>
</p>
(là où doit se produire l'affichage)
si vous pouvez me trouver le bug ... ce serait super !
@mitiés
b g

5 réponses

Résumé de la discussion

Un utilisateur cherche à afficher un compteur de visites et de téléchargements en PHP en utilisant un fichier s1.txt et un script s1.inc, mais l’affichage ne s’affiche pas sur l’hébergement. Plusieurs échanges pointent des droits d’écriture sur le fichier hébergé comme obstacle et proposent des approches robustes, telles qu’une fonction PHP lisant et incrémentant une ligne, ou l’usage d’un fichier compteur.txt. Des propositions concrètes incluent un compteur par ligne via une fonction qui lit, incrémente et réécrit la valeur; certains évoquent un fichier temporaire et l’activation du script côté serveur. En cas de besoin, quelques échanges suggèrent d’étendre l’approche à des comptages en associant chaque lien à une ligne et en lisant selon l’identifiant, afin d’éviter un compteur unique instable.

Bobot (l’IA à votre service)
  1. Modérateur
    j'ai fait ceci
    dans le répertoire 'pages' où se trouvent les pages (mais pas dans le dossier du fichier télécharger ... je ne sais pas si cel a une importance) j'ai lié la page s1.php à s1.txt et s1.inc
    (s1.inc:
    <?
    /* lecture du fichier pour s1.php en compteur lié à s1.txt*/
    $fichier = fopen("s1.txt","r+");
    $visites = fgets($fichier,255);
    $visites++;
    fclose($fichier);

    /* écriture du fichier */
    $fichier=fopen("s1.txt","w");
    fwrite($fichier,$visites);
    fclose($fichier);
    echo "<font color=\"black\"><b>",$visites," fois </b></font>";
    ?> )
    par : <?include("s1.inc");?>

    cela fonctionne très bien en local et affiche "ouvert XX fois"
    mais en ligne les XX sont disparus .... !
    @mitiés
    b g
    1. Bonjour bg62

      Je suis désolée de ne pas pouvoir t'aider.. je ne connais rien de rien en php.
      Comme j'avais lu que tu étais en bas débit, j'avais fait une recherche google pour te donner au moins un lien pouvant t'aider.
      A ce sujet, tu peux indiquer des pages de recherche concernant un sujet précis, et je te ferai un copier-coller des réponses (je sais comment le bas débit peut être décourageant parfois !)
      1. Modérateur
        pas grave et merci quand même
        ce qu'il y a d'étonnant c'est que j'avais trouvé ce lien et j'ai voulu aller voir sur leur forum mais il ne semble pas fonctionner !
        on y trouve quasiment rien et je n'arrive pas à m'y inscrire ..
        @mitiés et @+
        b g
      2. Jette tout ça à la poubelle ... Voila un code que j'avais fait il y a une paire d'années :
        <?
         $fichier = "compteur.txt";
         $fp = @fopen($fichier, "r");
         if (!$fp) {
          echo "Impossible d'ouvrir ",$fichier," en lecture";
          exit;
         }
         $visites = fgets($fp, 8);
         $visites++;
         echo "Déja ",$visites," visiteurs sur ce site !";
        // on affiche $visites, et on increment $visites.
         fclose($fp);
         $fp = @fopen($fichier, "w"); // le fichier est ouvert en ecriture, remis a zero
         if (!$fp) {
          echo "Impossible d'ouvrir ",$fichier," en ecriture";
          exit;
         }
         fputs($fp, $visites);
         fclose($fp);
        ?>
      3. Modérateur
        @Darshuok je suis preneur de tout !
        il faut donc un autre fichier 'compteur.txt' dans lequel on entre un nombre ...
        et à quel emplacement précis mets-tu la ligne (laquelle ?) de commande pour que cela fonctionne ?
        @mitiés
        b g
      4. @DarshuDans le même dossier que la page qui contient le bout de PHP que je t'ai mis, tu mets un fichier compteur.txt qui contient un nombre, pas de retour à la ligne ou autre !

        Tu insères ce code où tu veux dans ta page, la commande "echo" se charge de l'affichage. Ainsi, si tu veux que le compteur apparaisse en bas de page, tu le met à la fin .. Note que tu peux insérer du HTML dans le PHP, mais si il y a des guillemets, il faut les faire précéder d'un antislash \".
      5. Modérateur
        @Darshuj'ai plusieurs pages ... de s1 à s20
        toutes dans le même dossier ...
        j'insère dans chaque page ton code avec
        $fichier = "s1.txt";
        et je mets des s1.txt à s20.txt dans ce même dossier
        c'est bon à ton avis ?
    2. Modérateur
      ok ! merci et dommage ... si je comprends bien c'est le même problème que celui que j'ai mis en début de post !!!!!!
      "droit d'écriture sur un fichier hébergé" ?

      mais pour le script (le tien) je n'ai pas réussi à comprendre où mettre les commandes supplémentaires pour compter les hits sur le téléchargement ... (pas assez fort en php !) si tu peux corriger ?

      pour le reste je vais essyer de mettre la page de test sur free pour voir ce que cela donne
      @+
      b g
      1. Et bien c'est le moment de t'y mettre :]

        Si tu regardes la phpfich il y a tout ce qu'il te faut pour ce que j'ai évoqué ! Essaie de faire quelque chose (nouvelle fonction notamment, dont tu lui passes un chiffre en paramètre, c'est bien plus pratique, plus qu'un seul fichier txt) et si tu n'y arrives vraiment pas, montre ton code et j'essaierai de t'aider :)
        1. Modérateur
          le code est dans le post un peu plus haut
          le premier est celui que tu m'as donné pour faire un compteur normal
          puis après "<p><a href="../s1/morillon01.exe">premier &eacute;conomiseur: La Neige !</a></p>
          "
          je voudrais qu'il me compte dans un fichier différent le nombre de téléchargement(ou de clics !) sur ce lien, mais là je ne sais pas faire !
          @+
          b g
        2. Le code de ta page, oui. Mais essaie de faire une fonction en PHP qui, en fonction du numéro de ligne i qu'on lui passe en paramètre, récupère la ième ligne du fichier, lit cette valeur, l'incrémente, et la remette dans le fichier après.
        3. Modérateur
          @Darshu"essaie de faire une fonction en PHP qui, en fonction du numéro de ligne i qu'on lui passe en paramètre, récupère la ième ligne du fichier, lit cette valeur, l'incrémente, et la remette dans le fichier après. "
          je crois que tu rêves là ... je ne suis pas du niveau !
        4. @DarshuC'est sur qu'à dire ça, tu ne seras JAMAIS au niveau ... On a tous commencé, on a tous débuté, on a aussi tous appris ! A un moment il faut se prendre en main et se donner les moyens de faire les choses soi même, sans pomper des codes tout fait développés par quelqu'un d'autre.

          Surtout que la, tu as une base qui marche (mon code), et un cours très bien structuré avec quasiment (quelques trucs à changer mais minimes) ce qu'il te faut ...
        5. Modérateur
          @Darshuok merci
          je vais 'plancher' sur ce lien ...
          @+
          b g