Bonjour,
Je suis entraine développer un système de musique sur mon site. Pour des raison de téléchargements j'ai généré un token aléatoire et que j'ai mis dans la session de l'utilisateur. Se token change à chaque changement de page.

Voici le débug de la session :

array(
    'Config' => array(
        'userAgent' => 'xxxx',
        'time' => (int) 1393027548,
        'countdown' => (int) 10,
        'accessToken' => 'ee6d9322b53c399c4088274b16bdc0da'
    )
)

J'ai mis un fichier .htacess dans le dossier audios.

localhost:8888/files/audios/1/1.mp3?token=ee6d9322b53c399c4088274b16bdc0da&time=1393027548

Le problème est que je veux que le fichier .htaccess vérifie les paramètres de l'url et vérifie que ceux-ci soit identique à la session. Si non tu bloque.

Ça fait longtemps que je veux fairer un telle système et j'y n'arrive pas.

Merci de votre aide.

8 réponses


Bonsoir.
Dis moi, le fichier de musique, c'est uniquement pour donner accès au téléchargement ou aussi pour l'écoute du fichier sur ton site ?

lakamark
Auteur

Pour les deux

Il te suffit alors de faire un .htaccess qui empêche toute navigation par l'utilisateur dans le dossier files et pour le téléchargement du fichier, tu peux faire quelque chose comme ça :
Dans ton controller

public function download($id = null){
        if($this->request->is('post') && !empty($id)){
            $file = $this->Musique->find('first', array('conditions' => array('id' => $id)));
            $this->response->file($file'Musique']'path'], array('download' => true, 'name' => $file'Musique']'name']));
            return $this->response->file;
        } else {
            trow new MethodNotAllowedException();
        }
    }

Dans la vue

<?= $this->Form->postButton('Télécharger le fichier', array('action' => 'download', 'id' => $musique'Musique']'id'])); ?>

De cette manière, l'utilisateur peut télécharger le fichier sans voir le chemin du fichier, étant donné qu'il ne peut voir que l'ID de l'enregistrement dans le code source et dès qu'il clique sur le bouton, ça lui ouvre l'explorateur tout en restant sur la page actuelle et sans charger une autre page.
Du coup, tu permets le téléchargement du/des fichier(s), sans lui donner la possibilité de connaitre le chemin de fichier et si en plus comme je te l'ai dit plus haut tu sécurise le contenu du dossier sur la navigation, ça te permet une double sécurité.

lakamark
Auteur

Pour écouter seulement je fait quoi?

Comment ça pour écouter seulement tu fais quoi ?
Tu ne sais pas utiliser les balises audio ?

lakamark
Auteur

Je veux que les gens écoute la musique et si il copie cette url :
localhost:8888/files/audios/1/1.mp3?token=ee6d9322b53c399c4088274b16bdc0da&time=1393027548

Je veux vérifier les paramètres et voir si il sons bonne avec la session de l'utilisateur si non tu bloque l'accès

Je sais utiliser les balise audios

Je t'ai déjà donné la réponse à cette question.
Je veux bien t'aider et te mettre sur la voie, mais je ne vais quand même pas coder ton site à ta place.

lakamark
Auteur

Dans mon fichier .htacces est je met
cette commende :

deny from all

Pour bloquer les navigation dans le fichier file par exemple