Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 20h30   #1
Invité régulier
 
Étudiant
Inscription : décembre 2006
Messages : 72
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 72
Points : 7
Points : 7
Envoyer un message via MSN à nekcorp
Par défaut php pour lecteur flash

bonsoir,

Voilà je suis entrain d'insérer sur mon site web un lecteur mp3 en flash via le code suivant :

Code :
1
2
3
4
5
6
<object type="application/x-shockwave-flash" data="dewplayer-bubble.swf" width="250" height="65" id="dewplayer" name="dewplayer"> 
<param name="wmode" value="transparent" />
<param name="movie" value="dewplayer-bubble.swf" /> 
<param name="flashvars" value="mp3=test.mp3" />
<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=test.mp3"></embed>
</object>
Sur mon site j'ai une liste de fichier mp3 et je souhaiterai que lorsque les utilisateur clique sur l'un des fichiers mp3 celui-ci se charge dans le lecteur.
Il est clair que dans le code du lecteur flash il faudrait que l'on transforme test.mp3qui prendrait comme valeur le fichier mp3 sur lequel l'utilsateur a cliqué, l'action pouvant être différente d'un utilisateur à l'autre, j'ai donc pensé au php

Est ce que je suis sur la bonne voix, ou pas ?

Comment faire pour déclarer une variable dans un code java qui sera comprise comme telle en php ?

Je ne connais pas encore très bien le php je me forme dessus depuis une semaine et avance en même temps sur mon site

Merci de votre aide précieuse.
nekcorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 21h06   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
Comment faire pour déclarer une variable dans un code java qui sera comprise comme telle en php ?
c'est l'inverse que tu veux faire et c'est du javascript pas du java.

imaginons un lien
page.php?mp3=mamusique

Code :
echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . $_GET['mp3'] . '.mp3"></embed>';
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 21h11   #3
Membre du Club
 
Inscription : mai 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 45
Points : 67
Points : 67
Bonsoir

Si la page est en php :

Code :
1
2
 
<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=<?php echo $nomdufichier; ?>.mp3"></embed>
Insèrera la valeur de la variable $nomdufichier dans le code html à la place de 'test'

Ceci après avoir stocké le nom du fichier dans la variable $nomdufichier qui peut être passée en GET par exemple.

EDIT : zut, double réponse, la solution de sabotage doit être meilleure, je crois qu'elle évite au serveur de passer de html à php, ce qui consomme plus de ressources ( à confirmer )

Ne pas oublier de vérifier la valeur de la variable GET 'mp3' au cas ou un petit malin tente d'acceder à un autre fichier
nonolagalinette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 21h49   #4
Invité régulier
 
Étudiant
Inscription : décembre 2006
Messages : 72
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 72
Points : 7
Points : 7
Envoyer un message via MSN à nekcorp
Citation:
Envoyé par sabotage Voir le message
c'est l'inverse que tu veux faire et c'est du javascript pas du java.

imaginons un lien
page.php?mp3=mamusique

Code :
echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . $_GET['mp3'] . '.mp3"></embed>';
Effectivement c'est bien l'inverse que je veux faire

Donc si j'ai bien compris la variable est déclaré comme tel : '. $_GET['mp3'] .' et tu rajoute .mp3 pour ajouter au nom du fichier son extension ?

Donc pour récapituler si mon code se présente comme suit :

Code :
1
2
3
4
5
6
<object type="application/x-shockwave-flash" data="dewplayer-bubble.swf" width="250" height="65" id="dewplayer" name="dewplayer"> 
<param name="wmode" value="transparent" />
<param name="movie" value="dewplayer-bubble.swf" /> 
<param name="flashvars" value="mp3=test.mp3" />
<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="fichcieralire=toto.mp3"></embed>
</object>
alors le code devient :

Code :
echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . $_GET['fichieralire'] . '.mp3"></embed>';
nekcorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 22h04   #5
Membre du Club
 
Inscription : mai 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 45
Points : 67
Points : 67
C'est ça, par contre il n'est pas prudent de mettre directement dans le code une variable issue de GET, il vaut mieux utiliser un filtre :

Code :
1
2
 
echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . input_filter( INPUT_GET, 'mp3', FILTER_SANITIZE_STRING ) . '.mp3"></embed>';
( Il est possible que le filtre exact doit être avec une option aussi )

Si jamais quelqu'un tente une entrée contenant du code html ou autre bizarrerie, elle ne s'affichera pas.

Plus d'infos :
http://fr.php.net/filter_input
nonolagalinette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 23h20   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Mettre un filtre n'a aucun interêt. Le contrevenant ne ferrait que modifier la page qu'il a.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 00h24   #7
Invité régulier
 
Étudiant
Inscription : décembre 2006
Messages : 72
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 72
Points : 7
Points : 7
Envoyer un message via MSN à nekcorp
Citation:
Envoyé par sabotage Voir le message
Mettre un filtre n'a aucun interêt. Le contrevenant ne ferrait que modifier la page qu'il a.
La vous m'avez pertuber

