2010-09-18 4 views
1

J'ai un répertoire images à la racine de mon site. Il inclut les images qui devraient être publiques, dans un sous-répertoire public, et les images dans un répertoire privé qui ne devraient être disponibles que pour les utilisateurs connectés. Le problème est qu'un utilisateur connecté peut copier l'URL img, la donner à un non-utilisateur et maintenant ils ont accès.Restreindre le code d'accès de l'image

J'ai déjà mis en place un fichier .htaccess pour empêcher le hotlinking. Je soupçonne que j'ai besoin de créer un contrôleur que l'image des serveurs, et vérifie les informations d'identification de l'utilisateur b4 desservant l'image, et utiliser .htaccess pour envoyer l'utilisateur à ce contrôleur s'ils essaient d'accéder aux images privées? Est-ce la meilleure pratique? Quelqu'un pourrait-il poster un code pour m'aider à mieux visualiser.

Répondre

2

Vous pouvez toujours utiliser PHP pour diffuser l'image à partir d'un chemin caché après avoir authentifié l'utilisateur. Créer un contrôleur appelé getimage.php que vous appelez comme:

<img src="getimage?imagename.jpg" /> 

Ensuite, dans le contrôleur:

<?php 
class Getimage extends Controller{ 
    function index(){ 
     //code to authenticate user goes here then... 
     header("Content-type: image/jpeg"); 
     if(file_exists(hiddenpath.$_GET['imgid'])){ 
      $img_handle = imagecreatefromjpeg(hiddenpath.$_GET['imgid']) or die(""); 
      ImageJpeg($img_handle); 
     } 
    } 
} 
?> 
Questions connexes