Compteur des fichiers sélectionnés. Création d'un compteur de téléchargement de fichiers en utilisant PHP et MySQL. Panneau coulissant sur "Mootools"

Aujourd'hui, nous examinerons à la fois la principale manière d'ajouter des graphiques à une page HTML - respectivement, directement en utilisant la balise « img », et d'autres méthodes supplémentaires, qui peut être nécessaire dans diverses situations lors du développement de pages Internet.

Examinons tous les différents paramètres et fonctionnalités, qui peuvent être appliqués aux graphiques : précision de la taille (largeur, hauteur), de l'alignement, de l'indentation, des effets divers au survol de la souris sur l'image, etc....

Gagnez de l'argent en écrivant des articles, des commentaires sur les forums

Le service permet aux rédacteurs de gagner de l'argent : ils sont payés pour rédiger des articles pour des sites Web, créer de nouveaux sujets sur des forums et rédiger des commentaires sur ceux-ci. Vous pouvez également gagner de l'argent en réécrivant, en copiant et en traduisant du texte. Excellent service promu, beaucoup de travail...

Hébergement pour Drupal 8

Lors du développement d'un nouveau site, comme d'habitude, j'ai choisi Drupal (au moment de la rédaction, la dernière version stable est la 8).

En général, je pense que ce « moteur » est le meilleur. Mais, comme vous le savez, il n'y a pas autant de documentation en russe que nous le souhaiterions, et étant donné les larges capacités de Drupal, son manque peut parfois créer des difficultés pour les webmasters qui ont récemment commencé à travailler avec ce système, et pas seulement pour les débutants. .. Par exemple, je travaille avec ce CMS depuis plus de 8 ans, mais parfois des difficultés surviennent lors de la résolution de problèmes complexes, car je ne parle pas anglais au bon niveau. Cependant, lorsque le problème peut être résolu, vous êtes une fois de plus convaincu de la qualité et de la commodité de Drupal en termes de capacités.

Panneau coulissant sur "Mootools"

Nous consacrerons cette leçon à la création de panneaux pop-up pour le site.

Nous aurons besoin de la moindre compréhension de Mootools et, bien sûr, de la connaissance des styles CSS nécessaires pour créer son design.

Avant de commencer, téléchargez le fichier d'archive avec les sources. Vous y trouverez également un exemple du panneau résultant (index.html).

Commençons par mettre en œuvre...

Comment gagner beaucoup d'argent sur Internet - comment y parvenir Bases de l'optimisation interne des sites Web pour les moteurs de recherche

