Script pour attribuer un "identifiant" à des vidéos - PHP - Programmation
Marsh Posté le 05-01-2007 à 12:34:00
Personne pour m'aider ? Vous ne connaissez pas des tutoriaux ou si quelqu'un pouvait me détailler les étapes du script ainsi que les fonctions correspondantes, ce serait déjà sympa !
Marsh Posté le 05-01-2007 à 12:51:05
ben pas dur :
- tu nommes chaque fichier vidéo avec un identifiant unique (par ex, le préfixe "videos" + le md5 du nom du fichier originel)
- sur la page qui référence toutes les vidéos, tu fais une boucle qui parcourt le répertoire contenant les vidéos pouvant être lue et génère la mise en page avec pour chaque vidéo, un lien hypertexte contenant le nom du fichier vidéo (ex : href="voir.php?vid=video158ffc1affcd51de6bbc347c12e3a41.mpg" ).
- sur la page qui lie le fichier, on récupère via $_GET['vid'] le nom du ficheir à lire.
Marsh Posté le 05-01-2007 à 14:23:02
par contre ... c'est quoi le md5 du nom du fichier originel stp ?
Marsh Posté le 05-01-2007 à 15:21:23
ben md5(NomDuFichier.Ext);
où NomDuFichier.Ext représente le nom d'un fichier vidéo avec son extension (mais sans le chemin d'accès)...
Marsh Posté le 05-01-2007 à 16:05:33
donc par exemple, si j'ai bien compris le md5 d'une vidéo qui sera à http://monsite.com/vidéo002.flv ce sera vidéo002.flv ??
Marsh Posté le 05-01-2007 à 16:34:03
mais non, md5(), c'est une fonction de php qui donne le hashage MD5 d'un chaîne de caractères.
Marsh Posté le 05-01-2007 à 16:40:16
ah merde j'ai un peu du mal avec ça tu pourrais (si sa ne te dérange pas) me donner le code qui correspond à un md5 stp ?
Marsh Posté le 05-01-2007 à 16:43:30
bah lit la doc de php : http://fr.php.net/manual/fr/function.md5.php
Marsh Posté le 05-01-2007 à 17:32:04
bon franchement je sèche ... je suis désolé de te demander sa mais, est ce que, si le code n'est pas trop long, tu pourrais me rédiger un exemple de code avec comme vidéo, par exemple test.flv ? Je sais que c'est beaucoup demander donc je comprendrais si tu refuses. Merci d'avance !!
Marsh Posté le 05-01-2007 à 17:40:33
Je vais pas te faire le code car il faut que tu apprennes par toi-même. Pour l'instant, tu n'as pas posté l'ombre d'un bout de code. Donc ton code php va contenir comme fonctions :
- opendir() http://fr.php.net/manual/fr/function.opendir.php
- md5()
- et je pense aussi basename() http://fr.php.net/manual/fr/function.basename.php
tu regardes les codes sources d'ex d'utilisation de ces fonctions qui sont donnés en dessous de la description de la fonction et pis zou, tu reviens avec le code que t'auras déjà fait. Je t'ai déjà donné l'algo (cf post plus haut)...
Marsh Posté le 05-01-2007 à 17:45:30
ok c gentil merci à toi je vais bosser la dessus ! eske tu pourras "corriger" mes erreurs ? je n'ai pas posté l'ombre d'un bout de code car je n'avais aucune idée de ce que je devrais utiliser ! merci encore pour ton aide
Marsh Posté le 05-01-2007 à 17:46:07
pour info, tu devrais retirer ton adresse e-mail en clair de ton site, sinon, tu vas de faire spammer...
Marsh Posté le 05-01-2007 à 17:59:56
ben pour reprendre une célèbre expression : "je suis trop vieux pour ces conneries"
Marsh Posté le 05-01-2007 à 18:19:55
je parle pas du contenu !!!! je parle du design et de l'arborescence du site en général !
Marsh Posté le 05-01-2007 à 18:23:16
Perso, je suis pas fan du noir en fond mais bon, ça colle avec le style du contenu.
Par contre, ça risque de devenir le bazar pour s'y retrouver quand il va y avoir beaucoup de vidéos.
Marsh Posté le 05-01-2007 à 18:26:13
oué c'est clair et encore j'en ai supprimé pas mal ! mais justement la avec le script dont tu m'as donné les clés, je devrais avoir moins de problèmes à chaque fois que je veux mettre une nouvelle vidéo en ligne !
Marsh Posté le 05-01-2007 à 18:37:56
désolé de t'emmerder encore, mais je voudrais savoir comment générer le md5 d'un nom de fichier, car là j'ai à peu près compris à quoi il sert, et j'ai testé l'exemple qui est sur http://fr.php.net/manual/fr/function.md5.php mais j'ai essayé de changer le nom et ça n'affichait rien !
Marsh Posté le 05-01-2007 à 20:40:44
$Resultat = md5($Chaine);
Dans $Resultat, tu vas avoir une chaîne de 32 caractères (des chiffres et des lettres de a à f).
Va lire un peu ce qu'est du hashage (md5, sha1, crc32...).
Marsh Posté le 05-01-2007 à 20:47:01
Faudrait salter le hash aussi, parce que si le hash n'est pas salté si 2 personnes uploadent des vidéos avec le même nom (ce qui va arriver, très vite) le truc va te pêter à la yeule
Marsh Posté le 05-01-2007 à 22:20:05
sa y est g compris le principe du hashage et du "salage" ! comment faire pour salter un nom de fichier (ici en l'occurrence une vidéo)
Marsh Posté le 05-01-2007 à 22:22:48
merci beaucoup rufo je commence tout doucement à comprendre le principe ! Avec votre aide je vais y arriver ! je voudrais pour continuer savoir quel type de boucle je dois créer : en effet je sais créer une boucle avec while, etc .. mais je ne sais pas comment faire pour qu'elle "inspecte" le contenu d'un répertoire ! Rectification : j'ai réussi à faire cela avec la fonction $vid = dir("test/video/" ); mais je ne sais pas quoi écrire après .Encore merci !
Marsh Posté le 05-01-2007 à 22:41:58
max59166 a écrit : sa y est g compris le principe du hashage et du "salage" ! comment faire pour salter un nom de fichier (ici en l'occurrence une vidéo) |
Il faut générer une chaîne de caractères aléatoire à chaque coup.
Un truc genre
Code :
|
C'est pas nécessairement exactement ça (je ne fais pas beaucoup de php), mais ça devrait ressembler.
Puis tu génères un salt pour chaque fichier, tu concatènes le salt et le nom de fichier, et tu hash le tout.
max59166 a écrit : merci beaucoup rufo je commence tout doucement à comprendre le principe ! Avec votre aide je vais y arriver ! je voudrais pour continuer savoir quel type de boucle je dois créer : en effet je sais créer une boucle avec while, etc .. mais je ne sais pas comment faire pour qu'elle "inspecte" le contenu d'un répertoire ! Encore merci ! |
La réponse t'a déjà été donnée par rufo: opendir
Relis le thread en entier, tu as apparement raté quelques infos.
Marsh Posté le 05-01-2007 à 22:57:28
sinon, plutôt que du rand() on peut concaténer dans le nom du fichier le timestamp du moment auquel le fichier a été uploadé
Marsh Posté le 05-01-2007 à 23:00:20
je voudrais savoir où je dois placer le code générant une chaîne de caractères aléatoires ?
celui-ci :
1.
function getSalt() {
2.
$salt = array();
3.
for($i = 0; $i < 6 ; $i++) { // 6 devrait être suffisant pour salter
4.
$salt[] = chr(mt_rand(32, 126);
5.
}
6.
return implode('', $salt);
7.
}
Marsh Posté le 05-01-2007 à 23:07:00
rufo a écrit : sinon, plutôt que du rand() on peut concaténer dans le nom du fichier le timestamp du moment auquel le fichier a été uploadé |
Le problème c'est que les timestamps UNIX ont une résolution à la seconde, il y a peu de chances pour que deux fichiers portant le même nom soient uploadés à la même seconde, mais si c'est le cas on se mange une solution, la collision est largement moins probable avec une chaîne aléatoire
max59166 a écrit : je voudrais savoir où je dois placer le code générant une chaîne de caractères aléatoires ? |
euuuh... où tu veux, c'est juste une définition de fonction
Tu sais vraiment coder en php
Marsh Posté le 06-01-2007 à 08:59:25
si je me souviens bien, le générateur de nb aléatoires est initialisé avec l'heure système : donc si 2 fichiers sont uploadés au même moment, y'a de bonnes chances que la séquence pseudo aléatoire générée soit la même, non?
Et puis franchement, la proba que 2 fichiers de même nom soient uploadés à la même seconde, faut franchement pas avoir de bol! Son site, c'est pas YouTube non plus, hein! Y'a pas un tel trafique!...
Bon maintenant, s'il le faut vraiment, on met comme nom de fichier :
NomFichier+TailleFichier+Timestamp.ext -> le md5() de ça, ça fera plus de collision...
Marsh Posté le 06-01-2007 à 09:11:01
rufo a écrit : si je me souviens bien, le générateur de nb aléatoires est initialisé avec l'heure système : donc si 2 fichiers sont uploadés au même moment, y'a de bonnes chances que la séquence pseudo aléatoire générée soit la même, non? |
bon j'ai du mal à mareequoter depuis mon téléphone amord je vais répondre d'un bloc
1. Effectrivement tu as raison, j'avais oublié que deux accès concurrents à des pages php créaient deux "programmes" exécutés en // donc initialisait deux générateurs aléatoires, mes excuses, tu as très probablement raison.
2. Bien sûr que ce n'est pas youtube, mais ce genre de conneries c'est typiquement ceux sur laquelle tu te manges un Murphy très rapidement, surtout quand "faut vraiment pas avoir de bol"
Et si peu de chances qu'il y ait que ça arrive, la probabilité est non nulle et ça reste un bug qui n'attend qu'une chose: pêter à la tronche de l'admin
3. Yup ça me semble pas mal
Marsh Posté le 06-01-2007 à 10:31:00
Citation : Tu sais vraiment coder en php |
Je suis débutant en PHP ! La plupart du temps je prends des codes que j'adapte pour mon site : je suis capable de les personnaliser, mais très peu souvent capable de les refaire, et c'est pourquoi j'ai beaucoup de mal ici ! Mais je vous remercie encore de m'aider car si je n'arrive pas à bout de ce script, je vais vraiment être très emmerdé !
Marsh Posté le 06-01-2007 à 10:37:49
ce que je ne comprends pas bien c'est est-ce que je dois renommer moi-même mes fichiers en NomFichier+TailleFichier+Timestamp.ext -> le md5() ou est ce qu'il va exister un script qui le fera tout seul ?
Marsh Posté le 06-01-2007 à 12:11:02
Ah j'ai trouvé le moyen pour créer une boucle qui scanne le répertoire dans lequel elle se trouve ! Qu'est-ce que vous pensez de ça ?
<?php
$handle = @opendir("." ); //Ouverture du répertoire et récupération du pointeur
while ($file = @readdir($handle)) { //On scanne le répertoire
echo '<a href="mapage.php?vid='.$file.'">';//génération du lien
}
@closedir($handle);
?>
Marsh Posté le 07-01-2007 à 12:38:22
max59166 a écrit :
La plupart du temps je prends des codes que j'adapte pour mon site : je suis capable de les personnaliser |
Ben c'est naze, ça apprend ni à coder ni à faire des trucs correctement
Marsh Posté le 07-01-2007 à 13:06:31
je sais que c'est pas super, mais à la base j'ai créé un site pour que tous mes amis puissent alors voir ce qu'on fait, et je n'ai pas vraiment le temps d'apprendre le php ... par contre je maîtrise bien le html, c'est déjà ça, mais dans des scripts assez complexes comme celui que j'essaye de faire, je n'ai aucune chance sans aide ....
Marsh Posté le 07-01-2007 à 13:10:27
tu peux quand même regarder le bout de code que j'ai posté stp ?
Marsh Posté le 07-01-2007 à 13:12:31
Faut pas mettre les "@"
Ca sert à "effacer" les erreur, et PHP ne produit déjà pas assez d'erreurs
Marsh Posté le 05-01-2007 à 11:20:50
Bonjour à tous !
J'ai créé il y a quelques années un site web ou j'héberge des vidéos faites avec des amis http://lescascadeurs.free.fr/. Le problème est que dans la page de vidéos http://lescascadeurs.free.fr/lesmeilleurs.php, à chaque fois que je veux mettre en ligne une nouvelle vidéo, je dois créer une page .htm avec le lecteur flash dessus, puis mettre une image et un lien sur la page http://lescascadeurs.free.fr/lesmeilleurs.php, de sorte que lorsqu'on clique sur "Voir la vidéo", la page .htm avec le lecteur flash s'ouvre en pop-up.
Le problème est que j'en ai marre de devoir toujours créer cette page .htm à chaque fois que je veux mettre en ligne une nouvelle vidéo ! Je voudrais, pour chaque vidéo, attribuer un "identifiant" de sorte que l'adresse soit du type suivant : http://monsite.fr/vidéo.php?watch=15
Je n'ai aucune idée du script à réaliser mais je pense que ça ne doit pas être bien difficile. J'ai effectué des recherches sur google mais je n'ai rien trouvé car je ne trouvais pas les mots correspondants à ma recherche.
Merci d'avance pour votre aide !!