Protéger acces direct à un repertoire
12 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Protéger acces direct à un repertoire
Salut,
J'ai un répertoire qui contient 1000 photos.
Je souhaite en afficher 20 de manières aléatoire sur mon site chaque jour.
J'ai donc créé un script php qui choisit les 20 photos et les enregistre en Base de donnée. Jusque la pas de problème. Une fois les 20 thumbs aléatoires affichés sur la page, je veux pouvoir cliquer éventuellement sur chaque pour qu'elles s'agrandissent en taille réelle.
Mes 1000 photos tailles réelles sont dans le repertoire: /photos-gratuites/
En cliqnant sur les thumbs j'appelle les photo par:
telechargement-photo.php?photo=photo$i.jpg
Dans telechargement-photo.php je verifie que la photo demandée est bien en bdd puis j'affiche si c'est le cas, pour eviter de pouvoir visualiser les autres photos du répertoire.
Cela fonctionne convenablement. Cependant on peut passer outre le script si on connait le chemin des photos .
J'ai donc mis un htaccess dans le répertoire avec : deny from all.
Mais le script telechargement-photo.php ne passe plus ( acces refusé).
D'ou ma question comment faire pour que seul le script passe ?
Merci
J'ai un répertoire qui contient 1000 photos.
Je souhaite en afficher 20 de manières aléatoire sur mon site chaque jour.
J'ai donc créé un script php qui choisit les 20 photos et les enregistre en Base de donnée. Jusque la pas de problème. Une fois les 20 thumbs aléatoires affichés sur la page, je veux pouvoir cliquer éventuellement sur chaque pour qu'elles s'agrandissent en taille réelle.
Mes 1000 photos tailles réelles sont dans le repertoire: /photos-gratuites/
En cliqnant sur les thumbs j'appelle les photo par:
telechargement-photo.php?photo=photo$i.jpg
Dans telechargement-photo.php je verifie que la photo demandée est bien en bdd puis j'affiche si c'est le cas, pour eviter de pouvoir visualiser les autres photos du répertoire.
- Code: Tout sélectionner
$photo = $_GET['photo'];
$repertoire_photos = 'photos-gratuites/';
$photo_existe=0;
$table="numeros_photo";
include("base-de-donnee.php");
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter");
@mysql_select_db("$bdd")
or die("Impossible de se connecter");
$query = "SELECT * from $table ";
$result = mysql_query($query);
while ($val = mysql_fetch_array($result)) {
if ($photo==$val['numero']) $photo_existe=1;
}
mysql_close();
if ($photo_existe==0){echo'<script>window.location="index.php" </script>';exit(); }
else
echo '<img src="'.$repertoire_photos.$photo.'" >';
exit();
Cela fonctionne convenablement. Cependant on peut passer outre le script si on connait le chemin des photos .
J'ai donc mis un htaccess dans le répertoire avec : deny from all.
Mais le script telechargement-photo.php ne passe plus ( acces refusé).
D'ou ma question comment faire pour que seul le script passe ?
Merci
Dernière édition par seabird le Mer Jan 23, 2008 15:00, édité 4 fois.
raljx a écrit:peut etre mettre les bons droits sur ton dossiers photoscomme supprimer l'attribut lecture et ecriture dans les permissions publiques (chmod 771) et supprimer l'htaccess
Non cela ne fonctionne pas , on a quand même acces aux photos lorsque l'on connait le chemin.
On peut laisser le deny from all dans le htaccess et mettre : dans le telechargement-photos.php:
- Code: Tout sélectionner
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'. basename($repertoire_photos.$photo) .'";');
header('Content-Length: '. filesize($repertoire_photos.$photo));
@readfile($repertoire_photos.$photo) OR die();
à la place de
- Code: Tout sélectionner
echo '<img src="'.$repertoire_photos.$photo.'" >';
Comme ça cela fonctionne le script passe bien à travers le deny from all , mais ce n'est pas ce que je veux. Je veux que l'image s'affiche directement et non pas proposée au téléchargement.
-

webmasterlamogere - WRInaute accro

