Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

Protéger acces direct à un repertoire

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
seabird
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 01 Déc 2003
Messages: 195

URL permanente de ce messagePosté le : Mer Jan 23, 2008 14:15    Sujet du message: 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.
Code:

  $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 16:00; édité 4 fois
 
seabird Visiter le site web du posteur
raljx
WRInaute accro
WRInaute accro

Inscrit le: 10 Juil 2006
Messages: 1079
Localisation: Alpes Maritimes

URL permanente de ce messagePosté le : Mer Jan 23, 2008 15:08    Sujet du message: Protéger acces direct à un repertoire

peut etre mettre les bons droits sur ton dossiers photos Wink comme supprimer l'attribut lecture et ecriture dans les permissions publiques (chmod 771) et supprimer l'htaccess
 
raljx Visiter le site web du posteur
seabird
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 01 Déc 2003
Messages: 195

URL permanente de ce messagePosté le : Mer Jan 23, 2008 15:31    Sujet du message: Protéger acces direct à un repertoire

raljx a écrit:
peut etre mettre les bons droits sur ton dossiers photos Wink comme 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:

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:
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.
 
seabird Visiter le site web du posteur
webmasterlamogere
WRInaute accro
WRInaute accro

Inscrit le: 17 Déc 2006
Messages: 1502
Localisation: urlrewriting.fr

URL permanente de ce messagePosté le : Mer Jan 23, 2008 16:05    Sujet du message: Protéger acces direct à un repertoire

il faut changer le content-type. Par exemple :
Code:
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 Visiter le site web du posteur
seabird
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 01 Déc 2003
Messages: 195

URL permanente de ce messagePosté le : Mer Jan 23, 2008 16:32    Sujet du message: Protéger acces direct à un repertoire

webmasterlamogere a écrit:
il faut changer le content-type. Par exemple :
Code:
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
 
seabird Visiter le site web du posteur
Leonick
WRInaute accro
WRInaute accro

Inscrit le: 08 Aoû 2004
Messages: 8645
Localisation: Val de Marne

URL permanente de ce messagePosté le : Mer Jan 23, 2008 17:31    Sujet du message: Protéger acces direct à un repertoire

webmasterlamogere a écrit:
il faut changer le content-type. Par exemple :
Code:
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
c'est à mon avis la seule possibilité.
 
Leonick Visiter le site web du posteur
aerie
Nouveau WRInaute

Inscrit le: 27 Juin 2008
Messages: 3

URL permanente de ce messagePosté le : Ven Juin 27, 2008 16:08    Sujet du message: 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>".
 
aerie
Leonick
WRInaute accro
WRInaute accro

Inscrit le: 08 Aoû 2004
Messages: 8645
Localisation: Val de Marne

URL permanente de ce messagePosté le : Ven Juin 27, 2008 16:29    Sujet du message: Re: Protéger acces direct à un repertoire

aerie 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>".
pas vraiment, le plus simple est d'ajouter
Code:
IndexIgnore *
dans 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
 
Leonick Visiter le site web du posteur
zeb
WRInaute passionné
WRInaute passionné

Inscrit le: 05 Déc 2004
Messages: 901

URL permanente de ce messagePosté le : Ven Juin 27, 2008 19:28    Sujet du message: Re: Protéger acces direct à un repertoire

seabird a écrit:
htaccess dans le répertoire avec : deny from all.

et avec allow + ip te ton serveur ton script il passe pas ? (je sais plus la syntaxe exacte)
 
zeb Visiter le site web du posteur
seabird
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 01 Déc 2003
Messages: 195

URL permanente de ce messagePosté le : Ven Juin 27, 2008 22:37    Sujet du message: Protéger acces direct à un repertoire

A cool on parle de moi Very Happy . 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 .... Wink
 
seabird Visiter le site web du posteur
aerie
Nouveau WRInaute

Inscrit le: 27 Juin 2008
Messages: 3

URL permanente de ce messagePosté le : Sam Juin 28, 2008 12:05    Sujet du message: Re: Protéger acces direct à un repertoire

Leonick a écrit:
pas vraiment, le plus simple est d'ajouter
Code:
IndexIgnore *
dans 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


A tiens, je connaissais pas ^^ merci pour l'info Leonick Wink
 
aerie
aerie
Nouveau WRInaute

Inscrit le: 27 Juin 2008
Messages: 3

URL permanente de ce messagePosté le : Sam Juin 28, 2008 12:14    Sujet du message: Protéger acces direct à un repertoire

seabird a écrit:
A cool on parle de moi Very Happy . 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 .... Wink


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 Wink et toutes les méthodes qui fonctionnent sont au final de bonnes méthodes ^^.

++ la foule en délire !
 
aerie
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort