Interdire téléchargement en dehors de mn site
Fermé
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
-
23 juin 2010 à 21:48
AmoCore Messages postés 85 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 22 mai 2015 - 29 juil. 2010 à 14:34
AmoCore Messages postés 85 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 22 mai 2015 - 29 juil. 2010 à 14:34
A voir également:
- Interdire téléchargement en dehors de mn site
- Site de telechargement - Accueil - Outils
- Site de vente en ligne particulier - Guide
- Site comme coco - Accueil - Réseaux sociaux
- Site de telechargement de film d'action gratuit - Télécharger - TV & Vidéo
- Darkino officiel #1 site de téléchargement direct francophone - Accueil - Services en ligne
26 réponses
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 juin 2010 à 01:34
24 juin 2010 à 01:34
Salut.
Tu peux faire un script de téléchargement en PHP.
Tu pourras utiliser le "referer HTTP" pour savoir d'où provient l'utilisateur.
telechargement.php?fichier=example.zip
Tu peux faire un script de téléchargement en PHP.
Tu pourras utiliser le "referer HTTP" pour savoir d'où provient l'utilisateur.
telechargement.php?fichier=example.zip
<?php $dossier = 'private'; if (isset($_GET['fichier']) && !empty($_GET['fichier'])) { if(isset($_SERVER['HTTP_REFERER']) && preg_match('#^https?://'.$_SERVER['SERVER_NAME'].'/#i',$_SERVER['HTTP_REFERER'])) { if (file_exists($dossier.'/'.$_GET['fichier'])) { header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="'.$_GET['fichier'].'"'); header('Content-Length: '.filesize($_GET['fichier']).";\n"); header('Content-Type: application/octet-stream; '); header('Content-Transfer-Encoding: binary'); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: private',false); readfile($dossier.'/'.$_GET['fichier']); } else { echo 'Fichier introuvable'; } } else { header('Content-type: text/html; charset=utf-8'); echo 'Vous n\'êtes pas autorisé à télécharger ce fichier !'; } } else { echo 'Erreur'; } ?>N'oublie pas de protéger le dossier privé avec un .htaccess.
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
24 juin 2010 à 14:37
24 juin 2010 à 14:37
Salut sa te dérange pas de me dire ou faut mettre le téléchargement de fichier parce que le php je m'y connais pas trop.
Et pour le htaccess , je le protege avec un mot de passe sa craint pas pour le téléchargment ?
Et pour le htaccess , je le protege avec un mot de passe sa craint pas pour le téléchargment ?
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 juin 2010 à 14:47
24 juin 2010 à 14:47
Il suffit de placer le code que je t'ai donné dans le fichier "telechargement.php".
Pour télécharger un fichier dans le dossier "private" (protégé par un mot de passe), il suffit de mettre le nom du fichier après "telechargement.php?fichier=".
Exemple :
Tu peux mettre un mot de passe avec un .htaccess, ça ne craint rien : c'est PHP qui va chercher le fichier dans le dossier, le .htaccess ne servira à rien puisque PHP ne passe pas par HTTP : il lit directement le fichier sur le disque dur. Par contre, le .htaccess empêchera l'internaute de télécharger le fichier via HTTP (qui est la seule méthode, sauf par FTP, mais il n'est pas censé avoir le mot de passe du FTP).
Pour télécharger un fichier dans le dossier "private" (protégé par un mot de passe), il suffit de mettre le nom du fichier après "telechargement.php?fichier=".
Exemple :
<a href="telechargement.php?fichier=exemple.pdf">PDF</a>Pour télécharger le fichier "private/exemple.pdf".
Tu peux mettre un mot de passe avec un .htaccess, ça ne craint rien : c'est PHP qui va chercher le fichier dans le dossier, le .htaccess ne servira à rien puisque PHP ne passe pas par HTTP : il lit directement le fichier sur le disque dur. Par contre, le .htaccess empêchera l'internaute de télécharger le fichier via HTTP (qui est la seule méthode, sauf par FTP, mais il n'est pas censé avoir le mot de passe du FTP).
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
Modifié par AmoCore le 24/06/2010 à 15:18
Modifié par AmoCore le 24/06/2010 à 15:18
j'ai suivi à la lettre , mais le fichier en question ne se télécharge pas et sa ecrit Vous n'êtes pas autoriser
<a href="telechargement.php?fichier=Test.zip">Test</a>
<a href="telechargement.php?fichier=Test.zip">Test</a>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
24 juin 2010 à 15:33
24 juin 2010 à 15:33
Sinon pour ton htaccess c'est plutôt :
Order Deny,Allow
Allow from monsite.com
Deny from all
Pour empêcher de récupérer directement le fichier zip à partir d'un autre site, si tu utilise un script php comme si dessus, tu peux même empêcher toutes les connections avec un :
Order Allow, Deny
qui refuse tout par défaut.
Order Deny,Allow
Allow from monsite.com
Deny from all
Pour empêcher de récupérer directement le fichier zip à partir d'un autre site, si tu utilise un script php comme si dessus, tu peux même empêcher toutes les connections avec un :
Order Allow, Deny
qui refuse tout par défaut.
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
24 juin 2010 à 15:46
24 juin 2010 à 15:46
Sa bloque rien quand je fait sa.
Enfaite moi se que je veut c'est que personne ne peut accéder au téléchargement sa être dans mon site parce que avec ce htaccess , si je tape l'adresse correcte sur mon navigateur sa le télécharge quand même.
Enfaite moi se que je veut c'est que personne ne peut accéder au téléchargement sa être dans mon site parce que avec ce htaccess , si je tape l'adresse correcte sur mon navigateur sa le télécharge quand même.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 juin 2010 à 15:58
24 juin 2010 à 15:58
Ce que je t'ai proposé fonctionne parfaitement.
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
24 juin 2010 à 16:00
24 juin 2010 à 16:00
Alala suis dans une galère pas possible , tu pourait m'aider par msn ? fain avec assistance à distance , s'il te plait ?
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 juin 2010 à 16:05
24 juin 2010 à 16:05
On récapitule :
- Crées un dossier "private" dans lequel tu places tes fichiers protégés et un .htaccess contenant "Deny from all" (sans les guillemets).
- Crées un fichier "telechargement.php" contenant le long code
- Pour télécharger le fichier "exemple.pdf" dans le dossier "private", il te suffit de faire ce lien :
- Crées un dossier "private" dans lequel tu places tes fichiers protégés et un .htaccess contenant "Deny from all" (sans les guillemets).
- Crées un fichier "telechargement.php" contenant le long code
- Pour télécharger le fichier "exemple.pdf" dans le dossier "private", il te suffit de faire ce lien :
<a href="telechargement.php?fichier=exemple.pdf">...</a>
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
Modifié par AmoCore le 24/06/2010 à 16:22
Modifié par AmoCore le 24/06/2010 à 16:22
J'ai fait exactement sa , j'ai même refait exactement ton script avec le exemple.pdf
Mais rien n'y fait.
J'ai tout recommencer depuis le début étape par étape , sa fait toujours vous n'êtes pas autoriser à télécharger se fichier.
Mais rien n'y fait.
J'ai tout recommencer depuis le début étape par étape , sa fait toujours vous n'êtes pas autoriser à télécharger se fichier.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 juin 2010 à 16:37
24 juin 2010 à 16:37
Dans le script "telechargement.php", ajoute ceci au début (après "<?php" quand même) :
var_dump($_SERVER['HTTP_REFERER']); var_dump($_SERVER['SERVER_NAME']);
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
24 juin 2010 à 16:47
24 juin 2010 à 16:47
NULL string(18) "MONSITE.com"
Warning: Cannot modify header information - headers already sent by (output started at /mnt/weba/30/99/52424199/htdocs/telechargement.php:3) in /mnt/weba/30/99/52424199/htdocs/telechargement.php on line 25
Vous n'?tes pas autoris? ? t?l?charger ce fichier !
Par contre je vien de trouver un script php
Il marche à la racine de mon site. mais pour le dossier private je ne sais pas comment y procedé
et quand je met $dossier = 'private'; sa marche plus ^^
voila le script en question :
<?php
$file=$_GET['file'];
if (($file != "") && (file_exists("./" . basename($file))))
{
$size = filesize("./" . basename($file));
header("Content-Type: application/force-download; name=\"" . basename($file) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile("./" . basename($file));
exit();
}
?>
Warning: Cannot modify header information - headers already sent by (output started at /mnt/weba/30/99/52424199/htdocs/telechargement.php:3) in /mnt/weba/30/99/52424199/htdocs/telechargement.php on line 25
Vous n'?tes pas autoris? ? t?l?charger ce fichier !
Par contre je vien de trouver un script php
Il marche à la racine de mon site. mais pour le dossier private je ne sais pas comment y procedé
et quand je met $dossier = 'private'; sa marche plus ^^
voila le script en question :
<?php
$file=$_GET['file'];
if (($file != "") && (file_exists("./" . basename($file))))
{
$size = filesize("./" . basename($file));
header("Content-Type: application/force-download; name=\"" . basename($file) . "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile("./" . basename($file));
exit();
}
?>
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 juin 2010 à 16:55
24 juin 2010 à 16:55
Le script que tu as trouvé ne vérifie pas si l'utilisateur provient de ton site ou non avant de lancer le téléchargement.
Pour revenir au miens, apparemment, $_SERVER['HTTP_REFERER'] n'existe pas.
Est-ce que tu accèdes à "telechargement.php?fichier=exemple.pdf" en cliquant sur le lien ou en tapant directement l'URL dans la barre d'adresse ? Si tu cliques sur le lien, le referer devrait exister.
Pour revenir au miens, apparemment, $_SERVER['HTTP_REFERER'] n'existe pas.
Est-ce que tu accèdes à "telechargement.php?fichier=exemple.pdf" en cliquant sur le lien ou en tapant directement l'URL dans la barre d'adresse ? Si tu cliques sur le lien, le referer devrait exister.
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
24 juin 2010 à 17:02
24 juin 2010 à 17:02
j'ai crée une page (page_de_test.html) j'ai mis le lien au mileu de la page et sa fait la meme erreur que si je l'ecrit dans la barre d'adresse.
Parcontre je vien d'avoir une idee , tu ma dit seul le php est autoriser pour télécharger dans un dossier priveé ? alors regarde se que j'avais penser a faire.
de cacher le lien avec un java script , puis lancement d'un php qui fait redirection vers un deuxième php qui est dans le dossier private , aprés quand l'utilisateur sur firefox après avoir télécharge le fichier il fait clique droit copier l'adresse d'origine de téléchargement , il va la copier exemple (téléchargment2.php ou nomdufichier.php) et quand il vas la coller il n'y aura aucun accès avec htaccess ?
Tu pense que sa devrait marcher ?
Parcontre je vien d'avoir une idee , tu ma dit seul le php est autoriser pour télécharger dans un dossier priveé ? alors regarde se que j'avais penser a faire.
de cacher le lien avec un java script , puis lancement d'un php qui fait redirection vers un deuxième php qui est dans le dossier private , aprés quand l'utilisateur sur firefox après avoir télécharge le fichier il fait clique droit copier l'adresse d'origine de téléchargement , il va la copier exemple (téléchargment2.php ou nomdufichier.php) et quand il vas la coller il n'y aura aucun accès avec htaccess ?
Tu pense que sa devrait marcher ?
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
24 juin 2010 à 17:42
24 juin 2010 à 17:42
Je vien d'essayer , et j'ai un petit problème
Au moment ou sa ouvre le 2 eme php
Forbidden
You don't have permission to access /Private/1.php on this server.
Au moment ou sa ouvre le 2 eme php
Forbidden
You don't have permission to access /Private/1.php on this server.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 juin 2010 à 18:29
24 juin 2010 à 18:29
Si tu fais une redirection, c'est le visiteur qui ira chercher le fichier, pas PHP.
Le serveur va dire au visiteur de charger l'URL, et il va le faire, de la même façon qu'avec un lien.
Le serveur va dire au visiteur de charger l'URL, et il va le faire, de la même façon qu'avec un lien.
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
24 juin 2010 à 18:57
24 juin 2010 à 18:57
Ta pas un autre idee ? si non ?
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
24 juin 2010 à 22:30
24 juin 2010 à 22:30
Non.
Je viens encore de tester et ça fonctionne parfaitement.
Je viens encore de tester et ça fonctionne parfaitement.
AmoCore
Messages postés
85
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
22 mai 2015
3
Modifié par AmoCore le 29/07/2010 à 02:17
Modifié par AmoCore le 29/07/2010 à 02:17
Salut , (Oais un peu tard) Mais j'ai trouver d'où sa viens , le problème c'etait que le nom du fichier est "test.zip" , et moi j'ai mis "Test.zip" ^^
Sayé sa marche nickel encore merci, Mais par contre ,sa télécharge en pdf ? comment faire pour qu'il soit en zip ?
EDIT : Faut changer dans le texte "application/pdf"changer 'pdf' et mettre 'zip'
Sayé sa marche nickel encore merci, Mais par contre ,sa télécharge en pdf ? comment faire pour qu'il soit en zip ?
EDIT : Faut changer dans le texte "application/pdf"changer 'pdf' et mettre 'zip'
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
29 juil. 2010 à 10:09
29 juil. 2010 à 10:09
Tu peux retirer la ligne header('Content-type: application/pdf'), il y a un autre "Content-Type" plus loin.