Protection d'une video sur mon site.

Petit nouveau ! | 2 Messages

10 oct. 2012, 17:18

Bonjour,

Voila j'ai un petit souci avec ma vidéo.
La lecture de la vidéo est réservée aux membres enregistrés sur mon site. (urldusite/test.html)

J'ai créé une page avec une balise vidéo tout fonctionne correctement sauf que lorsque l'on clic droit sur la vidéo et fait "enregistrer le lien de la vidéo", on peut lire la vidéo grâce au lien directement. (urldusite/video/test.mp4)

J'ai donc voulu restreindre le dossier avec un htaccess mais cela bloque également le lecteur vidéo.

Code : Tout sélectionner

<FILE *.mp4> deny from all allow from 127.0.0.1 </FILE>
Je suis donc passer par un fichier php pour lire la source avec des header et readfile.

Code : Tout sélectionner

<video id="my_video_1" class="video-js vjs-default-skin" src="/video.php?url=test.mp4" controls="controls" width="640" height="360" poster="" data-setup="{}"> </video>

Code : Tout sélectionner

if ($user->guest) { header('Location: /index.php?option=com_content&view=article&id=124'); exit; } else{ $path= '../Videos/'.$_GET['url']; header('Content-type: video/mp4'); header('Content-Length: '.filesize($path)); // provide file size header("Expires: -1"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); readfile($path); exit; }
Jusque là tout est OK mis à part pour avancer la vidéo.
Mais étant donné que le format n'est pas supporté par tous les navigateurs j'aimerai mettre plusieurs sources en fonction du navigateur mais la ça devient un peu au delà de mes compétences de débutant.

Alors avant d'aller plus loin j'aimerai savoir si je suis parti dans le bon sens où s'il y a un manière plus simple de faire ? Avec le htaccess ou dans le php
Sinon comment faire pour choisir le format en fonction du navigateur en changeant les headers dans le fichier ?

Merci d'avance,
En espérant avoir été clair.

Bonne journée !

Eléphanteau du PHP | 35 Messages

10 oct. 2012, 17:36

Hello,

Pour protéger ta vidéo le plus simple est de passer par le PHP, avec un système de compte par exemple (ce que je suppose que tu fais).
Pour lire une vidéo sans te soucier du navigateur, ben malheureusement le plus simple est de passer par du flash... Ou tu peux détecter le navigateur en PHP, si il est récent tu balance avec la balise <video> la vidéo qui est supporté en fonction du navigateur (OGG, MP4, etc.) et pour les vieux navigateurs tu le fais à l'ancienne avec un player flash...

Pour détecter le navigateur (et beaucoup plus) en PHP tu as $_SERVER['HTTP_USER_AGENT']

cf. http://php.net/manual/fr/reserved.variables.server.php
La paresse est mère du génie.

ViPHP
xTG
ViPHP | 7331 Messages

10 oct. 2012, 18:59

Hello,

Pour protéger ta vidéo le plus simple est de passer par le PHP, avec un système de compte par exemple (ce que je suppose que tu fais).
Pour lire une vidéo sans te soucier du navigateur, ben malheureusement le plus simple est de passer par du flash... Ou tu peux détecter le navigateur en PHP, si il est récent tu balance avec la balise <video> la vidéo qui est supporté en fonction du navigateur (OGG, MP4, etc.) et pour les vieux navigateurs tu le fais à l'ancienne avec un player flash...

Pour détecter le navigateur (et beaucoup plus) en PHP tu as $_SERVER['HTTP_USER_AGENT']

cf. http://php.net/manual/fr/reserved.variables.server.php
C'est pas ça qui va protéger la vidéo...
Suffit de regarder le code source. ^^

@Cassandre42> que veux-tu dire par non supporté par tous les navigateurs ?
Si le navigateur ne possède pas de plugin il va proposer la vidéo en téléchargement.

Petit nouveau ! | 2 Messages

11 oct. 2012, 10:03

Merci de vos réponses :)

Ma page est bien protéger si on enregistre l'url et que l'on revient sans être connecté ça fonctionne. Mais si on enregistre le lien de la vidéo on peut y accéder directement si y a pas de htaccess.

Pour le format non supporté c'est du mp4. Le lecteur vidéo ne marche que sur chrome et sur firefox et IE je n'ai qu'un carré noir. En cherchant sur le web j'ai vu que le format mp4 n'est supporté que par chrome. J'ai regardé les autres formats mais à chaque fois il y a toujours un navigateur qui le gère pas. Et je n'ai pas vu de message pour télécharger la vidéo.
J'ai vu que la balise <video> permettait de mettre plusieurs sources.

Code : Tout sélectionner

<video width="400" height="222" controls="controls"> <source src="video.mp4" type="video/mp4" /> <source src="video.webm" type="video/webm" /> <source src="video.ogv" type="video/ogg" /> Ici l'alternative à la vidéo : un lien de téléchargement, un message, etc. </video>
mais étant donné que je lis la video avec du php pour passer outre le htaccess ça n'a pas l'air de marcher.

j'ai essayé ça.

Code : Tout sélectionner

<video id="my_video_1" class="video-js vjs-default-skin" controls="controls" width="640" height="360" poster="" data-setup="{}"> <source src="/video.php?url=test.mp4" type="video/mp4" /> <source src="/video2.php?url=test.WebM" type="video/webm" /> </video>
mais ça marche pas. Je vais essayé le flash mais il me semble que la vidéo était pas terrible dans se format avec un poids raisonnable. Mais si cela reste la seule solution.

Merci

Invité
Invité n'ayant pas de compte PHPfrance

12 oct. 2012, 11:26

Oui pas évident de protéger une vidéo et d'interdire un utilisateur de la télécharger. J'avais besoin de trouver un moyen également, je pensais trouver une solution PHP mais pas trouvé. A chaque fois on peut trouver que quoi prendre la vidéo en éditer la source du code.

lephp
Invité n'ayant pas de compte PHPfrance

28 sept. 2019, 14:03

Impossible, car si il fait Ctrl+U pour afficher le code, il clique sur le lien de la vidéo, il fait Télécharger!
Donc aucun moyen!