pouvez vous m'expliciter, je préfère comprendre que faire du copier coller

merci de votre patience et de votre aide
nekcorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 03h15   #8
Membre du Club
 
Inscription : mai 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 45
Points : 67
Points : 67
Désolé, je ne voulais pas embrouiller les choses



Je vais tenter une explication pour me faire pardonner.

Théoriquement, les variables passées par GET ou post peuvent toujours être modifiées par rapport à ce que l'on attends.

On pourrait par exemple mettre dans les données GET la chaine "/>/>bonjour<--", ce qui aurait eu pour effet de fermer la balise et d'afficher 'bonjour' sur la page html, mais ceci, effectivement uniquement pour l'utilisateur, donc peu de danger.

En fait on s'attend ici à ce qu'un utilisateur normal clique sur le lien, par exemple mapage.php?mp3=toto, ce qui ouvrirai le lecteur avec le fichier toto.mp3, mais on pourrait taper n'importe quoi dans l'url.

un exemple :

Imaginons que soit stocké la liste des derniers mp3 lus sur un support quelconque ( une base de données par exemple ), avec un menu qui affiche les derniers mp3 lus.
Chaque fois que quelqu'un appelle la page page.php?mp3=mamusique, la ligne "mamusique.mp3" est ajoutée au menu que tout le monde voit, ça donnerait :

Code :
1
2
3
4
5
6
 
<ul>
<li>mamusique</li>
<li>avantderniermp3</li>
<li>etc...</li>
</ul>
Si les données ne sont pas vérifiées, il suffirait de d'appeler la page "page.php?mp3=<script>script malicieux</script>", et la page d'accueil afficherai pour tout le monde :

Code :
1
2
3
4
5
6
7
 
<ul>
<li><script>script malicieux</script></li>
<li>mamusique</li>
<li>avantderniermp3</li>
<li>etc...</li>
</ul>
Ce qui exécuterai le script malicieux si le navigateur du visiteur n'est pas sécurisé avec noscript par exemple.
C'est ce que voulait dire sabotage en parlant de ne modifier que la page qu'il a. Avec ton code le contrevenant n'exécuterai un script que sur sa machine.

J'espère que mon exemple est clair, car il se fait tard ...

Si tu veux plus d'infos, la doc de php.net est très bien et explique bien les problèmes de sécurité existant.

Dans la mesure du possible, je suis plutôt pour une vérification systématique des données, pour éviter les mauvaises surprises, après j'avoue que ce cas là ne si prête pas forcément, encore désolé, je ne voulais pas semer le doute.
nonolagalinette est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/05/2011, 07h06   #9
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
C'est tout à fait ça : lorsque le paramètre est utilisé sur le serveur (paramètre correspondant à un fichier du serveur, ou d'une requête sur une base de données par exemple il est essentiel de le contrôler.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 22h07   #10
Invité régulier
 
Étudiant
Inscription : décembre 2006
Messages : 72
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 72
Points : 7
Points : 7
Envoyer un message via MSN à nekcorp
Ok j'ai compris votre explication. Donc comment palier ce problème ?

Merci
nekcorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 00h01   #11
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Y'a pas de problème dans ton cas. Ton fichier ne sera pas utilisé sur le serveur. Ce serait différent si tu faisais par exemple un include qui utilise ton fichier dans le code php mais dans ton cas il est simplement passé comme paramètre au lecteur flash.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 20h28   #12
Invité régulier
 
Étudiant
Inscription : décembre 2006
Messages : 72
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 72
Points : 7
Points : 7
Envoyer un message via MSN à nekcorp
Bon bah j'ai essayé mais ça marche pas.

Pourtant je comprend bien la philosophie sur la déclaration de variable cependant cela ne marche pas

voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>
Mon lecteur Mp3 exportable en flash !
</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<object type="application/x-shockwave-flash" data="http://mon serveur/dewplayer-bubble.swf" width="250" height="65" id="dewplayer" name="dewplayer"> 
<param name="wmode" value="transparent" /><param name="movie" value="dewplayer-bubble.swf" /> 
<param name="flashvars" value="' . $_GET['mp3'] . '.mp3""&amp;autostart=1&amp;autoreplay=0&amp;showtime=1&amp;randomplay=1" /> 
</object>
<p>
	<a href="lecteur.php?mp3=http://mon serveur/mp3/musique_1.mp3">Musique_1 </a>
	<p>
		<a href="lecteur.php?mp3=http://mon serveur/mp3/musique_2.mp3">Musique_2</a>
		</p>
</p>
</body>
</html>
Donc je souhaite lorsque je clique sur Musique_1 par exemple que cette musique soit chargé dans le lecteur et qu'elle démarre automatiquement (je pense que si je met "autostart=1, cela devrait suffir.

Merci de votre aide et de votre éclaircissent
nekcorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 23h38   #13
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Regarde mieux les codes qu'on t'a montré.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 15h51   #14
Invité régulier
 