- Messages: 1874
- Inscription: Dim Déc 17, 2006 21:08
il faut changer le content-type. Par exemple :
voir utiliser getimagesize pour récupérer le type mime
- Code: Tout sélectionner
header('Content-type: image/jpeg');
header('Content-Length: '. filesize($repertoire_photos.$photo));
@readfile($repertoire_photos.$photo) OR die();
voir utiliser getimagesize pour récupérer le type mime
webmasterlamogere a écrit:il faut changer le content-type. Par exemple :
- Code: Tout sélectionner
header('Content-type: image/jpeg');
header('Content-Length: '. filesize($repertoire_photos.$photo));
@readfile($repertoire_photos.$photo) OR die();
voir utiliser getimagesize pour récupérer le type mime
Ca marche nickel , merci . Je n'ai pas penser à changer le Content-type.
Une chose de réglée
c'est à mon avis la seule possibilité.webmasterlamogere a écrit:il faut changer le content-type. Par exemple :
- Code: Tout sélectionner
header('Content-type: image/jpeg');
header('Content-Length: '. filesize($repertoire_photos.$photo));
@readfile($repertoire_photos.$photo) OR die();
voir utiliser getimagesize pour récupérer le type mime
Re: Protéger acces direct à un repertoire
seabird a écrit:D'ou ma question comment faire pour que seul le script passe ?
Merci
Le moyen le plus simple d'empêcher le listage d'un répertoire via un navigateur est de mettre un document "index.htm" vide dans celui-ci. Juste avec les balises "<html></html>".
Re: Protéger acces direct à un repertoire
pas vraiment, le plus simple est d'ajouteraerie a écrit:seabird a écrit:D'ou ma question comment faire pour que seul le script passe ?
Merci
Le moyen le plus simple d'empêcher le listage d'un répertoire via un navigateur est de mettre un document "index.htm" vide dans celui-ci. Juste avec les balises "<html></html>".
- Code: Tout sélectionner
IndexIgnore *
A cool on parle de moi
. Non sans rire la discussion date de janvier, ce problème est résolu depuis. D'ailleurs il me semble que je l'ai dit... mais merci quand même pour les suggestions.
A plus tard pour de nouvelles aventures ....
A plus tard pour de nouvelles aventures ....
Re: Protéger acces direct à un repertoire
Leonick a écrit:pas vraiment, le plus simple est d'ajouterdans le htaccess de la racine, car cela fonctionnera pour tous les répertoires. Et pas le problème d'avoir oublié un index.htm sur un répertoire
- Code: Tout sélectionner
IndexIgnore *
A tiens, je connaissais pas ^^ merci pour l'info Leonick
seabird a écrit:A cool on parle de moi. Non sans rire la discussion date de janvier, ce problème est résolu depuis. D'ailleurs il me semble que je l'ai dit... mais merci quand même pour les suggestions.
A plus tard pour de nouvelles aventures ....
Pas de problèmes ^^, je suis tombé sur le sujet en cherchant je sais plus quoi qui n'avait rien à voir. J'ai répondu car cela permet d'avoir des suggestions différentes pour un problème donné, ce qui est toujours bon à prendre dans la mesure ou il existe toujours plusieurs réponses à une même problématique. Chaque développeur ayant une approche différente des problèmes. Perso je trouve la méthode du header un peu sauvage. L'avantage du ficher index.htm ou de la solution proposée par Leonick est que le serveur PHP n'est pas sollicité. Mais chacun voit midi à sa prote
++ la foule en délire !
12 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Contraintes d'emplacement du Sitemap
- Où placer son fichier Sitemap ? A la racine ?
- Comment protéger sa vie privée sur Internet
- Des remontées de Yahoo News dans les résultats web
- Utilisation des données WHOIS par Google
- Classement Xiti/1ère Position des outils de recherche en France - Août 2002
- Le code source du projet de recherche géographique est disponible
- La justice américaine conforte Google
- Trouver son checksum Google avec la toolbar (barre d'outils)
- Protégez-vous contre le nofollow
- empêcher accès direct à un .swf
- Accès direct à Google Agenda
- Direct-stats : accés refusé
- Accès direct aux page protégées
- Dossier d'images protégé en accès direct
- Source principale de visiteurs : accès direct !!!
- Accès direct = 3/110 Google Analytics, 93/120 Awstats
- Que recouvre ACCES DIRECT dans les stat Xiti ?
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum