mortiis
Messages postés120Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention 9 mars 2008
-
9 oct. 2004 à 16:26
mortiis
Messages postés120Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention 9 mars 2008
-
25 nov. 2005 à 07:39
Bonjour à tous
Je fait un site ou il est possible de télécharger des fichiers.
Présentement je les protège par mot de passe via un .htaccess
J'aimerais me débarasser du .htaccess et faire la même chose par programmation avec php dans le but que le seul moyen de télécharger un fichier sur le site soit en cliquant sur un lien d'une page.
Je ne veut pas que l'utilisateur puisse télécharger un fichier en inscrivant l'adresse directement dans le navigateur.
mortiis
Messages postés120Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention 9 mars 2008 10 oct. 2004 à 07:08
Bonjour à tous
J'ai trouver la solution.
Ma solution est avec un fichier .htaccess
Aucun lien, même pas un lien sur mon site ne permet de télécharger le fichier.
Le seul moyen de faire downloader le fichier est avec un download forcé.
Voila sa fait ce que je veut.
Je ne sait pas s'il existe d'autres moyens et si c'est le meilleur, mais sa fonctionne et c'est appliquable aux sous doxxiers.
Merci à tous ceux qui ont tentés de m'aider.
Et bonne prog à tous.
Si sa intéresse quelqu'un voici le code PHP pour faire un download forcé :
À noter que ce code doit être seul dans la page, C'est à dire qu'il ne doit avoir aucun code HTML ni JavaScript ou autre.
Il ne doit pas y avoir de texte ni de print(); ni de echo ""
Personellement, moi je l'apelle dans un popup je trouve sa plus pratique.
Pour augmenter la sécurité, il est préférable de faire une redirection dans le fichier de download si l'utilisateur n'est pas enregistré (Utilisation de session) ou si la page de download n'est pas appelé à partir d'une page de votre site.
En utilisant ce fichier .htaccess combiné avec le fichier php de download forcé (avec votre sécurité dednas), d'après moi, vos fichiers sont protégés.
Si quelqu'un à des commentaires ou connait un meilleur moyen, j'aimerais savoir.
defkrie
Messages postés435Date d'inscriptionvendredi 20 septembre 2002StatutMembreDernière intervention20 novembre 2004 9 oct. 2004 à 19:54
garde les .htacces
cree une base de donnée aves les champ
int numero | char lien
0 | http:// ......
sur le site a la place du lien traditionnel
tu fais un lien vers un script php a qui tu envoie le numero par exmeple 0 il recherhce dans la base le lien et lance un téléchargemnt automatique ( boite de windows)
mortiis
Messages postés120Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention 9 mars 2008 9 oct. 2004 à 20:14
Bonjour à tous
Merci pour ce conseil, mais ce n'est pac ce que je cherche.
Parce que de cette façon, si l'utilisateur connait le lien du fichier, il peut le tabper directement dans la barre d'adresse de son navigateur et je ne veut pas sa.
De plus je ne sait jamais quels liens seront disponibles, puisque mon script liste les fichiers qui sont dans un répertoire et c'est ce qui constitu les liens de ma page. J'ajoute et j'enlève souvent des fichiers de ce répertoire et sa serait long de mettre la base de données à jour chaque fois.
Si tu a une autre solution, je suis pret a en prnedre considération.
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 9 oct. 2004 à 20:55
Autre astuce, en combination avec le message de defkrie.
Tu place tes fichiers zip/exe/tar... dans un dosseir, tu met le htaccess.
Ta table sql tu la fait comme ça :
CREATE TABLE download (
id int(11) NOT NULL auto_increment,
name varchar(255) DEFAULT '0' NOT NULL,
extension varchar(255) DEFAULT '0' NOT NULL,
code varchar(255) DEFAULT '0' NOT NULL,
nombre varchar(255) DEFAULT '0' NOT NULL,
titre varchar(255) DEFAULT '0' NOT NULL,
description varchar(255) DEFAULT '0' NOT NULL,
taille varchar(255) DEFAULT '0' NOT NULL,
dateajout varchar(255) DEFAULT '0' NOT NULL,
version varchar(255) DEFAULT '0' NOT NULL,
key id (id)
) TYPE= MyISAM;
Donc tu creer une page d'administration, tu inject les champs :
name = nom du fichier (sans l'extenstion) (ex : photoshop)
extension = extension de ton fichier (ex : .zip)
titre = titre de ton fichier (ceci sera afficher) (ex : Photoshop ! meilleur outil...)
description = desction du fichier (ceci sera afficher) (ex : creer une animation, des logos...)
version = version du prog (ex : 1.42342354354535)
Ensuite tu utilise la fonction date() avec le format que tu prefere (cf : date & heure, phpcs.com) pour le champ 'dateajout'
Taille : calcul de la taille du fichier filesize("photoshop.exe"); , 'nombre' tu met 0 ceci te permettra de faire un compteur de telechargement & enfin : 'code' que tu genere un nombre au hasard, ex : $code = rand(100000,999999);
DANS TON CODE: dés que ta la variabe $code, tu renomme le fichier par : ''.$name.''.$code.''.$extension.''
Voila, tu affiche le tout avec une while et un 'select `download` ORDER BY 'id' DESC. en sortie de la while tu aura un tableau, tu affiche le tout, comme ça tout est php.
Bon les liens doivent etre : http://tonsiteatoietrztgfrd.com/zip.php?id =NUMERO DU FICHIER&code=CODE ISSU DE LA TABLE 'code'.
Ceci selectionne la table 'download' par l'ID ($id), et sa compare le champ 'code' à $code, si il sont parail, sa telecharge le fichier par cette manniere :
Et tu modifie le champ 'code' par la variable $codenouveau.
VOILA !
En claire : tu modifier à chaque telechragement le nom du fichier. (une partie)
Je te promet que si tu manipule bien le php&les requettes php, tu y reussi.
Si ta besoin d'aide supplementaire le forum est là pour ça, normalement je n'avais pas à te sortir un tel baratin, mais bon, desidement en ces jours-ci je suis assez motivier.
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
mortiis
Messages postés120Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention 9 mars 2008 10 oct. 2004 à 02:07
Bonjour à tous
Merci beaucoup, ta solution est asser intéressante et pas trop compliquer a implanter, je n'y avait pas penser.
Cela pourra servir à plusieurs.
Par contre, sa ne convient toujours pas à mes besoins, car je ne veut pas renommer mes fichiers, car je les utilise régulièrement avec d'autres programme et je ne veut pas les modifier.
De plus si quelqu'un réussit à trouver le nom de fichier, même s'il est renommé souvent, alors il peut le télécharger.
Je sait qu'il est possible de faire en sorte que le seul moyen de télécharger un fichier soit avec un lien dans une page.
Sa se fait avec les .htaccess je crois, j'ai trouver le code d'un htaccess qui est sensé faire sa, je l'ai essayer, mais sa bloque tous mes fichiers, alors je met le contenu ici dans l'espoir que toi ou quelqu'un d'autre sache m'expliquer pourquoi sa ne fait pas ce que je veut. et comment je pourait le modifier pour arriver au résultat voulu.
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 10 oct. 2004 à 02:55
Re,
Pas mal, pas mal ton htaccess !
Je pense qu'avec ce qu'on a fournis cela servirais bien d'autres.
Enfin bref [...]
J'espere que tu à reussi ce dont tu voulais, car un moment je me suis dit : "c'est impossible, il veut qu'on puisse pas y aceeder au fichier à distance, mais juste par une apge web..."
Bonne continuation à toi.
mortiis
Messages postés120Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention 9 mars 2008 10 oct. 2004 à 03:44
Bonjour à tous
Merci pour ton encouragement, mais connait tu les htaccess, moi pas beaucoup.
C'est pourquoi je pose cette question.
J'ai une idée de ce que ce htaccess fait, mais je ne suis pas totalement certain.
Tout ce qui est caractère spéciaux dans ce htaccess, est pour moi du chinois.
J'aimerais vraiment comprendre, pour arriver à mes fins qui sont mentionnés plus haut.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 10 oct. 2004 à 20:29
Salut ;-)
Fais ceci :
tu as ton dossier où sont contenus tous tes fichiers (innaccessible via http)
Lorsques tu demandes un fichier (via une url du style fichier.php?fichier=fichier.zip), tu copies le fichier "fichier.zip" situé dans le répertoire innaccessible dans un répertoire accessible qui ne contiendra que le fichier en cours de traitement.
Ensuite tu fais un force download (cherche sur le site "forcer le téléchargement) vers ce fichier. Sous la ligne readfile('fichier.zip') (que tu auras placée en regardant "forcer le téléchargement") tu mets un @unlink('rep_temp/fichier.zip');
Si je n'ai pas été clair fais-le moi savoir stp :-)
mortiis
Messages postés120Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention 9 mars 2008 11 oct. 2004 à 15:58
Merci beaucoup.
Cette solution permet de télécharger via une url.
Moi je ne voulait pas sa.
J'ai trouver la solution à ce que je cherchait et cette solution est dans le message juste avant le tien ou j'ai mis le code du htaccess et le code pour faire un download forcé.
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 13 oct. 2004 à 14:28
Ma solution été assez original lol,
Mais celle que mortiis à donner est sourment la meilleur :)
J'espere que encore quelques personnes donnerons des astuces.
mortiis
Messages postés120Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention 9 mars 2008 13 oct. 2004 à 15:08
Bonjour à tous
Oui c'est vrai ta solution est très bonne, et je crois que je n'y aurais pas penser.
Par contre, je voulais trouver le moyen que se soit totalement impossible de télécharger le fichier en entrant le chemin dans la barrde d'adresse et que si jamais par hasard quelqu'un trouve l'adresse du fichier, peu importe son extention sa soit une page d'erreur qui lui soit retourner.
N'en demeure pas moin que ta solution est très bonne et pourrait me servir pour d'autres cas.
à noter que les paramètres peuvent êtres passé par la méthode get.
Pour mettre de la sécurité, il suffit de vérifier si l'utilisateur est bien loggé et qu'il a bien le droit de téléchargé, via variable session et base de données par exemple.
Il y a toutefois une règle à observer, dans la page ou tu fais le download forcé, tu ne doit pas avoir de code de sortie. Exemple : echo et print.
cs_nebunamirax
Messages postés1Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention 6 juin 2005 6 juin 2005 à 15:50
salut
moi je suis un peu dans le meme probleme mais je voudrai juste
que personne ne puisse telecharger si il n'est pas loguer ( ma base de
donné est existante avec mots de passe etc..) et si possible utiliser
le htacces