Régulièrement, on rencontre le besoin de disposer d'une zone fermée pour les membres du site, où certains fichiers sont proposés au téléchargement et ne doivent être accessibles qu'à ces membres.
Choisir une extension comme un gestionnaire de téléchargement est souvent surdimensionnée, un simple lien dans l'article ou un champ personnalisé sont plus que suffisant - mais cette solution pose un gros problème : si le lien de téléchargement exact est connu, le fichier correspondant peut également être téléchargé sans authentification et partagé par tous !
Pour contourner ce problème, je vous propose un simple script php qui, associé à un complément au fichier .htaccess, veille à ce que certains répertoires ne soient accessibles qu'aux utilisateurs connectés. Pratique : cette solution ne nécessite aucune adaptation des fichiers ou des liens existants, elle peut être intégrée sans problème dans des projets existants.
Première Étape : le script PHP
Cette partie de la solution est un simple script PHP qui :
Vous trouverez le code du script sur Github !
Il existe une version du script pour Joomla 3
https://gist.github.com/SniperSister...d4682e4fd36498
et une version du script pour Joomla 4
https://gist.github.com/SniperSister...17bf14fb978336
Deuxième Étape : la magie du .htaccess
Comment réorienter les appels vers notre script ? C'est là que les règles de réécriture du .htaccess entrent en jeu ! Ces règles nous permettent de rediriger tous les appels vers un certain dossier, dans l'exemple /images/downloads, vers le script PHP readmedia.php :
Le serveur web se charge donc ici pour nous du dur labeur et notre site Joomla peut rester inchangé.
Source : djumla.de
Choisir une extension comme un gestionnaire de téléchargement est souvent surdimensionnée, un simple lien dans l'article ou un champ personnalisé sont plus que suffisant - mais cette solution pose un gros problème : si le lien de téléchargement exact est connu, le fichier correspondant peut également être téléchargé sans authentification et partagé par tous !
Pour contourner ce problème, je vous propose un simple script php qui, associé à un complément au fichier .htaccess, veille à ce que certains répertoires ne soient accessibles qu'aux utilisateurs connectés. Pratique : cette solution ne nécessite aucune adaptation des fichiers ou des liens existants, elle peut être intégrée sans problème dans des projets existants.
Première Étape : le script PHP
Cette partie de la solution est un simple script PHP qui :
- Charge le framework Joomla
- Vérifie si l'utilisateur est connecté
- Extrait le fichier correspondant de l'URL
- Envoie le fichier au navigateur.
- Si l'utilisateur n'est pas connecté, un 403 est renvoyé.
Vous trouverez le code du script sur Github !
Il existe une version du script pour Joomla 3
https://gist.github.com/SniperSister...d4682e4fd36498
et une version du script pour Joomla 4
https://gist.github.com/SniperSister...17bf14fb978336
Deuxième Étape : la magie du .htaccess
Comment réorienter les appels vers notre script ? C'est là que les règles de réécriture du .htaccess entrent en jeu ! Ces règles nous permettent de rediriger tous les appels vers un certain dossier, dans l'exemple /images/downloads, vers le script PHP readmedia.php :
Code:
RewriteRule ^images\/downloads\/.*$ readmedia.php [L].
Source : djumla.de
Commentaire