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

PHP & Base de données Discussion :

Connaitre le nombre de telechargement


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut Connaitre le nombre de telechargement
    Bonjour,

    sur mon site j'ai un espace de téléchargement de document(.pdf, .doc, .zip,...). Je souhaite incrémenter un compteur à chaque fois qu'une personne récupère un document pour afficher sur ma page ce nombre.

    J'ai parcouru google à la recherche d'astuce et j'ai trouvé ceci pour le téléchargement de document :
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <?php
     
    $folder_stat    = 'download/stat/' ; // répertoire dans lequel seront stockées les statistiques
    $folder_archive = 'download/' ; // répertoire des téléchargements
     
    if ( isset( $_GET['file'] ) ) // Si le visiteur veut télécharger un fichier
    {
            $name = htmlentities($_GET['file'], ENT_QUOTES); // sécurisation de la variable
     
            if ( file_exists( $folder_stat . $name . '.txt' ) ) // si le fichier existe
            {       
                    $FileContent = fopen( $folder_stat . $name . '.txt', 'r+' ); // ouverture du fichier statistique contenant le nombre de hit
     
                    $hit = fgets( $FileContent ); // récupération de la valeur
                    $hit = intval( $hit ); // on vérifie qu'il s'agisse bien d'un nombre
                    $hit++; // ajout de 1 au nombre de hit
     
                    fseek( $FileContent, 0 ); // réinitialisation du curseur
                    fputs( $FileContent, $hit ); // écriture dans le fichier
     
                    fclose( $FileContent ); // fermeture du fichier
     
                    header( "Location: $folder_archive$name.rar" ); // redirection vers le téléchargement
            }
    }
     
    function NumberOfHit( $name ) // création de la fonction NumberOfHit
    {
            $folder_stat = 'download/stat/' ; // répertoire dans lequel seront srockées les statistiques
            $file = $folder_stat . $name . '.txt' ; // nom du fichier statistique contenant le nombre de hit
     
            if ( file_exists( $file ) ) // si le fichier existe
            {
                    $FileContent = fopen( $file , 'r' ); // ouverture du fichier
     
                    $hit = fgets( $FileContent ); // récupération de la valeur
                    fclose( $FileContent ); // fermeture du fichier
     
                    return $hit; // retour de la valeur de $hit
            }
            else // si le fichier n'existe pas
            {
                    touch( $file ); // création du fichier
     
                    $FileContent = fopen( $file  , 'r+' ); // ouverture du fichier
     
                    fseek( $FileContent, 0 ); // réinitialisation du curseur
                    fputs( $FileContent, 0 ); // écriture dans le fichier
     
                    fclose( $FileContent ); // fermeture du fichier
            }
    }
     
    ?>
     
    <html>
     
     
    <body>
    <?php
     
    $name   = 'Fruity Loop 6.2' ; // nom du fichier (et de l'archive)
    $result = NumberOfHit( $name ) ; // récupération du nombre de hit pour le nom concerné
     
    echo '
    <h3>' . $name . '</h3>
    
    <p>
            Télécharger le fichier : <a href="?file=' . $name . '">Direct download</a><br/>
            Nombre de hit : ' . $result . '
    </p>
    ';
     
    ?>
    </body>
     
    </html>
    mais un fichier doit exister pour chaque document que l'on souhaite télécharger. Donc si j'ai 30 documents, il faudra 30 fichiers...je trouve que ça fait lourd et pas très propre. C'est pour cela que j'avais pensé à utilisé un seul fichier ou l'on trouverait à l'intérieur les noms des 30 documents avec leur nombre de téléchargement, chacun séparé par un ";" par exemple. Mais est-il toujours intérressant d'utiliser un fichier, pour avoir un temps d'accès plus court qu'en interrogeant une BD, avec tous les telechargement à l'intérieur ?


    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    l'accès à un fichier est théoriquement plus rapide. Mais en pratique un accès à une base de données est tellement rapide que l'utilisateur du système ne verrait pas de différence ou de ralentissement avec les 2 façons de stocker les nombres de téléchargement

  3. #3
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    salut
    vous pouvez adapté ce bout de code pour avoir un seul fichier download.php

    ou vos liens seront par exemple download.php?idfile=25,
    • allez chercher dans votre base de données l'enregistrement du fichier 25
    • vérifiez l'existence du fichier
    • incrémentez le hit
    • fait une redirection vers l'url du fichier.

  4. #4
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut
    l'accès à un fichier est théoriquement plus rapide. Mais en pratique un accès à une base de données est tellement rapide que l'utilisateur du système ne verrait pas de différence ou de ralentissement avec les 2 façons de stocker les nombres de téléchargement
    tu veux dire que les deux façon sont equivalente en temps d'accès ? Si c'est le cas je crois que c'est plus propre de ranger mon compteur en BD ?

  5. #5
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut
    Je débute en programmation web donc si vous avez des remarques à faire je suis preneur. Je pense que je vais utiliser un accès en base de données ça me parait plus propre ?
    Qu'en pensez vous ?

    Merci de m'éclaircir

  6. #6
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut
    Et au niveau sécurité l'accès à un fichier est meilleur que l'interrogation en BD ? (je suis d'accord les informations du nombres de téléchargements n'est pas sensible mais autant utiliser une méthode propre)

Discussions similaires

  1. Connaitre le nombre de lignes imprimees
    Par Gremlins13 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 12/01/2006, 18h31
  2. Connaitre le nombre de lignes imprimees
    Par Gremlins13 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/01/2005, 14h38
  3. Connaitre le nombre de caractère ";" dans un champ
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/11/2004, 17h36
  4. [VB.NET] Connaitre le nombre d'éléments sélectionnés
    Par stephtbest dans le forum ASP.NET
    Réponses: 7
    Dernier message: 16/02/2004, 14h52
  5. comment connaitre le nombre ...
    Par mythtvtalk.com dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/08/2003, 08h18

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