Limiter le visionnage de vidéo sur un site à une seule fois

Petit nouveau ! | 9 Messages

12 janv. 2008, 12:50

Bonjour,

Je fais un site pour aider quelqu'un, qui souhaite mettre des vidéos sur son site. Jusqu'ici aucun souci. Sauf qu'il veut que les vidéos ne soient visionnables qu'une seule fois.

Là, je me dis, que ne comprenant pas grand chose dans les possibilités du php, je vais faire quelque chose que je comprends.

Je me dis donc :
dans la table utilisateurs, tu vas rajouter les vidéos, et mettre un 1 ou un 0 en fonction de ceux qui ont le droit de voir la vidéo ou pas. Dans les pages réservées aux utilisateurs avec les vidéos disponibles, je pensais mettre un formulaire et à chaque fois que la personne clique sur le bouton, ça me change le 1 en 0, et la fois d'après, la personne ne peut plus voir la vidéo.

Maintenant, c'est la théorie. En pratique, je ne vois pas du tout comment faire ça.

- quelle valeur donner à ma colonne dans la table pour que ce soit soit un 1 ou un 0 ?
- du côté formulaire, j'avoue être un peu bloqué, car je ne vois pas comment présenter ça.

En gros, j'y réfléchis depuis maintenant quelques semaines et mes connaissances sont bien trop peu importantes.

Comment procéder ?

Et ...

Suis je vers la bonne direction ?

Pour info, toute la partie identification et accès aux pages réservées est déjà prête et fonctionnelle... masi passer à une étape plus conceptuelle pour moi est un peu différente....

Si quelqu'un pouvait m'aider...


Merci
Guyomeparis

ViPHP
ViPHP | 1996 Messages

12 janv. 2008, 13:45

J'ai une idée :
Utilise les variables de session PHP lors de la validation du login + MDP
SI login et de mot de passe vérifié {
$_SESSION["utilisateurs"] = TRUE;
$_SESSION["utilisateurs_login"] = $login;
$_SESSION["utilisateurs_ID"] = $id
//avec $id et $login en sorties de ta base
}
Ensuite tu peux lors de la page d'affichage mettre ton 1 si visualisation
if ($_SESSION["utilisateurs"])
{
//... requête d'interrogation de ta base
$requete = "SELECT `visionnage_video_1` FROM `table_utilisateur` WHERE `ID` = '".$_SESSION["utilisateurs_ID"]."'";
$resultat_sql = mysql_query ($requete);
$resultat= mysql_fecth_assoc($resultat_sql);

if ($resultat["visionnage_video_1"] != 1)
{
//affichage Video
$requete = "UPDATE `table_utilisateur` SET `visionnage_video_1`='1' WHERE `ID` = '".$_SESSION["utilisateurs_ID"]."'";
mysql_query ($requete);
}
else
{
//pas d'affichage video
}

}
Ca c'est bien quand tu as peu de vidéos car sinon tu va avoir plein de colonne dans ta table.
Je pense qu'il est préférable de créer un autre table avec toutes les vidéo visionné par l'utilisateur. Ensuite tu demandes à lister cette table en fonction de l'utilisateur et de la vidéo demandée. Si le nombre de retour est 0 : visionnage+mise à jour sinon pas visionnage.
if ($_SESSION["utilisateurs"])
{
//... requête d'interrogation de ta base
$requete = "SELECT `nom_video` FROM `table_video` WHERE `ID` = '".$_SESSION["utilisateurs_ID"]."' AND `nom_video` = '".$video."'";
$resultat_sql = mysql_query ($requete);
if (mysql_num_rows($resultat_sql) != '0')
{
//affichage Video
$requete = "INSERT INTO `table_video` (`nom_video`,`ID`) VALUES ('$video','".$_SESSION["utilisateurs_ID"]."')";
mysql_query ($requete);
}
else
{
//pas d'affichage video
}

}
Modifié en dernier par Aureusms le 12 janv. 2008, 13:45, modifié 1 fois.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

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

12 janv. 2008, 13:45

C'est un peu plus qu'une colonne à rajouter... En effet, dans la mesure où tu vas avoir N utilisateurs et N vidéos, il est plus sage de partir sur une table de liaison qui contiendra l'id de l'utilisateur et l'id de la vidéo (ou son chemin, son nom, bref, ce qui permet de l'identifier :)) et plus d'info si nécessaire, genre un compteur de visite par l'utilisateur sur la vidéo.

