auotisier l'ecoute d'un mp3 mais pas le telechargement

Mammouth du PHP | 620 Messages

18 août 2010, 08:46

Bonjour,
est-ce possible d'autoriser l'ecoute d'un fichier mp3 sur un site internet mais d'en interdire le telechargement ?

Mammouth du PHP | 686 Messages

18 août 2010, 09:24

Utilise un petit lecteur flash

http://flash-mp3-player.net/

Mammouth du PHP | 620 Messages

18 août 2010, 09:29

oui mais si l'internaute trouve le lien ou est le fichier mp3 il poura donc le telecharger. Non ?

Mammouth du PHP | 686 Messages

18 août 2010, 09:33

Oui il le pourra, après tu peux protéger l'accès a ton repertoire ou il y a tes mp3 par un fichier .htacces, ou sinon tu crypte tes url par exemple

lecteur.php?mp3=ar4fgyr56hhj43gh6

Enfin c'est juste un exemple, tu as pas mal de fonction qui peuvent te crypter des variables

Voici un exemple
<?php
function chiffre($texte)
  {
                $key = 'cle_choisie_pour_encrypter_et_decrypter';
	$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
	$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
	return base64_encode(mcrypt_encrypt(MCRYPT_XTEA, $key, $texte, MCRYPT_MODE_ECB, $iv));
  } 

function dechiffre($texte)
  {
	$texte = base64_decode($texte);
                $key = 'cle_choisie_pour_encrypter_et_decrypter';
	$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
	$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
	$decrypt = mcrypt_decrypt(MCRYPT_XTEA, $key, $texte, MCRYPT_MODE_ECB, $iv);
	return $decrypt;
  } 
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 août 2010, 11:44

Tu peux effectivement interdire l'accès au répertoire qui contient tes fichiers aux utilisateurs avec un fichier htaccess. Ceci empêche le téléchargement du fichier tout en te laissant y accéder pour le lire avec php.

Cependant, quoi que tu fasses pour protéger tes fichiers, il faut savoir qu'il sera toujours possible de trouver une solution (plus ou moins complexe) pour pouvoir l'enregistrer (quitte à simplement enregistrer le flux audio pendant qu'il est diffusé).

Les protections que tu mettras en place ne pourront donc que limiter les risques téléchargement (ce qui en soit n'est pas négligeable), mais il n'y a pas de solution de protection absolue. Ensuite tout dépend du "niveau de sécurité" de tes documents. D'une manière générale, "si cela ne doit pas être récupéré, cela ne doit pas être diffusé" :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 5462 Messages

18 août 2010, 21:44

sinon en streaming via un CDn mais c'est plus compliqué

Mammouth du PHP | 620 Messages

19 août 2010, 12:09

ok bon alors si sur mon site j'ai par exemple mes fichiers mp3 qui s'affiche via un dewplayer.
     <object type="application/x-shockwave-flash" data="dewplayer.swf?mp3=<?php echo $value['lien']; ?>" width="200" height="20" id="dewplayer">
            <param name="wmode" value="transparent" />
            <param name="movie" value="dewplayer.swf?mp3=<?php echo $value['lien']; ?>" />
        </object> 
En regardant dans le code source j'ai bien le lien et le chemin du mp3 qui s'affiche et grace a dewplayer l'internaute peut ecouter le fichier.

J'ai essayé de comprendre ta méthode sylvaing mais comme je dois la mettre en application avec mon code afin que les liens ne soit pas visible et que le telechargement soit empeché ?

Mammouth du PHP | 686 Messages

19 août 2010, 14:40

Dans ta page php

ou ya le lecteur
<?php
function chiffre($texte)
  {
                $key = 'cle_choisie_pour_encrypter_et_decrypter';
        $iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        return base64_encode(mcrypt_encrypt(MCRYPT_XTEA, $key, $texte, MCRYPT_MODE_ECB, $iv));
  } 
$fichier = "/mp3/lemp3aecouter.mp3";

?>
<object type="application/x-shockwave-flash" data="player_mp3_maxi.swf" width="200" height="20">
                    <param name="movie" value="player_mp3_maxi.swf" />
                    <param name="FlashVars" value="mp3=/player.php?id=<?php echo chiffre($fichier);?>" />
</object>
Dans le fichier player.php
function dechiffre($texte)
  {
        $texte = base64_decode($texte);
                $key = 'cle_choisie_pour_encrypter_et_decrypter';
        $iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $decrypt = mcrypt_decrypt(MCRYPT_XTEA, $key, $texte, MCRYPT_MODE_ECB, $iv);
        return $decrypt;
  } 
$file = $_GET['id'];
$file = dechiffre($file); 
readfile($file);
A toi d'adapter ensuite ...