2010-05-09 13 views
2

J'ai un site PHP avec un système de connexion, et j'essaie de créer une fonctionnalité où seuls des noms d'utilisateur spécifiques peuvent afficher des images particulières. Je pense que ce que j'essaie de faire est plus impliqué que de simplement changer le fichier .htaccess, car a) cela n'aidera pas à discerner entre les utilisateurs qui ne sont pas autorisés à voir l'image, et b) si quelqu'un entre dans le URL exacte de l'image ("directory/images/photos/230ru0q0238rn230nd_asdi0nqn8.jpg") ils peuvent toujours voir l'image (puisqu'il s'agit d'un fichier physique dans le répertoire, et non de texte dans une BD, etc.). Encore une fois, restreindre via .htaccess limiterait le répertoire dans son ensemble, ou tous les fichiers dedans, donc je ne peux pas comprendre comment cela fonctionnerait. Idéalement, toutes les images seraient bloquées en essayant d'y accéder directement via leur URL directe, et l'image apparaîtrait seulement entre les balises <img> si la session/nom d'utilisateur de l'utilisateur est valide, sinon elles recevraient un message d'erreur.Autorisations d'affichage d'image dans PHP/Apache

J'ai entendu le terme ACL mais je ne suis pas sûr que cela soit lié à ce que j'essaie de faire.

Répondre

0

Ce que vous pouvez faire est de créer un contexte simple qui génère une image sous forme de flux. L'image qui est sortie dépend de l'identifiant (ou un identifiant) par exemple:

viewImages.php?imageId=234643 

vérifie viewImages.php si l'utilisateur est connecté/autorisé (via $ _SESSION le plus probable), et le cas échéant, il envoie la image au navigateur en utilisant éventuellement readfile.

1

L'autorisation et le schéma ACL peut varier, mais pour atteindre l'objectif de base de votre question:

  • mettre les images dans un répertoire accessible non Web que PHP peut SILL lire.
  • Utilisez .htaccess pour réécrire toutes les demandes à un script (cela peut éliminer l'étape précédente, en supposant qu'il refuse tout accès direct aux fichiers).
  • Confirmez que l'utilisateur demandeur peut afficher l'image demandée. Utilisez readfile() (ou une variété d'autres fonctions) pour sortir l'image.