Étudiant
Inscription : décembre 2006
Messages : 72
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 72
Points : 7
Points : 7
Envoyer un message via MSN à nekcorp
Effectivement j'ai oublié quelques "truc" (le echo) :

Code :
1
2
 
echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . $_GET['mp3'] . '.mp3"></embed>';
Cependant celà ne fonctionne pas et je pense que celà est dû à la valeur de la value qui est mal renseigné car c'est cette valeur qui est lu par le lecteur :

Code :
1
2
 
<param name="flashvars" value="mp3=test.mp3" />
Par quoi je dois remplacer la valeur de valeur de value afin que celle ci soit égale à la musique sur lequel l'utilisateur a cliqué ?

je déclare mes liens vers mes MP3 comme ceci :

Code :
1
2
3
 
<a href="lecteur.php?mp3=http://monsite.com/mp3/musique-1.mp3">Musique_1</a>
<a href="lecteur.php?mp3=http://monsite.com/mp3/musique-2.mp3">Musique_2</a>
Merci
nekcorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 16h21   #15
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Controle la source HTML que tu obtiens.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 16h59   #16
Invité régulier
 
Étudiant
Inscription : décembre 2006
Messages : 72
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 72
Points : 7
Points : 7
Envoyer un message via MSN à nekcorp
Citation:
Envoyé par sabotage Voir le message
Controle la source HTML que tu obtiens.
désolé mais je ne comprend pas ?
nekcorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 00h45   #17
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Regardes le code source (menu affichage -> code source de la page) de ta page. Cela te permet de contrôler le code hml qu'a généré le code php.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 11h11   #18
Invité régulier
 
Étudiant
Inscription : décembre 2006
Messages : 72
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 72
Points : 7
Points : 7
Envoyer un message via MSN à nekcorp
Citation:
Envoyé par ABCIWEB Voir le message
Regardes le code source (menu affichage -> code source de la page) de ta page. Cela te permet de contrôler le code hml qu'a généré le code php.
Ok je regarde cela ce soir.

Merci
nekcorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 13h16   #19
Invité régulier
 
Étudiant
Inscription : décembre 2006
Messages : 72
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 72
Points : 7
Points : 7
Envoyer un message via MSN à nekcorp
Alors je suis revenu sur mon problème :

Voila mon code actuel :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>
Mon lecteur Mp3 exportable en flash !
</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
	<object type="application/x-shockwave-flash" data="dewplayer-bubble.swf" width="250" height="65" id="dewplayer" name="dewplayer"> 
	<param name="wmode" value="transparent" />
	<param name="movie" value="http://monsite/Lecteur/dewplayer-bubble.swf" /> 
	<param name="flashvars" value="mp3= "/>
    echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . $_GET['mp3'] . '.mp3"></embed>';
	</object>
<p>
	    <a href="lecteur.php?mp3=http://monsite/player/mp3/musique1.mp3">musique1</a>
	<p>
		<a href="lecteur.php?mp3=http://monsite/player/mp3/musique2">musique2.mp3</a>
	</p>
</p>
</body>
</html>
j'ai testé 100 manières différentes, car entre les déclaration de variable de :

Sabotage :

Code :
echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . $_GET['mp3'] . '.mp3"></embed>';
nonolagalinette :

Code :
<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=<?php echo $nomdufichier; ?>.mp3"></embed>
sans compter l'histoire des filtres (je reviendrai plus tard dessus quand le lecteur fonctionnera) :

Code :
echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . input_filter( INPUT_GET, 'mp3', FILTER_SANITIZE_STRING ) . '.mp3"></embed>';
Je ne sais plus ou mettre de la tête.

Lorsque je regarde le code source généré aprés avoir cliqué sur un des liens rien ne se passe et quelque soit la manière dont je déclare la variable "value=......" le champ reste vide.

Code :
<param name="flashvars" value="mp3=test.mp3" />
Qui peut m'éclaircir sur la déclaration de variable dans mon cas, car d'aprés les docs que je lis sur les déclarations de variables en php il semblerait que celle qui se prête bien est celle que nonolagalinette m'a donné, c a dire une variable entre les balises <?php .......?>

Merci de votre aide, j'aimerai bien boucler celà car je prend du retard sur mon site.
nekcorp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 14h08   #20
Membre du Club
 
Inscription : mai 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 45
Points : 67
Points : 67
Le code de sabotage ( echo ... ) doit être mis entre "<?php" et "?>", sinon il est interprété comme simple code html et affiché tel quel.

En fait tu a 2 solutions pour afficher en php du code sur ta page :

- soit tu met directement du code html, comme tu fait.

- soit entre les balides php, tu met une instruction echo 'bonjour';

Par contre le echo doit être entrre les balises <?php ?> qui indiquent le début du script php.

Regarde ensuite si le code html de ta page pour la zone entre <?php et ?> est bien exécuté. Si tu vois les balises <?php ?> apparaitre dans le code html, c'est que php n'est pas installé ou ne fonctionne pas.
nonolagalinette est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h52.


 
 
 
 
Partenaires

Hébergement Web