2010-08-25 4 views
0

Tout d'abord, j'utilise KohanaPHP Framework.Flash et sessions

J'ai implémé SWFUpload avec succès, fonctionnant plutôt bien. Je n'ai qu'un seul problème.

Le problème principal est que je dois permettre aux utilisateurs de télécharger des pièces jointes avant de soumettre le formulaire. J'ai donc décidé d'utiliser Session var pour stocker le tableau des pièces jointes. Malheureusement, cela fonctionne inly si j'utilise le téléchargement HTML (basé sur iframe), mais pas quand j'utilise SWFUpload.

J'ai essayé de Google pour cela, mais sans aucune solution de travail. Des idées?

Mise à jour & Solution
En fait, je ne savais pas qu'il y ait un problème avec Flash et sessions. Fournir la même identification de session ne m'a pas aidé parce que je me suis désengagé. Quoi qu'il en soit, j'ai trouvé une solution pour les personnes ayant le même problème.

J'ai créé un identifiant unique d'un article. Je télécharge des fichiers dans le répertoire temporaire, puis ... Je scanne ce répertoire et j'ajoute des noms de fichiers téléchargés à la session.

Tom

+0

Vous devez montrer du code. –

+0

@Pekka - Quelles parties du code peuvent vous aider? – Tom

+0

Je ne connais pas Kohana, donc je ne peux pas aider de toute façon, mais vous décrivez un concept abstrait (en ajoutant des pièces jointes à un formulaire) et vous ne montrez pas comment il est implémenté. Ainsi, il est impossible de faire des suggestions pour le faire fonctionner avec SWFUpload. –

Répondre

2

Ce que vous devez passer est l'identifiant de session à SWFUpload à la main. En un mot, vous le faites dans votre modèle:

<script type="text/javascript"> 
var PHPSESSID = <?php echo json_encode(session_id()); ?>; 
</script> 

Ensuite, vous faites cela avec votre code SWFUpload:

var settings = { 
    post_params: {"PHPSESSID" : PHPSESSID}, 
    /* the rest of the settings */ 
}; 

Enfin, dans votre code d'application, avant vous appelez session_start, vous besoin de le faire (habituellement juste dans votre index.php ou tout ce que vous utilisez bootstrap):

// Restore session that came from SWFUpload 
if(isset($_REQUEST['PHPSESSID'])) 
    session_id($_REQUEST['PHPSESSID']); 

Après cette session_start() utilisera t La session correcte, même pour les demandes SWFUpload.

+0

Je vais essayer vos suggestions et vous ferai savoir si elles fonctionnent. – Tom

+0

Hm ... après avoir mis 'if (isset ($ _ REQUEST ['PHPSESSID'])) session_id ($ _ REQUEST ['PHPSESSID']);' dans la bibliothèque de Session je ne suis pas identifié? Aucune suggestion? :) – Tom

+0

Est-il avant tout autre code de session (il doit absolument * être * pour être la première fonction liée à la session que vous utilisez). –