Le processus d’optimisation des sites Web pour les moteurs de recherche est divisé en 2 étapes :

  • Optimisation interne - optimisation des facteurs internes du site Web (code, structure du site, contenu). Il est nécessaire dans un premier temps de rendre votre site attractif pour les moteurs de recherche, afin de ne pas augmenter la quantité de travail au fur et à mesure de votre progression.
  • Optimisation externe – amélioration des positions du site Web en raison de facteurs externes (achat de liens, échange, etc.).
  • Aujourd'hui, je voudrais parler séparément de l'optimisation interne et souligner les points principaux.

    Comment faire une capture d'écran sous Windows 7, 8, 10 ou XP

    Capture d'écran (Capture d'écran) L'économiseur d'écran est une fonctionnalité qui vous permet de copier rapidement tout ce qui est actuellement affiché sur votre moniteur. En fait, il s'agit d'une photographie instantanée de votre moniteur, automatiquement enregistrée (principalement au format .png).

    Une capture d'écran rapide peut être nécessaire dans diverses situations. Par exemple, si des messages d'erreur apparaissent, ce qui peut aider considérablement le réparateur qui effectuera les réparations, si vous devez rédiger des instructions pour expliquer le travail dans un certain programme ou sur un certain site Web, ou si vous avez obtenu certains résultats dans un ordinateur jeu et souhaite sauvegarder son affichage en tant que mémoire.

    Comment effectuer une restauration du système sous Windows 7, 8, 10 ou XP

    L'auto-installation de logiciels sur un PC est associée à un certain risque, qui peut entraîner des dommages au bon fonctionnement de l'ensemble du système ou la suppression de certaines fonctions et paramètres utiles qui convenaient à l'utilisateur.

    C'est pourquoi il est très important de permettre un retour rapide à l'état d'origine sans perdre les paramètres et fichiers importants.

    À cette fin, le système d'exploitation Windows fournit une fonction spéciale de récupération du système qui vous permet de créer des points de contrôle d'état Windows. Ces derniers permettent de restaurer le logiciel PC à son état antérieur.

    // Supprime la conversion du mode guillemets magiques $_POST["content"] = addlashes($_POST["content"]);

    // Réécriture du contenu du fichier file_put_contents($_POST["filename"], "$_POST");

    4.9. Compteur de téléchargement de fichiers

    Le fonctionnement de tous les compteurs de téléchargement de fichiers repose sur le fait que le visiteur ne reçoit pas le fichier lui-même comme lien de téléchargement, mais un lien vers un script qui prend en compte le téléchargement et envoie le fichier au navigateur de l'utilisateur.

    Nous allons construire notre compteur de telle manière que les liens pour télécharger un fichier soient des liens vers la page actuelle, en passant le nom du fichier en paramètre, par exemple index.php?down=archive.zip . Le script vérifiera si le paramètre down est passé, et si tel est le cas, il enregistrera le téléchargement de l'archive dans filecount.txt. Lorsque la page est rechargée, les valeurs des compteurs de chaque archive seront extraites du fichier pour être affichées dans la fenêtre du navigateur. Le fichier sera transféré pour téléchargement en envoyant l'en-tête HTTP Location au visiteur indiquant le chemin d'accès à l'archive téléchargée. Le script du compteur de téléchargement de fichiers peut ressembler à celui présenté dans le listing 4.31.

    Inscription 4.31. Compteur de téléchargement de fichiers

    // Définit le niveau de gestion des erreurs error_reporting(E_ALL & ~E_NOTICE);

    // Enregistre les noms de fichiers dans un tableau

    $file_name = array("archive1.zip","archive2.zip","archive3.zip");

    // Nom du fichier où sont stockées les statistiques $countname = "filecount.txt";

    // Si le fichier existe,

    // lit les statistiques actuelles dans un tableau if(file_exists($countname))

    // Récupère le contenu du compteur

    $content = file_get_contents($countname);

    // Décompresse le tableau

    $count = désérialiser($content);

    // S'il n'existe pas de fichier de ce type, créez-le,

    // et réinitialise les statistiques

    // Remplir le tableau $count avec des valeurs nulles pour chaque($file_name as $file)

    $count[$fichier] = 0 ;

    // Emballez le tableau et placez-le dans le compteur file_put_contents($countname, serialize($count));

    // Vérifiez si la valeur du paramètre down est passée

    // via la méthode GET

    si(isset($_GET["down"]))

    // Vérifiez si la valeur du paramètre $_GET["down"] est incluse

    // dans le tableau $file_name

    if(in_array($_GET["down"],$file_name))

    // Enregistre le fait que ce fichier a été téléchargé

    //Augmente la valeur du compteur avec la clé

    // $_GET["down"] d'un

    $count[$_GET["down"]]++;

    // Écrase le fichier du compteur file_put_contents($countname, serialize($count));

    echo "Le fichier $file a été chargé ".intval($count[$file])." fois
    ";

    Les noms des fichiers téléchargés sont stockés dans le tableau $file_name ; l'ajout d'une nouvelle archive entraîne son enregistrement automatique dans le système. Une pré-inscription au tableau est nécessaire pour plusieurs raisons. Tout d'abord, lorsque vous acceptez un nom de tableau via le paramètre down, vous devez vérifier s'il fait partie des fichiers autorisés à être chargés. Deuxièmement, il est beaucoup plus pratique de traiter les noms de fichiers dans un tableau. Ainsi, le tableau $count, qui stocke le nombre de téléchargements de fichiers, est automatiquement construit en fonction du tableau de fichiers enregistrés dans le système,

    Il est pratique de regrouper un tableau dans une chaîne à l’aide de la fonction serialize(), puis de le décompresser dans un tableau à l’aide de la fonction unserialize().

    NOTE

    Il est important de se rappeler que tous les en-têtes HTTP doivent être envoyés avant l'envoi du contenu principal, sinon ils ne seront pas envoyés et l'interpréteur PHP émettra un avertissement "Attention : Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par"

    (Attention : Il n'est pas possible de modifier les informations d'en-tête - les en-têtes ont déjà été envoyés). Ceci est dicté par le protocole HTTP : les en-têtes sont envoyés en premier, puis le contenu du document, donc toute sortie dans la fenêtre du navigateur est perçue comme la fin de l'envoi des en-têtes et le début de l'envoi du corps du document. Si la sortie dans la fenêtre du navigateur est inévitable avant l'envoi des en-têtes, vous devez recourir à des fonctions de contrôle de sortie, en plaçant toutes les sorties dans un tampon et en les envoyant à la fin du script.

    Comme vous pouvez le voir dans le listing 4.31, le script gère la situation de première exécution dans laquelle le fichier filecount.txt est manquant - il est automatiquement créé lors du premier chargement de la page, déclenché par des valeurs nulles pour chaque fichier du tableau $file_name. Le résultat du script du Listing 4.31 est visible sur la Fig. 4.4.

    Riz. 4.4. Le résultat du compteur de fichiers

    4.10. Enregistrement de fichiers texte et graphiques

    Suivre un lien vers des fichiers texte ou HTML entraîne leur affichage dans la fenêtre du navigateur, ce qui n'est pas toujours pratique, surtout si le fichier est destiné à être téléchargé. Le même sort attend les fichiers graphiques et, en général, tous les fichiers que le navigateur peut afficher. Le navigateur du visiteur « apprend » le contenu du fichier auprès du serveur, puisque chaque fichier est accompagné d'en-têtes HTTP qui informent le client sur le contenu, la taille du fichier téléchargé, la nécessité d'installer un cookie, etc. Le type de fichier n'a pas pu être déterminé, il est envoyé simplement sous forme de flux binaire.

    Vous pouvez supprimer ce comportement en envoyant les en-têtes HTTP présentés dans le listing 4.32.

    Inscription 4.32. Un script qui vous permet d'enregistrer des fichiers texte et graphiques

    $filename = basename($_GET["down"]); header("Content-Disposition: attachment; filename=$filename"); header("Type de contenu : application/octet-stream"); header("Content-length: ".filesize($_GET["down"]));

    echo file_get_contents($_GET["down"]); ?>

    Le script du listing 4.32 prend un nom de fichier comme paramètre GET, par exemple :

    index.php?down=filetext.txt. La fonction basename() récupère le nom

    fichier (dans le cas où le paramètre GET down contient le chemin d'accès au fichier). L'en-tête HTTP Content-Disposition spécifie le nom du fichier à enregistrer, qui est déterminé par l'attribut filename. Dans le script ci-dessus, le paramètre filename est le même que le nom du fichier envoyé, cependant, un nom arbitraire peut être transmis comme paramètre filename. L'en-tête HTTP Content-type indique que les données transférées sont binaires et ne doivent pas être interprétées par le navigateur. L'en-tête HTTP Content-length transmet la taille du fichier au client. La dernière ligne affiche le contenu du fichier transmis via le paramètre $_GET["down"], qui est récupéré à l'aide de la fonction file_get_contents(). Le résultat du script du Listing 4.32 est présenté sur la Fig. 4.5.

    NOTE

    Il est important qu'après la sortie du contenu du fichier, rien d'autre ne soit affiché dans le flux : ni par la construction echo ni par sortie directe - sinon tout sera ajouté à la fin du fichier. Cela s'applique à la fois aux espaces possibles et aux nouvelles lignes après la balise de fin ?>.

    Riz. 4.5. Boîte de dialogue pour télécharger un fichier

    La prochaine question qui m'a récemment intéressé lors de la mise en place de mon projet d'auteur simple était la question de savoir comment compter le nombre de téléchargements d'un fichier particulier publié ici. Il était plus logique de supposer que cela nécessite un autre plugin, une sorte de gestionnaire de téléchargement ou, ce qui est plus simple, un compteur de téléchargement. Après avoir parcouru Internet, il s'est avéré que, comme d'habitude, il existe un wagon et un petit chariot de ces plugins. Mais encore une fois, il n'y a aucune critique à leur sujet. On ne sait absolument pas quoi choisir, et comme d'habitude, j'ai dû tout tester sur moi-même. Et sur la base des résultats des tests, cet évaluateur a été créé. L'écriture a pris beaucoup de temps et le but n'était pas de tester minutieusement tous les plugins proposés avec un examen complet de leurs paramètres, vous ne trouverez donc pas de captures d'écran détaillées de chacun, mais il y aura des paramètres clés. Je ne voulais pas du tout parler de certains d'entre eux, ils étaient tellement stupides, mais depuis que je les regardais, c'était dommage de ne rien écrire du tout.

    Introduction.

    Ainsi, la tâche consistait à compter le nombre de téléchargements d’un fichier particulier en définissant un compteur de téléchargement pour WordPress. Après un examen plus approfondi, il se répartissait en plusieurs sous-tâches, ou plutôt en souhaits d'un plugin qui le remplirait. En voici une courte liste :

    • Il est nécessaire que le nombre de téléchargements soit affiché quelque part dans le panneau d'administration, avec la possibilité de trier - combien ont été téléchargés par jour, par semaine, par mois, par année, au total
    • Il serait souhaitable de pouvoir voir des graphiques/schémas des téléchargements de fichiers les uns par rapport aux autres
    • Il serait souhaitable de pouvoir voir des graphiques/schémas des téléchargements de fichiers au fil du temps
    • Il est conseillé de conserver des statistiques sur la date du dernier téléchargement du fichier.
    • La possibilité d'afficher des informations à côté du lien sur le nombre de fois que le fichier a été téléchargé, ainsi que sa taille et la date de téléchargement pour l'utilisateur qui est sur le point de le télécharger. Eh bien, ou ne pas se retirer - à la demande de l'administrateur
    • La possibilité d'insérer le code responsable de cela à l'aide d'un bouton séparé dans le panneau de post-écriture de l'éditeur TinyMCE (je n'aime pas utiliser des balises rapides)
    • Possibilité de limiter la vitesse de téléchargement (juste au cas où)
    • Attacher une fonction de téléchargement à ce plugin (télécharger des fichiers sur le serveur) - au contraire, je n'ai pas abandonné. FTP fonctionne bien pour moi aussi. Mais si ça ne gêne pas trop, alors laisse-le rester
    • Ce serait bien de pouvoir attacher un joli bouton au lien de téléchargement - même si pour moi, il suffit d'écrire class="button"

    ABAP

    Télécharger un fichier!

    • Ce serait bien s'il comptait le nombre de téléchargements non seulement depuis son site internet, mais simplement depuis le lien
    • La possibilité d'interdire le téléchargement direct d'un fichier sans indiquer où il se trouve sur le serveur.

    Voici une petite liste.

    Revoir

    Après avoir décidé des spécifications techniques, nous commencerons à considérer ce qui nous est directement proposé.

    1. Téléchargez le plugin Counter 1.2, téléchargé ici.

    Initialement, la page du plugin était localisée, mais l'auteur ne la supporte pas depuis plus de 4 ans. Nous créons pour moi un autre dossier dans le répertoire des plugins - compteur de téléchargements, et y déposons les deux fichiers. En conséquence, où pensez-vous ? — les paramètres correspondants apparaissent dans les enregistrements. Très original, mais ok.

    Entrons à l’intérieur et écrivons le chemin d’accès au fichier download-manager.php (je n’aime vraiment pas lancer des bêtises directement à la racine). Et voyons ce que nous avons. Nous téléchargeons le fichier, vérifions s'il est téléchargé manuellement, si vous saisissez un lien direct dans le navigateur, saisissez le chemin dans le plugin pour créer un compteur. En théorie, il faudrait créer un identifiant, qu’il faudra ensuite insérer partout. Mais rien n'a fonctionné - le message d'erreur "Erreur - Impossible de sauvegarder l'enregistrement" s'affiche. Bon, ok, on a persuadé, on le transfère à la racine download-manager.php - encore une fois rien, même erreur. Eh bien, au diable toi, poisson rouge, il ne me suffisait pas de comprendre encore les plugins que l'auteur n'a pas abandonné. De plus, la fonctionnalité est pratiquement nulle.

    2. Téléchargez le plugin Counter Advanced 1.1, téléchargé.

    Je dirai tout de suite que cela n'a pas vraiment fonctionné pour moi non plus, vous ne pouvez donc en savoir plus sur son installation et sa configuration que par intérêt académique. Essentiellement, il s’agit du même plugin, légèrement modifié. Dieu merci, même si les instructions n'ont pas été traduites, vous pouvez les lire normalement et ne pas essayer de comprendre ce que voulait dire le traducteur. À propos, dans le panneau d'administration, il semble que ce soit un plugin complètement différent, proposant une mise à jour (oui, qu'est-ce que c'est). Semblable au plugin précédent, sa page a été localisée, et de même l'auteur ne l'a pas supporté depuis plus de 4 ans. Par analogie, nous créons un autre dossier pour cela dans le répertoire des plugins, le mien est un compteur de téléchargement et nous y jetons tous les fichiers. Les paramètres semblent bien sûr plus riches, bien que la vitesse de téléchargement soit limitée pour tous les fichiers à la fois et ne soit pas définie pour chacun. Où se trouve le fichier download-manager..php (n'oubliez pas le nom du fichier à la fin, mais j'ai deviné du premier coup où se trouvent tous les téléchargements, ce qui m'a plongé dans un terrible étonnement. Comme il s'est avéré plus tard, J'ai deviné le nom du répertoire dans lequel télécharger les téléchargements, ici ma logique a fonctionné à 100% de la même manière que celle de l'auteur du plugin.

    Nous ajoutons les noms des dossiers que nous avons sur le serveur dans le répertoire de téléchargements (dans les paramètres « catégories et répertoires ») pour faciliter le choix du chemin d'accès aux fichiers. Si vous ne les ajoutez pas, vous devrez tout télécharger à la racine des téléchargements. Enregistrez, vous pouvez ajouter des téléchargements. C'est à peu près ce que nous obtenons.

    Essayons maintenant de l'insérer dans le message. Nous ajoutons un lien, dans lequel nous modifions notre lien vers le code, qui est émis directement dans les paramètres du plugin. Et puis... Va te faire foutre ! Erreur HTTP 500 (erreur interne du serveur) : une situation inattendue s'est produite alors que le serveur tentait de terminer la demande. Eh bien, j'allais justement vous dire comment ajouter un compteur directement à une publication, et si le lien à l'intérieur pour que ça marche

    ABAP

    &Lt ; ahref= "http://chewriter..jpg" />

    alors vous pouvez afficher un bouton de téléchargement – ​​c’est vraiment tordu. Voilà pour le plugin, vous avez perdu votre temps. Il ne tient pas vraiment de statistiques, car nous ne saurons pas où se trouve le problème.

    C’est exactement le plugin vers lequel il a été proposé de mettre à jour le Download Counter Advanced mentionné ci-dessus. Eh bien, suggère-t-il - et d'accord, téléchargeons-le et voyons. Le plugin n’a pas non plus été mis à jour depuis plus de 3 ans, et certains utilisateurs ont même apporté eux-mêmes des corrections à son code. Il est installé avec assez de succès, l'ascétisme des réglages n'inspire pas l'optimisme. À propos, bravo aussi, ils ont deviné où placer les réglages - pas pire que dans le cas précédent. On ajoute des compteurs sur la page des paramètres, tout semble s'afficher comme il se doit.

    Voyons ce que nous avons ajouté au message. Oui, il n'y a pas de boutons. Oh, bien sûr, j'ai oublié là que tout est intuitif. Regardons les instructions. Il faut construire une structure complexe composée de shortcodes comme , téléchargés , et en même temps (probablement à cause de la CNC) ça ne compte vraiment rien.

    Par conséquent, nous ne l'examinerons pas plus en détail, ainsi que le plugin Download Counter Chart qui l'accompagne, qui affiche les informations sous forme graphique.

    Il a été écrit par notre compatriote, mais malheureusement tout ce qu'il peut faire, c'est afficher le nombre de personnes qui ont téléchargé le fichier à côté de son nom - il n'y a pas de statistiques ni d'autres cadeaux fournis. Cependant, si vous êtes amateur de minimalisme, c'est ce dont vous avez besoin. N'oubliez pas qu'il n'y a pas de boutons, un shortcode comme


    Compteur de téléchargement DIY pour WordPress

    vous devrez le saisir manuellement. C’est très bien que l’auteur ait tout décrit en détail, donc je n’ai pas eu à le tester sur moi-même.

    Eh bien, si nous parlons de plugins écrits par nos collaborateurs, nous ne pouvons nous empêcher d’en mentionner un de plus. Son énorme avantage est qu'il vous permet de compter non seulement le nombre de téléchargements de fichiers, mais aussi simplement les clics sur les liens - peu importe qu'ils mènent à un fichier ou simplement à une autre page. Ou vers un fichier sur la page de quelqu'un d'autre :) Il comptera aussi cela, ou plutôt, théoriquement, il devrait le compter. Avec les statistiques, ce n'est pas si génial non plus, il n'y a pas de boutons sur le panneau d'édition, et il n'y a pas non plus de restrictions sur les téléchargements. Mais c'est quand même intéressant à voir. Par conséquent, nous téléchargeons et installons. En principe, il y a une description assez détaillée sur le site de l’auteur, je n’entrerai donc pas trop dans les détails. Vous devez toujours garder à l'esprit que si vous devez définir un compteur sur un fichier ou sur un lien, vous devez utiliser soit un shortcode de type, soit insérer la classe class="count" dans le lien. Bien sûr, c'est ennuyeux, avec un bouton, ce serait beaucoup plus pratique. Mais le plus ennuyeux est qu'après tous les efforts, je n'ai pas réussi à le faire fonctionner correctement - si un shortcode était utilisé, le lien de téléchargement lui-même ne s'affichait pas, et si une classe était utilisée, les statistiques sur les liens n'apparaissaient pas dans le panneau d'administration. Des captures d'écran peuvent être consultées auprès de l'auteur - si vous aimez l'idée elle-même, essayez-la, vous réussirez peut-être.

    Vraiment très simple. Aucun shortcode, etc. requis. Cependant, ce plugin fournit des statistiques uniquement pour l'auteur ; pour les visiteurs, à côté du lien vers le fichier, elles ne sont pas affichées.

    Cependant, il convient de noter que des statistiques détaillées sont conservées sur qui a téléchargé quel fichier et quand. Cependant, son utilisation n’est pas très pratique.

    Les paramètres incluent les éléments suivants :

    • Vous pouvez spécifier le répertoire à partir duquel les fichiers peuvent être téléchargés
    • Vous pouvez spécifier les types de fichiers autorisés à télécharger
    • Empêcher de compter les téléchargements de fichiers en tant qu'auteur
    • Définissez l'intervalle en secondes pendant lequel les clics répétés sur un lien provenant de la même IP ne seront comptés qu'une seule fois
    • Limiter le nombre de fichiers pouvant être téléchargés à partir d'une IP par jour
    • Utilisez une sorte de page intermédiaire avec des informations indiquant que le téléchargement va commencer maintenant

    Cependant, tout cela ne fonctionne que si soit vous (comment dire plus simplement...) avez l'autorisation de modifier le fichier .htaccess, soit si vous spécifiez le lien directement en l'insérant dans

    Cependant, comme il n'avait pas la possibilité d'afficher des statistiques pour les utilisateurs et que je ne voulais pas me souvenir du type de lien, j'ai arrêté d'y penser à ce stade, décidant de revenir uniquement si les autres plugins de la file d'attente n'étaient pas en mesure de résoudre la tâche.

    En termes d'affichage des informations, ce plugin est très similaire à celui évoqué dans le paragraphe précédent. Il diffère en ce qu'il vous permet de visualiser les statistiques séparément, hebdomadaires, mensuelles, pour n'importe quelle période, et simplement le top 10. Au niveau de ses capacités, c'est bien plus misérable : il n'y a pas de statistiques sur le dernier téléchargement ou sur un fichier spécifique, sans parler de la possibilité d'introduire des restrictions sur le téléchargement de fichiers. Il n’y a aucune documentation claire du tout. J'ai eu l'impression que c'était juste une sorte de malentendu et non un plugin. Je ne veux même pas donner de captures d’écran, mais pour être objectif, je vais quand même les donner, celles de l’auteur.

    Eh bien, nous voici à quelque chose de plus ou moins digne. Près d'un demi-million de téléchargements, cela veut dire quelque chose. La page officielle du plugin se trouve. Pour insérer un fichier dans une publication, vous devez utiliser la flèche au dessus de l'éditeur visuel (l'icône elle-même n'y apparaît pas)

    Et dans la fenêtre qui apparaît, sélectionnez le fichier souhaité (c'est un exemple s'il a déjà été téléchargé via FTP)

    Ensuite, cliquez sur le bouton « Enregistrer le nouveau téléchargement »

    et, en passant à l'écran suivant, sélectionnez le format de téléchargement et cliquez sur Insérer dans la publication. Il est possible que rien ne se passe. Le plugin est légèrement buggé avec les dernières versions de WordPress. Par conséquent, vous devez également cliquer sur le lien Afficher les téléchargements.

    Et puis, après avoir sélectionné au préalable le format de téléchargement, cliquez sur le lien Insérer en face du fichier exact qui doit être inséré.

    Après quoi le shortcode correspondant comme

    ABAP

    [ID de téléchargement="7592" format="1"]

    Le plugin nécessite une configuration manuelle fine, mais aucun WYSIWYG n'est fourni. La bonne nouvelle est que vous n’avez besoin de le configurer qu’une seule fois. Une documentation détaillée est disponible auprès de l'auteur.

    Voici un exemple de configuration :

    ABAP

    (titre)

    &Lt ; ahref= "(url)" title="(!LANG : Téléchargé (clics,"ни разу","1 раз","% раза"}">{title}!}

    Il convient de noter que les déclinaisons ne sont pas prises en charge, c'est-à-dire si le fichier a été téléchargé 21 fois et que vous avez « raza » dans votre modèle, cela ne sonnera pas du tout russe.

    Et voici l'option avec le bouton :

    ABAP

    - (description), (taille), téléchargé (date, "A-m-d"), heures téléchargées (clics)

    &Lt ; ahref= "(url)" title="(!LANG : Téléchargé (clics,"ни разу","1 раз","% раза"}">!} - (description), (taille), téléchargé (date, "A-m-d"), heures téléchargées (clics)

    Ressemble à ça:

    Eh bien, après quelques modifications, le mien a commencé à ressembler à ceci (sans boutons pour l'instant) :

    Code de ligne :

    ABAP

    (filetype_icon) (titre) (Taille du fichier : (taille), Téléchargé : (date, "d.m.Y"), Heures de téléchargement (clics))
    (description)

    La liste des possibilités est assez large :

    • Vous pouvez télécharger des fichiers soit en l'utilisant (en cliquant sur la flèche), soit en précisant l'emplacement où ils se trouvent, s'ils ont été téléchargés précédemment via FTP, vous pouvez simplement spécifier l'URL
    • Masque le véritable emplacement du fichier, vous pouvez remplacer n'importe quelle combinaison d'URL nécessaire
    • Vous pouvez utiliser le bouton de téléchargement, y compris le vôtre
    • Les téléchargements effectués par l'administrateur et toutes les adresses IP inutiles incluses dans la liste des contre-exclusions ne sont pas pris en compte.
    • Dois-je compter les téléchargements répétés au cours d’une certaine période à partir de la même IP ?
    • Vous pouvez définir plusieurs formats - avec image, avec compteur, sans compteur, etc., et utiliser chacun d'eux dans la situation appropriée
    • Il y a un téléchargement du journal de téléchargement sous forme de fichier CSV

    Si un fichier mp3 ou vidéo est en cours de téléchargement, vous devez lui indiquer s'il s'agit d'un téléchargement forcé ou non. Si forcez - alors en cliquant dessus, il sera téléchargé, si vous ne cochez pas la case - jouez, puis enregistrez - faites un clic droit. Je voudrais noter que les fichiers téléchargés avec son aide ne sont pas placés là où votre répertoire spécial pour les fichiers a été créé, mais dans le wp-content/uploads/downloads/ créé par celui-ci - vous devez vous en souvenir, ainsi que le fait que lors de leur suppression des statistiques, les fichiers sont également physiquement supprimés du serveur. Avec ceux qui sont téléchargés via FTP, tout va bien. De plus, si vous insérez un lien dans différents articles vers le même fichier, je ne comprenais pas si cela les résumerait. Malheureusement, il ne prend en charge aucune restriction de téléchargement, sauf que vous pouvez interdire le téléchargement à tout le monde, à l'exception des utilisateurs enregistrés. Lorsque vous souhaitez afficher le nom d'un fichier dans la ligne inférieure du navigateur, ou que vous devez le remplacer par son ID, n'oubliez pas d'aller dans paramètres->permaliens et d'y enregistrer la configuration pour que tout soit écrit correctement dans . htaccess - sans cela, les fichiers ne seront pas téléchargés !

    Les statistiques sont affichées à trois endroits à la fois : dans la console, dans les informations sur les fichiers et dans les journaux de téléchargement. Cela crée certains inconvénients, par exemple lorsque vous avez besoin de savoir quand un fichier a été téléchargé pour la dernière fois, mais vous pouvez télécharger des statistiques sous forme de fichier CSV et les trier ensuite dans Excel. Considérant qu'Excel a des capacités diaboliques pour construire les tableaux et graphiques nécessaires, alors ce n'est peut-être pas mal. Cependant, je pense que les captures d'écran en diront plus :

    Eh bien, une capture d'écran du journal lui-même :

    En même temps, un énorme plus est qu'un widget avec des statistiques comme celle-ci apparaît dans la console :

    De manière générale, on peut dire qu'après un peu de configuration, le plugin fait très bien son travail.

    Ce plugin a été écrit par le même auteur que le plugin WP-Polls, que j'utilise par exemple sur ce site. Bien qu’il jouisse, en comparaison, d’un ordre de grandeur moindre en popularité. Mais voyons si c'est mérité. Toute la documentation est disponible sur le site Web de l'auteur. À la base, le plugin est absolument identique au précédent - le modèle est écrit exactement de la même manière, il n'y a aucune restriction de téléchargement, sauf pour les utilisateurs enregistrés ou non enregistrés, et vous devez également utiliser un shortcode comme

    ABAP

    [ID de téléchargement = "7592"]

    Bon, sur les autres points :

    • Vous pouvez télécharger des fichiers en l'utilisant (jusqu'à deux Mo, ou tout ce que vous avez indiqué dans php.ini), et indiquer l'emplacement où ils se trouvent, s'ils ont été téléchargés auparavant via FTP, vous pouvez simplement spécifier l'URL
    • Masque le véritable emplacement du fichier, mais il n'est pas possible de remplacer une combinaison d'URL nécessaire, il n'y a que quelques options fixes, dont la principale n'a pas fonctionné pour moi
    • Peut être configuré pour afficher des informations aux visiteurs sur la taille du fichier, combien de fois il a été téléchargé, quand il a été téléchargé
    • Vous pouvez afficher une icône pour les types de fichiers correspondants
    • Vous pouvez réinitialiser le compteur ou définir la valeur souhaitée

    Il existe cependant quelques différences. Premièrement, il n'y a pas de bouton dans l'éditeur visuel avec lequel vous pouvez insérer un shortcode. Ou plutôt, il y a un bouton, mais pour l'utiliser, vous devez d'abord ajouter un compteur pour le fichier dans les paramètres du plugin, puis avec ce bouton l'ID du compteur sera ajouté directement à la publication. Deuxièmement, il n'existe qu'un seul modèle et il ne sera pas possible d'afficher différentes informations pour différents fichiers. Parmi les avantages des statistiques - elles montrent quand le fichier a été téléchargé pour la dernière fois, sinon il n'y a que des inconvénients - pas de téléchargement vers un fichier csv, pas de visualisation de qui a téléchargé (pas d'IP), pas de répartition par date.

    Mais les icônes sont plus jolies (je les ai ajoutées plus tard au plugin précédent). Le résultat de son travail ressemble à ceci :

    De plus, lors de la suppression d'un enregistrement de la base de données, il demande si le fichier lui-même doit être supprimé ou laissé. Mais dans l'ensemble de ses propriétés, je l'ai moins aimé que le précédent - du moins parce que le fichier doit être inséré séparément en dehors du message, cependant, il ne présente pas d'inconvénients particuliers - le choix entre eux est une question de goût, le premier a plus d'options, des statistiques plus détaillées, le second - des statistiques légèrement plus pratiques (bien que plus pauvres) et moins d'opportunités.

    L'artillerie lourde entre en action. Le plugin est principalement russifié et n'est qu'un gestionnaire de téléchargement, pas un compteur. Il est possible de limiter la vitesse de téléchargement et le nombre de téléchargements par personne et par jour.

    Mais je dirais que certaines fonctionnalités de ce plugin sont inutiles, et celles nécessaires selon les statistiques ne suffisent pas. Il y a beaucoup de paramètres, des widgets de téléchargement, un système de synchronisation complexe, un système d'affichage des tags mp3, d'affichage des fichiers flv, d'organisation d'un stockage de mini-fichiers, d'affichage de tous les fichiers listés sur la page en début ou en fin de post, etc.

    Je ne veux même pas montrer des captures d'écran de tous les paramètres.

    Cependant, avec tout cela, afin d'afficher joliment le modèle dans la publication, j'ai dû y modifier le fichier de style, en réduisant la largeur. De plus, pour afficher le modèle par défaut, vous devez utiliser le bouton après avoir inséré le shortcode

    Entrez manuellement le nom du modèle dans le code. Une sorte de conflit avec le nom russe. Au fait, cela ressemble à ceci (je vais donner trois options pour les modèles) :

    Cela compte - via un Stump Deck (enfin, ou cela ne compte pas plus d'un téléchargement depuis une IP, je ne sais pas). Les statistiques sont un peu moins que complètement similaires à celles du plugin évoqué ci-dessus.

    En général, j'avais l'impression qu'il était en bonne santé, mais stupide. Convient à une sorte de stockage de fichiers, et même dans ce cas seulement s'il est combiné avec un autre plugin. Je l'ai regardé et je l'ai retiré.

    Franchement, quand j'ai lu sa description, j'ai pensé : c'est ça, ce dont j'ai besoin !

    Compteur, protection par mot de passe, shortcode insérable par bouton, bouton modifiable, etc.

    Et cela ressemble à ceci (il a cité deux trois modèles utilisés à la fois) :

    Cependant, pour ajouter un fichier, vous devez d'abord ajouter un compteur pour celui-ci dans les plugins. Deuxièmement, il n’existe pratiquement aucune statistique.

    Troisièmement, vous ne pouvez pas définir la sortie pour afficher la taille du fichier pour l'utilisateur. Quatrièmement, il n'y a pas de limite à la vitesse de téléchargement, il n'y a qu'une protection par mot de passe pour le fichier. Les modèles ne peuvent pas être modifiés. Et une grande inscription proposant d'acheter la version premium pour 45 dollars. Eh bien, en général, vous comprenez. Tout ce qui est délicieux est pour de l'argent. Je l'ai désactivé et démoli. Et de beaux cadres, boutons, etc. - Je l'écrirai moi-même dans les styles quand je veux.

    Résumé

    Installer de manière standard (en copiant dans le répertoire wp-content/plugins/download-monitor/, laissez-le se mettre à jour, remplacez toutes les icônes par des icônes de l'archive dans le répertoire wp-content/plugins/download-monitor/img/filetype_icons/ et activez.

    À l’avenir, si j’y parviens, je pense mettre les liens dans de jolis cadres en utilisant CSS3, sur lesquels j’écrirai probablement aussi. Restez à l'écoute :)

    Mise à jour. L’auteur a maintenant retravaillé le plugin WordPress Download Monitor et créé une version complètement différente de la version originale. Je l'ai testé, mais je l'ai beaucoup moins aimé car le modèle du formulaire à quoi ressemblera le lien de téléchargement n'est plus aussi facilement modifiable. L'auteur a décidé que des vues préinstallées prêtes à l'emploi seraient suffisantes. Par exemple, si dans le menu des téléchargements, puis dans les paramètres, sélectionnez la vue souhaitée parmi six vues prédéfinies, cliquez sur Enregistrer

    Ensuite, lorsque vous choisissez la deuxième option, vous obtenez quelque chose comme ceci :

    Ceux. sur la nouvelle version, il ne sera pas possible d'utiliser la ligne que j'ai donnée dans la description, mais vous devrez écrire un fichier php spécial qui décrirait ce modèle de sortie. Mais le plus triste n'est même pas cela - mais le fait que ce fichier php, s'il est placé dans le répertoire avec le plugin, sera écrasé à chaque mise à jour du plugin. Et si vous le placez dans un répertoire avec un thème, alors lorsque vous changez de thème (même si cela arrive bien sûr beaucoup moins souvent). Mais de toute façon, l’écrire est une tâche assez laborieuse, et jusqu’à présent je n’ai aucune envie de le faire. Le seul avantage du plugin mis à jour est donc

    Tout d'abord, je souhaite à tous un bon week-end et de bons moments ! Et j'ai pour vous la dernière partie sur le compteur de téléchargement de fichiers, qui vous est présentée intégralement au format vidéo. Avant de commencer à étudier ce matériel, je vous conseille de vous familiariser avec la première partie, qui a été publiée il y a une semaine et qui y a été préparée.

    Dans cette leçon, je ne décrirai pas tout en détail, car il existe une leçon vidéo pour cela. En bref, je veux vous présenter seulement deux fichiers - télécharger.js Et télécharger.php, qui fonctionnent conjointement et forment une requête en utilisant la méthode Ajax.

    Premier pas. Déposer télécharger.js

    Nous devons d'abord créer un dossier js et créez un fichier dedans télécharger.js. Après cela, incluons la bibliothèque jQuery et déposer télécharger.js.

    Nous pouvons maintenant passer au fichier télécharger.js. Lors du traitement des événements, nous créons JQuery un document qui transmettra un paramètre lorsqu'on clique dessus comptoir, ce qui dans notre cas signifie écrire dans le champ télécharger. Je tiens à souligner et attirer votre attention sur le fait que nous utilisons la méthode diviser pour séparer la référence interligne, puisqu'elle est séparée par des barres obliques. Lors du transfert Ajax demande, les paramètres suivants sont nécessaires : URL- adresse de la page demandée, taper- quelle méthode est utilisée pour transférer les données vers le serveur : POSTE ou OBTENIR, données- une sorte de données qui sont transférées vers la page demandée.

    N'oubliez pas la méthode setTimeout, ce qui nous permet de ralentir légèrement le processus de téléchargement d'un fichier pour les serveurs locaux, car il n'y a pas de retard là-bas, donc le script n'a pas le temps de réagir au moment du téléchargement. Cette méthode ne peut donc être évitée. En paramètre emplacement, nous écrivons le chemin complet des fichiers téléchargés.

    JQuery(document).ready(function($) ( $(".counter").on("click",function(event) ( var counter = $(this).attr("href"); counter = counter. split("/"); event.preventDefault(); $.ajax(( url:"download.php", type:"post", data:(counter:counter) )); setTimeout(function () ( location= "http://"+document.domain+ "/counter_loadings_files/files/" + compteur; ), 1000); )); ));

    À propos, je voudrais noter que si vous devez vérifier d'une manière ou d'une autre l'envoi des demandes, vous pouvez Ajax demande d'insérer la fonction suivante, qui peut vous donner le résultat de l'envoi. Dans la deuxième étape, dans le code php, je vais vous dire ce qui va arriver ici. Par exemple, au lieu de " tout a été transféré" - écrire alerte(res);

    Success:function(res)( //Tout a été transféré), error:function())( //Rien n'a été transféré)

    Deuxième étape. Déposer télécharger.php

    Passons à la deuxième étape et là il faut s'occuper du dossier télécharger.php, qui reçoit à un moment donné un résultat du fichier télécharger.js. Tout d'abord, on se connecte à la base de données, puis on accepte la méthode POSTE la demande elle-même, à savoir le paramètre nous a été envoyé comptoir. Ensuite, nous mettons à jour la valeur du champ télécharger dans la base de données, mais comme vous pouvez le constater, cette approche est absolument incorrecte, car il n'y a pas une seule vérification.

    Par conséquent, la requête doit être un peu réécrite afin qu'elle ait la bonne structuration pour recevoir les données transmises. Vous avez peut-être déjà deviné que nous aurons besoin d'une condition qui sera basée sur la variable transmise. comptoir.

    Il n'y a pas eu de cours sur PHP et MySQL depuis longtemps. Aujourd'hui, nous allons créer un compteur de téléchargement simple mais efficace.

    Chaque fichier aura une entrée dans une ligne de table de base de données. Le nombre de téléchargements de fichiers sera stocké dans le même tableau. PHP mettra à jour la base de données MySQL et redirigera l'utilisateur vers le fichier requis.

    Pour suivre le nombre de téléchargements d'un fichier, vous devez le placer dans le dossier des fichiers et utiliser une URL spéciale pour y accéder.

    Étape 1 - XHTML

    La première étape consiste à créer le balisage de notre script. C'est très simple : nous avons un gestionnaire de fichiers div qui contient une liste non ordonnée, dans laquelle chaque élément de la liste est responsable d'un fichier.

    Les fichiers dont les téléchargements doivent être suivis sont placés dans le dossier fichiers du dossier racine du script. PHP parcourt ensuite tous les fichiers et ajoute chacun d'entre eux en tant qu'élément de liste (li) à la liste non ordonnée.

    démo.php


    • photoShooting-1.0.zip 0 téléchargement

    Notez que l'attribut href des liens transmet le nom du fichier en paramètre à download.php. C'est ici qu'a lieu le suivi du nombre de téléchargements.

    Vous n'êtes pas obligé de tout afficher de la même manière - vous pouvez simplement créer un lien vers download.php sur vos pages et tous les téléchargements ne seront pas effectués.

    Étape 2 - CSS

    Après le marquage, commençons par le design. Les règles CSS ci-dessous font référence au div du gestionnaire de fichiers en utilisant l'identifiant (symbole #), puisqu'il n'apparaît qu'une seule fois sur la page, et à d'autres éléments par noms de classe.

    styles.css

    #file-manager( background-color:#EEE; border:1px solid #DDD; margin:50px auto; padding:10px; width:400px; )
    ul.manager li( background:url("img/bg_gradient.gif") répéter-x centre bas #F5F5F5; bordure:1px solide #DDD; bordure-haut-couleur:#FFF; style de liste:aucun; position:relative ; ) ul.manager li a( display:block; padding:8px; ) ul.manager li a:hover .download-label( /* Lorsque vous survolez l'icône, affiche le texte de téléchargement vert : */ display:block; ) span . download-label( background-color:#64B126; border:1px solid #4E9416; color:white; display:none; font-size:10px; padding:2px 4px; position:absolute; right:8px; text-decoration : none ; text-shadow:0 0 1px #315D0D; top:6px; /* Coins arrondis CSS3 */
    -moz-border-radius:3px; -webkit-border-radius:3px; rayon de bordure : 3 px ; ) span.download-count (couleur:#999; taille de police:10px; remplissage:3px 5px; position:absolue; décoration de texte:aucun; )

    Étape 3 - PHP

    Comme je l'ai déjà dit, PHP recherche des fichiers dans le dossier files et affiche chaque fichier sous forme d'élément de liste dans une liste non ordonnée. Voyons comment cela se produit

    démo.php - la partie supérieure

    // Rapport d'erreurs : error_reporting(E_ALL^E_NOTICE); // : nécessite "connect.php" ; $extension=""; $files_array = tableau(); /* Ouvrez le dossier et parcourez tous les fichiers : */ $dir_handle = @opendir($directory) or die("Il y a une erreur avec votre répertoire de fichiers !"); while ($file = readdir($dir_handle)) ( /* Ignorer les fichiers système : */ if($file(0)==".") continue; /* end() affiche le dernier élément du tableau généré par le Fonction éclater() : */ $extension = strtolower(end(explode(".,$file))); /* Ignorer les fichiers php : */ if($extension == "php") continuer ; $files_array=$file ; ) /* Trier les fichiers par ordre alphabétique */ sort($files_array,SORT_STRING); $file_downloads=array(); $result = mysql_query("SELECT * FROM download_manager"); if(mysql_num_rows($result)) while($row=mysql_fetch_assoc($result)) ( /* La clé du tableau $file_downloads sera le nom du fichier et contiendra le nombre de téléchargements : */ $file_downloads[$row ["nom du fichier"] ]=$row["téléchargements"]; )

    Remarquez comment nous sélectionnons toutes les lignes de la table download_manager à l'aide de mysql_query(), puis les ajoutons plus tard au tableau $file_downloads avec le nom de fichier comme clé du nombre de téléchargements. Ainsi, plus loin dans le code, on peut écrire $file_downloads["archive.zip"] et afficher le nombre de téléchargements.

    Ci-dessous, vous pouvez voir le code qui génère les éléments de la liste :

    démo.php - partie médiane

    Foreach($files_array as $key=>$val) ( echo "

  • ".$val." ".(int)$file_downloads[$val]." télécharger
  • "; }

    Tout se fait simplement en utilisant une boucle foreach sur le tableau $files_array. Après cela, tout est sorti en utilisant echo.

    Examinons maintenant de plus près le fonctionnement du suivi des fichiers.

    télécharger.php

    // Vérification des erreurs : error_reporting(E_ALL^E_NOTICE); // Inclut le fichier de connexion à la base de données : require("connect.php"); if(!$_GET["file"]) error("Paramètre manquant !"); if($_GET["file"](0)==".") erreur("Mauvais fichier!"); if(file_exists($directory."/".$_GET["file"])) ( /* Si le visiteur n'est pas un robot de recherche, on compte le téléchargement : */ if(!is_bot()) mysql_query(" INSERT INTO download_manager SET filename ="".mysql_real_escape_string($_GET["file"])."" ON DUPLICATE KEY UPDATE downloads=downloads+1"); header("Emplacement : ".$directory."/".$_GET[ "file"] ); exit; ) else error("Ce fichier n'existe pas!"); /* fonctions d'assistance : */ function error($str) ( die($str); ) function is_bot() ( /* Cette fonction recherche un robot */ $botlist = array("Teoma", "alexa", " froogle", "Gigabot", "inktomi", "looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory", "Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot", "crawler " , "www.galaxy.com", "Googlebot", "Scooter", "Slurp", "msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz", " Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot", "Mediapartners-Google", "Sogou web spider", "WebAlta Crawler", "TweetmemeBot", "Butterfly", "Twitturls", "Me. dium ","Twiceler"); foreach($botlist as $bot) ( if(strpos($_SERVER["HTTP_USER_AGENT"],$bot)!==false) return true; // Est un bot ) return false; / / Pas un robot)

    Il est important de vérifier si votre visiteur est un humain ou un robot des moteurs de recherche. Les robots sont certes bons, mais ne les laissons pas fausser nos statistiques. C'est pourquoi la ligne de la base de données n'est mise à jour qu'après la vérification is_bot().

    Étape 4 - MySQL

    Comme nous l'avons remarqué à l'étape précédente, le nombre de téléchargements est stocké sous forme de ligne dans la table download_manager. Tout d'abord, expliquons comment fonctionne cette requête :

    télécharger.php

    INSÉRER DANS download_manager SET filename="filename.doc" SUR LA MISE À JOUR DE LA CLÉ EN DOUBLE downloads=downloads+1

    Il indique à MySQL d'insérer une nouvelle ligne dans la table download_manager et de définir le champ nom de fichier de la ligne sur la valeur du fichier appelé pour le téléchargement. Cependant, le champ du nom de fichier est désigné comme index unique dans la table. Cela signifie que chaque ligne ne peut être insérée qu'une seule fois, sinon une erreur de clé en double se produira.

    C'est là que fonctionnera la deuxième partie de la requête - ON DUPLICATE KEY UPDATE demandera à MySQL d'en ajouter un à la colonne des téléchargements si le fichier existe déjà dans la base de données.

    De cette façon, les nouveaux fichiers seront automatiquement ajoutés à la base de données lors du premier téléchargement.

    Étape 5 - jQuery

    Afin d'effectuer un suivi en temps réel, il serait bon de mettre à jour le compteur à côté du nom du fichier après chaque téléchargement.

    Nous allons faire cela en utilisant jQuery :

    script.js

    $(document).ready(function())( /* Le code est exécuté après le chargement de la page */ $("ul.manager a").click(function())( var countSpan = $(".download -count",this) ; countSpan.text(parseInt(countSpan.text())+1); )); ));

    Nous attribuons simplement un gestionnaire de clics aux liens qui mènent aux fichiers, et à chaque clic nous ajoutons une valeur.

    Étape 6 - htaccess

    Il y a encore une chose à faire. Download.php redirige l'utilisateur vers le fichier demandé qui a été passé en paramètre. Cependant, vous avez peut-être remarqué que les navigateurs tentent d'ouvrir directement certains types de fichiers. Nous devons lancer leur chargement. Cela peut être fait avec quelques lignes dans le fichier .htacess, qui se trouve dans le dossier des fichiers.

    Application ForceType/flux d'octets

    Notre comptoir est maintenant complètement prêt !

    Conclusion

    Pour que la démo fonctionne, vous devez recréer la table download_manager dans la base de données MySQL. Vous pouvez trouver le code SQL requis dans les sources.

    Après cela, ajoutez vos données de connexion à la base de données dans le fichier configuration.php.