[Flash/PHP] FlashVars ne fonctionne pas avec IE

FlashVars ne fonctionne pas avec IE [Flash/PHP] - Flash/ActionScript - Programmation

Marsh Posté le 07-03-2011 à 02:30:43    

Salut a tous
 
Afin de cacher le chemin vers mon fichier SWF, j'utilise un fichier source php qui fait un readfile() du swf. Comme j'ai besoin de passer des parametres a flash, je ne peux plus le faire par l'url avec ?var1=value2&var2=value2 donc j'essaie via flashvars
 
Ce qui marche bien avec FF/Chrome/Safari mais pas sous IE.
 
Mon code est le suivant:
 

echo "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0\" width=\"100%\" height=\"100%\">";
        echo "<param name=\"movie\" value=\"flashwrapper.php\" />";
        echo "<param name=\"FlashVars\" value=\"mavar=maval\" />";
        echo "<param name=\"quality\" value=\"high\" />";
        echo "<param name=\"loop\" value=\"true\" />";
        echo "<param name=\"allowfullscreen\" value=\"true\" />";
        echo "<embed src=\"flashwrapper.php\" FlashVars=\"mavar=maval\" loop=\"true\" quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" width=\"100%\" height=\"100%\" allowFullScreen=\"true\"></embed>";
        echo "</object>";


 
Je me suis dit que qqn avait peut etre deja rencontre le probleme?
 
Merci d'avance.

Reply

Marsh Posté le 07-03-2011 à 02:30:43   

Reply

Marsh Posté le 07-03-2011 à 06:07:08    

flashvars et non FlashVars

 

je ne comprends pas pourquoi les gens mettent des majuscules partout comme ça :/

 

Ensuite si tu passes : ?var1=value1&var2=value2
dans les flashvars, il faut enlever le ? avant.

 

Et attention flashvars est à modifier à 2 endroits au vue de ta déclaration de flash :
le premier c'est dans les <param> puisque ta balise object est écrite de manière à ne passer que sous IE, pour les autres navigateurs elle est écrite pour que ce soit le embed qui soit utilisé


Message édité par gatsu35 le 07-03-2011 à 06:08:37

---------------
Blablaté par Harko
Reply

Marsh Posté le 07-03-2011 à 16:03:02    

je ne comprends pas non plus les majuscules mais j'ai essaye sans et c'est pareil (de toute facon je pense que ces attributes ne sont pas case sensitive), ca ne marche toujours pas
 
et comme tu peux voir dans mon code je n'ai pas mis le ? :)

Reply

Marsh Posté le 07-03-2011 à 19:32:09    

colle le code HTML généré, le php ça on s'en fout, il est mieux de voir le HTML généré, merci


---------------
Blablaté par Harko
Reply

Marsh Posté le 07-03-2011 à 19:35:32    

Code :
  1. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="100%" height="100%"><param name="movie" value="flashwrapper.php" />
  2. <param name="flashvars" value="var1=val1&var2=val2" />
  3. <param name="quality" value="high" />
  4. <param name="loop" value="true" />
  5. <param name="allowfullscreen" value="true" />
  6. <embed src="flashwrapper.php" flashvars="var1=val1&var2=val2" loop="true" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="100%" height="100%" allowfullscreen="true">
  7. </embed>
  8. </object>


Reply

Marsh Posté le 07-03-2011 à 19:45:35    

et flashwrapper.php fait un @readfile('test.swf');

Reply

Marsh Posté le 07-03-2011 à 22:05:32    

(je re-precise que ca marche parfaitement sous chrome/ff/safari...)

Reply

Marsh Posté le 07-03-2011 à 22:49:50    

Peut-être que ton problème vient de flashwrapper.
Il faudrait aussi forcer le mime type dans ton cas.
Ton fichier PHP doit ressembler à ça dans ce cas :

Code :
  1. header('Content-type: application/x-shockwave-flash');
  2. readfile('test.swf');


---------------
Blablaté par Harko
Reply

Marsh Posté le 08-03-2011 à 00:27:27    

voici mon flashwrapper:
 

Code :
  1. header("Content-type: application/x-shockwave-flash" );
  2.         header("Cache-Control: no-cache, no-store, max-age=0, must-revalidate" );
  3.         header("Cache-Control: post-check=0, pre-check=0", false);
  4.         header("Expires: Mon, 20 Dec 1980 00:00:00 GMT" );
  5.         header("Pragma: no-cache" );
  6.         header("Content-Transfer-Encoding: binary" );
  7.         header("Content-Description: File Transfer" );
  8.         @readfile('test.swf');

Reply

Marsh Posté le 08-03-2011 à 08:36:43    

et du coup ya quelque chose qui marche ou pas ?  
JE ne vois pas l'utilité de ton flashwrapper, peut-être pour le cache, mais un simple timestamp collé au flash est plus efficace.


---------------
Blablaté par Harko
Reply

Marsh Posté le 08-03-2011 à 08:36:43   

Reply

Marsh Posté le 08-03-2011 à 15:31:38    

non, je cherche a cacher le chemin du fichier swf pour eviter sa capture

Reply

Marsh Posté le 08-03-2011 à 15:45:30    

