![]() Groupe : Membres Messages : 25 |
Bonjour, J?aimerai faire un gestionnaire de téléchargement avec catégories mais je ne sais pas comment m?y prendre, voici un exemple de ce que j'aimerai faire (image.jpeg, vidéo.avi) dans rubrique Multimédia (programme.exe, fichier.pdf) dans rubrique Logiciels avec lien vers chaque fichier sous forme d'un tableau regardez cette image pour mieux comprendre
|
![]() Groupe : Membres Messages : 25 |
Finalement j'ai réussi a faire ce que je voulais j'ai créer deux tables (telechargement et categorie) +telechargement -id -categorie -nom -date -lien -clics +categorie -id -nom ensuite j'ai créer quatre pages (ajouter.php, ajouter_final.php, compteur.php, telechargement.php) ajouter.php contient le formulaire pour ajouter un fichier a la bdd ajouter_final.php vérifie les champs du formulaire est envoie le fichier compteur.php permet de compter le nombre de clics telechargement.php liste les fichiers et nous donne les liens pour le telechargement tout a l'aire de bien fonctionner mais j'ai un doute sur la sécurité du script c'est pour ça je fait appelle a vous j'aimerai bien que vous jetez un oeil et me dire si vous constater des failles de sécurité et comment les corriger SVP .---------------------> ajouter.php <---------------------. Code PHP: <?php require("config/config.php"); //Les paramètres de connexion ?> <form name="form1" method="post" action="ajouter_final.php">Catégorie: <select name="categorie"> <?php $connect_db = connect(); $trouve = mysql_query ("SELECT nom,id FROM categorie ORDER BY id"); while ($var = mysql_fetch_assoc ($trouve)) { $id = $var['id']; $nom = $var['nom']; ?> <option value="<?php echo $id; ?>"><?php echo $nom; ?></option> <?php } // fermer la connexion close(); ?> </select>*<br> Nom: <input type="text" name="nom">*<br> Date: <input type="text" name="date" value="<?php $date = date("d-m-Y"); Print("$date"); ?>">*<br> Lien: <input type="text" name="lien">*<br> <input type="submit" name="envoi" value="Ajouter Download"></form> .---------------------> ajouter_final.php <---------------------. Code PHP: <?php require("config/config.php"); //Les paramètres de connexion ?> <?php $msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>"; $msg_ok = "Votre fichier a été ajouté.<br />"; $message = $msg_erreur; // vérification des champs if (empty($_POST['categorie'])) $message .= "Catégorie<br/>"; if (empty($_POST['nom'])) $message .= "Nom<br/>"; if (empty($_POST['date'])) $message .= "Date<br/>"; if (empty($_POST['lien'])) $message .= "lien<br/>"; // si un champ est vide, on affiche le message d'erreur if (strlen($message) > strlen($msg_erreur)) { echo $message; } // sinon c'est ok else { foreach($_POST as $index => $valeur) { $$index = mysql_real_escape_string(trim($valeur)); } $connect_db = connect(); // connexion a la bdd $sql = "INSERT INTO telechargement VALUES ('', '$categorie', '$nom', '$date', '$lien', '$clics')"; $res = mysql_query($sql); if ($res) { echo $msg_ok; } else { echo mysql_error(); } } close(); // On peut fermer la connexion à MySQL ?> .---------------------> compteur.php <---------------------. Code PHP: <?php require("config/config.php"); //Les paramètres de connexion ?> <?php $connect_db = connect(); // connexion a la bdd // Lecture du paramètre id $id = intval($_GET["id"]); // Recherche de l'URL correspondant à l'identifiant id $requete = "SELECT lien FROM telechargement WHERE id=$id"; $resultat = mysql_query($requete); if ($enreg = mysql_fetch_array($resultat)) { // Incrementation du compteur $requete = "UPDATE telechargement SET clics=clics+1 WHERE id=$id"; @mysql_query($requete); close(); // On peut fermer la connexion à MySQL // Redirection vers le lien sélectionné header("Location: ".$enreg["lien"]); die(); // Inutile de poursuivre... } else { echo "le lien n'a pu être trouvé"; } ?> .---------------------> telechargement.php<---------------------. Code PHP:
<?php require("config/config.php"); //Les paramètres de connexion ?> <?php $categorie = intval($_GET['categorie']); ?> <?php /** /* Paramètres de pagination */ $nb_nouv_par_page = $nbre_page; /* Nombre de nouvelles qui seront affichées sur chaque page */ $url = "./telechargement.php?categorie=$categorie&page="; /* On détermine quelle est la page qui est actuellement affichée */ $page_en_cours = isset($_GET['page']) ? intval($_GET['page']) : 0; $page_affichee = ($page_en_cours + 1); $connect_db = connect(); // connexion a la bdd /* Requête pour compter les nouvelles présentes dans notre base de données */ $sql_nb = "SELECT COUNT(*) FROM `telechargement` WHERE categorie=". $categorie ." "; /* Exécution de la requête et récupération du résultat */ $resultat_1 = mysql_query($sql_nb); $nb_nouvelles = mysql_result($resultat_1, 0); /* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */ $nb_pages = ceil($nb_nouvelles / $nb_nouv_par_page); /** Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation. Première chose à vérifier : avons-nous plusieurs pages, et au moins une ? */ if($nb_pages > 0) { /* On définit une variable qui contiendra les données de navigation */ $barre_nav = ""; /* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */ if($nb_pages > 1) { /** Nous avons plusieurs pages: nous allons afficher successivement les liens vers les pages précédentes s'il y en a, la page en cours et les liens vers les pages suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables sauf pour la page en cours dont nous mettrons le chiffre en gras */ if($page_en_cours > 0) { for($i = 0; $i < $page_en_cours; $i++) { $p = $i + 1; $barre_nav .= "<a href="". $url . $i ."" title="page ". $p ."">". $p ."</a> | "; } } /** On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente */ $barre_nav .= "<strong>". $page_affichee ."</strong>"; /* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */ if(($page_affichee) < $nb_pages) { /* Il reste encore d'autres pages à afficher */ $nb_suivantes = $nb_pages - ($page_affichee); for($j = ($page_affichee); $j < $nb_pages; $j++) { $p = $j + 1; $barre_nav .= " | <a href="". $url . $j ."" title="page ". $p ."">". $p ."</a>"; } } /* On peut définir en plus la situation dans une autre variable à afficher ailleurs */ $page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages."; } else { /* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */ $barre_nav .= "page 1/1"; } /** On peut maintenant afficher notre page. On va commencer par récupérer les informations On doit définir à partir de quelle nouvelle on doit récupérer les données dans la clause LIMIT. */ $debut = $page_en_cours * $nb_nouv_par_page; $sql_n = "SELECT * FROM telechargement WHERE categorie=". $categorie ." LIMIT ". $debut .", ". $nb_nouv_par_page .";"; $nouvelles = mysql_query($sql_n); ?> <table id="la_table"> <colgroup> <col span="1" width="auto" style="background-color:#dedfdf" /> <col span="1" width="375" style="background-color:#f1f1f1" /> <col span="1" width="100" style="background-color:#dedfdf" /> <col span="1" width="100" style="background-color:#f1f1f1" /> </colgroup> <thead> <!-- En-tête du tableau --> <tr> <th>DL</th> <th>Nom</th> <th>Date</th> <th>Clics</th> </tr> </thead> <tbody> <!-- Corps du tableau --> <p><?php echo($page_affichee); ?></p> <?php while($nouv = mysql_fetch_assoc($nouvelles)) { ?> <tr> <td><a href="compteur.php?id=<?php echo $nouv['id']; ?>"><img src="../forum/img/styleoriental/Download.png" width="15" height="15" border="none" /></a></td> <td><a href="compteur.php?id=<?php echo $nouv['id']; ?>"><?php echo $nouv['nom']; ?></a></td> <td><?php echo $nouv['date']; ?></td> <td><?php echo $nouv['clics']; ?></td> <tr> <?php } /* on libère la mémoire */ mysql_free_result($resultat_1); mysql_free_result($nouvelles); /* On peut fermer la connexion à MySQL */ close(); // On peut fermer la connexion à MySQL /* On affiche maintenant la barre de navigation */ ?> <p class="navigation"><?php echo($barre_nav); ?></p> </tbody> </table> <?php } else { /** Nous n'avons aucune page, on peut alors afficher un message autre sans devoir nous préoccuper de la navigation */ echo "Aucun fichier dans cette catégorie"; } ?> |
Groupe : Membres Messages : 121 |
Salut, ton script m'intéresse mais je ne pourrais pas t'aider sur la sécurité du script, mais pourrais-je l'utiliser poour mettre des fichiers à disposition des Admins de mon site ???
Maxime
|
![]() Groupe : Membres Messages : 25 |
Citation: Maxime34 Salut, ton script m'intéresse mais je ne pourrais pas t'aider sur la sécurité du script, mais pourrais-je l'utiliser poour mettre des fichiers à disposition des Admins de mon site ??? oui tu peux t'en servir si tu veux
|
![]() Groupe : Membres Messages : 25 |
alors quoi de neuf
|
Groupe : Membres Messages : 121 |
Merci pour ton script, mais pour la sécurité, je ne peux absolument pas t'aider désolé
Maxime
|
![]() Groupe : Membres Messages : 25 |
Citation: Maxime34 Merci pour ton script, mais pour la sécurité, je ne peux absolument pas t'aider désolé t'inquiète j'ai eu ma réponse sur un autre forum et est-ce qu'il parait ya pas de souci a ce faire
|
Groupe : Membres Messages : 121 |
Ok juste, pourrais tu faire un zip, avec tous les fichiers bdd et config.php compris STP
Maxime
|
![]() Groupe : Membres Messages : 25 |
voici les tables Code MYSQL: -- phpMyAdmin SQL Dump -- version 2.11.6 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Sam 27 Septembre 2008 à 12:00 -- Version du serveur: 5.0.51 -- Version de PHP: 5.2.6 -- -- Base de données: `download` -- -- -.------------------------------------------------------ -- -- Structure de la table `categorie` -- CREATE TABLE `categorie` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `nom` VARCHAR(255) NOT NULL DEFAULT '', KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ; -- -.------------------------------------------------------ -- -- Structure de la table `telechargement` -- CREATE TABLE `telechargement` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `categorie` VARCHAR(255) NOT NULL DEFAULT '', `nom` VARCHAR(255) NOT NULL DEFAULT '', `DATE` VARCHAR(255) NOT NULL DEFAULT '', `lien` VARCHAR(255) NOT NULL DEFAULT '', `clics` VARCHAR(255) NOT NULL DEFAULT '', KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=254 ; et le config.php Code PHP:
<?php $host_db = "localhost"; // nom de votre serveur $user_db = "root"; // nom d'utilisateur de connexion à votre bdd $password_db = ""; // mot de passe de connexion à votre bdd $bdd_db = "download"; // nom de votre bdd function connect() { global $host_db,$user_db,$password_db,$bdd_db; $connect_db = mysql_connect($host_db,$user_db,$password_db); mysql_select_db($bdd_db,$connect_db); return $connect_db; } function close() { global $connect_db; mysql_close($connect_db); } $nbre_page = '24';//Ceci est le nombre de fichier (telechargement) à afficher par page ?> |
Groupe : Membres Messages : 121 |
Merci Beaucoup, je te remercie pour ce script php
Maxime
|