Flash et les sessions PHP

Flash et les sessions PHP - Flash/ActionScript - Programmation

Marsh Posté le 29-11-2006 à 15:08:46    

*** Edit ***
Ca marche avec Internet Explorer, mais pas avec FireFox ^^
Manquait plus que ca !
En faisant quelques recherches j'ai vu qu'apparemment ca pourrait venir du fait que l'header IE renvoi le PHPSESSID et pas FF...
Si quelqu'un à une solution...
**********

Bonjour,
 
Voilà j'utilise du flash pour faire de l'upload, un simple bouton parcourir en flash puis une barre de progression (l'utilité du flash et surtout pour cette barre de progression), ca envoi ensuite le fichier à un upload.php qui copie sur le server avec du move_uploaded_file
 
Jusque là tout va bien, et tout marche :)
 
Le seul problème est lorsque dans mon upload.php je veux quele fichier uploadé soit copié dans le repertoire d'un utilisateur... En effet, d'habitude j'utilise une variable de session : $_SESSION['files'] qui contient le chemin vers le repertoire de l'utilisateur, sauf qu'apparemment, en passant par flash, le fichier upload.php qui est appelé par flash ne peut se servir de variable de session...
 
pourtant :  
 

Code :
  1. <?php
  2. session_start();
  3. $racine="../../../";
  4. include($racine."inc/la-config.php" );
  5. if ($_FILES['Filedata']['name']) {
  6.    $uploadDir = $sitePath.$_SESSION['files'];
  7.    $uploadFile = $uploadDir . $_FILES['Filedata']['name'];
  8.    move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
  9. }
  10. ?>


 
Si quelqu'un a une idée ? :)


Message édité par zecoke le 29-11-2006 à 16:09:07
Reply

Marsh Posté le 29-11-2006 à 15:08:46   

Reply

Marsh Posté le 29-11-2006 à 15:34:39    

le handler est passé dans $_FILES['Filedata']; cf. la doc de Flash

Reply

Marsh Posté le 29-11-2006 à 15:38:15    

hein ?  :heink:
 
Nan mais mon souci c'est juste de savoir comment recuperer les variables de session dans le fichier appelé par flash en fait..

Reply

Marsh Posté le 29-11-2006 à 16:15:27    

Bah moi je m'en sers beaucoup et ça marche très bien.
 
session_name('LENOM');
session_start();
 
if(session_is_registered("trucMachin" )) {  
extract($_SESSION);
 
et là j'utilise toutes mes variables $foo $bar comme il se doit ...
 
}

Reply

Marsh Posté le 29-11-2006 à 17:11:23    

hein² ?  :heink:
 
Je sais que les variables sessions marchent dans du php (encore heureux !!), j'en utilise à tire l'arigot :)
Là n'est pas le problème, le souci, c'est que dans un fichier php appelé à partir d'un flash avec du Filereference, sur Firefox, les variables sessions sont vides.

Reply

Marsh Posté le 29-11-2006 à 17:32:27    

le FileReference écrase les headers pour placer son fichier et son content-type (RTFM), passe tes variables en GET dans le script PHP appelé par la méthode upload() :
 

Reply

Marsh Posté le 29-11-2006 à 17:39:12    

Arf, pas très sécurisé tout ca, suffit que les mecs changent les variables passés en GET pour changer les repertoires de destination par exemple...

Reply

Marsh Posté le 30-11-2006 à 00:14:42    

zecoke a écrit :

hein² ?  :heink:
 
Je sais que les variables sessions marchent dans du php (encore heureux !!), j'en utilise à tire l'arigot :)
Là n'est pas le problème, le souci, c'est que dans un fichier php appelé à partir d'un flash avec du Filereference, sur Firefox, les variables sessions sont vides.


 :D non mais ce que je voulais dire c'est que j'utilise ça sur des pages appelé par Flash et j'ai pas de probléme mais comme le dit Craps, ton probléme peut être spécifique à FileReference

Reply

Marsh Posté le 30-11-2006 à 09:05:10    

bah on s'en fout, les répertoires de destination c'est côté client, quel est l'intérêt de copier n'importe où, sur sa propre machine ?

Reply

Marsh Posté le 28-12-2006 à 23:30:35    

hello
 
 
j'arrive peu être un peu tard ... mais j'ai déjà vu cette question posée mainte et maintes fois sur différents forum et voici la seule solution à laquelle je suis parvenu.
 
le problème viens du fait que falsh ne forward pas les variables de sessions quand il fait appel à une url..... (IE et FF les font passer dans le header de leur requètes - flash, n'étant pas un browser à proprement parler ... il ne tient donc pas compte de ces 'détails')
 
enfin bref,  la solution est peut être un peu tirée par les cheveux et recquiert un hosting pour lequel php a été configuré avec l'option session.use_only_cookies = 0 (ie, php accepte de gére les session provenant d'ailelurs que des cookies)
 
donc, on a un script php qui va créer la page dans lequelle se trouvera le swf. lors de la création de cette pages, il suffit de rajouter aux flashvars l'url du script à appeler par flash et d'y ajouter <?= strip_tags(SID); ?> si qui aura pour effet de rajouter qqchose comme "session_name=session_id" à l'url à appeler.
 
du coup notre flash lui appelera le script php en faisant passer cette nouvelel informations.
 
c'est ici que php doit être configuré avec session.use_only_cookies = 0. car ainsi, php traitera cette variable GET comme n'importequel cookie de session ....  
 
et hop, miracle ... les sessions marchent ;-)
 
enfin bref, c peut être un peu farfelu, mais si qq'un à une idée plus simple, je suis preneur ;-)

Reply

Marsh Posté le 28-12-2006 à 23:30:35   

Reply

Marsh Posté le 03-01-2007 à 17:40:33    

Salut,
 
je suis confrontée au même problème, j'ai tenté la solution apportée par armabarbu mais ça a pas l'air de fonctionner
 
En fait j'ai une page avec uploader flash et des infos contenues dans la session. Le script d'upload en PHP est appelé par le flash, il est censé uploader le fichier puis enregistrer les informations relatives à ce fichier dans la base de données. Seulement les sessions ne fonctionnent pas.
 
J'arrive à faire transiter l'id de la session de la page contenant le flash jusqu'au script d'upload en faisait passer le SID par le flash et en le récupérant dans le fichier upload_process.php. Par contre j'ai l'impression que ça ne suffit pas car les variables de $_SESSION sont toujours vides dans upload_process.php alors que dans la page qui contient le flash elles sont remplies.
 
L'url appelée par le flash est upload_process.php?PHPSESSID=8268ef6f77fd8fa5de1130976a0574bc mais je ne suis pas sûre que mettre "PHPSESSID" fonctionne, "session_name" ne fonctionne pas mieux. Y'a t-il quelque chose de plus à faire pour utiliser les sessions ?  
 
Merci !
 
PS: le serveur est configuré sur off pour session.use_only_cookies
 

Reply

Sujets relatifs:

Leave a Replay

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