(meme si je me doute qu'un visiteur expert saurait le recuperer autrement, dans la memoire ou autre)

Reply

Marsh Posté le 08-03-2011 à 17:57:45    

ton swf se récupèrera hyper facilement, via charles par exemple, même pas besoin d'être expert.
donc ta protection est quasiment useless.

 

Mais tu ne m'as toujours pas dit si ça marche ou pas ? :)
colle le HTML généré actuel de ta déclaration de flash merci


Message édité par gatsu35 le 08-03-2011 à 17:58:41

---------------
Blablaté par Harko
Reply

Marsh Posté le 08-03-2011 à 19:05:15    

ca ne marche pas, et j'ai poste le code HTML plus haut

Reply

Marsh Posté le 08-03-2011 à 19:08:47    

(et Charles saurait recuperer le Flash meme s'il est transmis en https?)

Reply

Marsh Posté le 08-03-2011 à 22:41:53    

ben oué puisque à partir du moment où tu utilises un logiciel proxy, tu peux faire ce que tu veux

 

sinon tu veux pas passer par swfobject, tu te feras moins chier


Message édité par gatsu35 le 08-03-2011 à 22:42:20

---------------
Blablaté par Harko
Reply

Marsh Posté le 08-03-2011 à 23:26:32    

j'ai entendu parler de ce script mais pour l'instant j'essayais de faire ca de maniere standard... si ce n'est pas possible je regarderai swfobjet, mais est ce qu'il permet d'utiliser un source tel que mon flashwrapper(), je ne sais pas
 

Reply

Marsh Posté le 08-03-2011 à 23:49:39    

bon donc en faite la reponse courte c'est qu'une fois de plus IE veut faire les choses a sa sauce, et que ce qui marche sur les browsers qui respectent les standards ne marche pas sur celui de MS :/


Message édité par ztg le 08-03-2011 à 23:49:58
Reply

Marsh Posté le 09-03-2011 à 04:44:54    

justement utilise SWFobject
 tu fais 1 seule intégration de code et hop


---------------
Blablaté par Harko
Reply

Marsh Posté le 10-03-2011 à 21:42:30    

j'ai essaye le swfobject, ca ne change le probleme en rien
 
IE a un souci avec le readfile() et je n'arrive pas a trouver ce que c'est

Reply

Marsh Posté le 10-03-2011 à 22:10:06    

ptet les headers... mais j'ai eu beau essayer plein de combinaisons ca foire tjrs

Reply

Marsh Posté le 10-03-2011 à 22:41:19    

oublie ton bricolage à la con pour ton SWF, et remet le SWF comme il était avant, puisque de toute manière ça ne sert à rien, personne ne voudra le piquer ton SWF, et pour faire quoi au final ? Le décompiler pour regarder comment c'est codé ?
Bah tout le monde fait ça et basta. Donc oublie. C'est inutile


---------------
Blablaté par Harko
Reply

Marsh Posté le 10-03-2011 à 22:43:38    

Je te remercie pour ton conseil a la con mais je vais continuer d'essayer de comprendre pourquoi ca ne fonctionne pas.  
 
Si je trouve la raison technique je le posterai ici, pour au moins avoir fait avancer le schmilblick :)
 
Bonne soiree.

Reply

Marsh Posté le 11-03-2011 à 00:21:22    

Passer par un fichier PHP qui ne fait "rien" à part déclarer des header pour juste "cacher" un fichier SWF, c'est comme mettre un deuxième slip. C'est inutile.
Quand tu auras compris ça, tu auras tout compris :).

 

A partir du moment ou ton fichier est sur le net, qu'il y ait un .php derrière ou un .swf. Le pékin moyen même le con de service trouveras le moyen de le télécharger.

 

Tu peux essayer de trouver une solution à ton problème, c'est surement le mime type, IE6 voire 7 est assez merdique au niveau des mime-type, peut-être que tu ne déclares pas le bon et que tu devrais rechercher de ce coté là.

 

Edit : enlève tous les autres headers à la con qui ne servent à rien, et laisse juste le premier celui qui déclare le content type


Message édité par gatsu35 le 11-03-2011 à 00:24:16

---------------
Blablaté par Harko
Reply

Marsh Posté le 11-03-2011 à 02:04:36    

Ca m'est deja arrive de porter deux slips (Himalaya sous la tente par -20).  
 
Le truc c'est que tu me dis que je porte deux slips alors que c'est ma veste qui a un probleme, donc tu comprends que ca m'aide pas beaucoup. Quand t'auras compris ca t'auras tout compris :)

Reply

Marsh Posté le 11-03-2011 à 03:45:20    

Bon alors pour info c'etait une histoire de headers.
 
En virant les deux suivants ca marche:
 

//header("Cache-Control: no-cache, no-store, max-age=0, must-revalidate" );
// header("Pragma: no-cache" );


 
 
Donc le coupable etait bien le browser bien connu qui ne respecte pas les standards :)

Reply

Marsh Posté le 11-03-2011 à 08:04:33    

Ou tes headers qui étaient bordeliques :o


---------------
Blablaté par Harko
Reply

Marsh Posté le 11-03-2011 à 16:11:29    

Ce sont des header standard tels que specifies par la norme HTML et qui passent parfaitement sous Firefox 3, Firefox 4, Safari, Chrome, et Opera.

Reply

Marsh Posté le 11-03-2011 à 16:36:53    

Wep faut dire que IE est une chiotte, mais ils se rattrapent avec le 9


---------------
Blablaté par Harko
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed