|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() |
bonsoir,
Voilà je suis entrain d'insérer sur mon site web un lecteur mp3 en flash via le code suivant : Code :
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. |
||
|
|
00
|
|
|
#2 | |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Citation:
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>'; |
|
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : mai 2010 Messages : 45 ![]() |
Bonsoir
Si la page est en php : Code :
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 |
||
|
|
00
|
|
|
#4 | |||
|
Invité régulier
![]() |
Citation:
![]() 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 :
Code :
echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . $_GET['fichieralire'] . '.mp3"></embed>'; |
|||
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : mai 2010 Messages : 45 ![]() |
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 :
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 |
||
|
|
00
|
|
|
#6 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Mettre un filtre n'a aucun interêt. Le contrevenant ne ferrait que modifier la page qu'il a.
|
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() |
|
|
|
00
|
|
|
#8 | ||||
|
Membre du Club
![]() Inscription : mai 2010 Messages : 45 ![]() |
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 :
Code :
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. |
||||
|
|
10
|
|
|
#9 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
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.
|
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() |
Ok j'ai compris votre explication. Donc comment palier ce problème ?
Merci |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
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. |
|
|
00
|
|
|
#12 | ||
|
Invité régulier
![]() |
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 :
Merci de votre aide et de votre éclaircissent |
||
|
|
00
|
|
|
#13 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Regarde mieux les codes qu'on t'a montré.
|
|
|
00
|
|
|
#14 | ||||||
|
Invité régulier
![]() |
Effectivement j'ai oublié quelques "truc"
Code :
Code :
je déclare mes liens vers mes MP3 comme ceci : Code :
|
||||||
|
|
00
|
|
|
#15 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Controle la source HTML que tu obtiens.
|
|
|
00
|
|
|
#16 |
|
Invité régulier
![]() |
|
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
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. |
|
|
00
|
|
|
#18 |
|
Invité régulier
![]() |
|
|
|
00
|
|
|
#19 | ||
|
Invité régulier
![]() |
Alors je suis revenu sur mon problème :
Voila mon code actuel : Code :
Sabotage : Code :
echo '<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=' . $_GET['mp3'] . '.mp3"></embed>'; Code :
<embed src="dewplayer-bubble.swf" width="250" height="65" wmode="transparent" flashvars="mp3=<?php echo $nomdufichier; ?>.mp3"></embed> 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>'; 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" /> Merci de votre aide, j'aimerai bien boucler celà car je prend du retard sur mon site. |
||
|
|
00
|
|
|
#20 |
|
Membre du Club
![]() Inscription : mai 2010 Messages : 45 ![]() |
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. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com