L'idée serait alors d'insérer dans cette table l'id de l'utilisateur et de la vidéo solicitée à chaque fois que celui-ci demande à voir une vidéo. Un simple select dans cette table te permettra ensuite de t'assurer que l'utilisateur n'a pas encore consultée la vidéo souhaitée (si aucun résultat n'est retourné alors l'utilisateur peut voir la vidéo et on insère son id dans la table, si un résultat est retourné, on l'envoi promener :))

Tu peux bien sur procéder avec des colonnes dans la table user, mais ca sera une vrai galère à maintenir, puisqu'il te faudra ajouter une nouvelle colonne à chaque nouvelle vidéo disponible... donc à éviter à moins qu'il n'y ait un nombre limité (et très faible de vidéos). Dans ce cas, pour ton 1 ou 0, un champ de type "enum" est sans doute le plus pratique, mais un char(1) ou un tinyint fonctionneraient tout aussi bien :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 9 Messages

12 avr. 2008, 17:25

Bonjour,

Que mon message initial posté est vieux. J'espère bien que vous n'avez pas cru que je prenais les infos données sans remercier.

Merci alors !

En fait, je vais voux expliquer rapidement ce que j'ai fait :

Pour limiter le visionnage j'ai créé un champ dans ma base de données que j'incrémente dès lors que la personne se connecte sur la page.
de 0 ça passe à 1 puis à 2. A 2 la personne n'a plus le droit de voir la page.

C'est vraiment bien et ça marche masi c'est grace à vous deux.

Si vous voulez je peux mettre ma page php !

Merci encore

Guillaume

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Mammouth du PHP | 558 Messages

12 avr. 2008, 20:01

Je n'ai pas compris une chose.
La question que tu dois te poser en tant que webmaster c'est qu'est-ce que cela va m'apporté si les membres ne peuvent voir tes vidéos qu'une seul fois tu risque de les perdre et ce a jamais.
Donc promos plus importantes.
Met toi a la place de l'utilisateur qu'une vidéo lui a vraiment plus et a envie de la revoir.
Comment fera t-il ?
Et bien ce qui va se passer soit il va recréer un nouveau compte (il est impossible de l'empêcher).
Sois dégoûter de ne pas pouvoir revoir cette vidéo il partira en te faisant une sale pub dans un cas comme dans l'autre et passez moi l'expression tu l'as dans l'os...
Si tu met une barrière de paiement tu l'as également dans l'os si celui-ci recréer un new compte.
Ou repère la page d’arriver après le paiement il peut voir ta vidéo.
De plus il est possible de savoir ou sont placé tes vidéos et il peut la télécharger sur son hd.
Voila pourquoi je n'ai pas très bien compris.
De plus n'oublie pas que la vidéo est également chargée dans le fichier temporaire et qu'il est possible d'aller la chercher.
Je crois que je vais arrêter la car je commence a devenir un peu lourds et la liste des méthodes est encore longue...

Petit nouveau ! | 9 Messages

14 avr. 2008, 13:58

Je comprends bien où tu veux en venir.

Les vidéos sont en fait des "fiches de cours" et la personne que j'aide pour son site, ne souhaite pas qu'une seule personne ne pie et que tout le monde ait accès à sa vidéo.

En ec qui concerne les copiers coller du nom de la page, en fait les gens n'y ont pas accès s'ils ne sont pas loggués !

S'il s'ont loggués et qu'ils veulent regarder la vidéo et qu'ils l'ont déjà vu deux fois, la page s'affiche mais pas la vidéo (requête qui va chercher le nombre de fois où ça a été visionné, si c'est deux, c'est pas possible).

J'ai juste créé une page administrateur qui lui permet de remettre les visionnages à 0 ou 1 si quelqu'un n' pas pu la voir ou qu'il y a eu un problème.

Maintenant quant à l'enregistrement de la vidéo. En effet, c'est toujous possible, mais le fichier étant en flv ça simplifie pas mal de choses. Tout le monde ne saura pas comment faire.

Par ailleurs, les personnes qui auront accès à ce site ne sont pas nombreux du tout.

Mais en tout cas, je prends bien en compte tes remarques qui sont tout à fait judicieuses, et les note dans un petit coin.

Merci