2010-11-13 8 views
0

j'ai un petit jeu multijoueur de Flash dans lequel vous pouvez afficher un profil de joueur en cliquant sur son avatar:ActionsScript NavigateToURL() et les cookies HTTP

const PROFILE_URL:String = 'http://myserver/user.php?id='; 
try { 
    navigateToURL(new URLRequest(PROFILE_URL+id), '_blank'); 
} catch(e:Error) { 
} 

Cela fonctionne bien, mais maintenant je voudrais pour étendre user.php, afin que les joueurs puissent ajouter des commentaires les uns sur les autres. Pour l'autorisation, je voudrais utiliser les cookies HTTP, passés de game.swf à user.php.

(Je ne veux pas utiliser GET ou POST ici, parce que GET aura les variables auth dans l'URL et les joueurs pourraient parfois envoyer cette URL ou l'afficher dans mon forum. la requête lorsque vous rechargez).

Mon problème est que je ne peux pas trouver le moyen de définir des cookies HTTP à travers la méthode navigateToURL(). S'il vous plaît me conseiller

Cordialement, Alex

Répondre

1

Vous pouvez d'abord vous authentifier en vous connectant via un appel séparé, par exemple login.php et ce script commencerait une session. Ensuite, tous les autres appels au même domaine ont déjà démarré la session et vous pouvez vérifier l'authentification. Pas besoin de s'inquiéter des cookies quand PHP peut le faire pour vous.

+0

Ok, j'ai fini par faire cela –

1

En supposant que vous avez déjà la valeur du cookie dans votre swf vous devriez être en mesure d'utiliser le URLRequestHeader avec le URLRequest comme suit:

var header:URLRequestHeader = new URLRequestHeader("Cookie", "<the cookie>"); 
var request:URLRequest = new URLRequest("http://example.com/script.php"); 
request.requestHeader.push(header); 
request.method = URLRequestMethod.POST; 
navigateToURL(request, "_blank"); 

Dans certaines circonstances, le navigateur envoie le cookie au serveur si elle a déjà été définie même si vous ne l'incluez pas explicitement dans la requête. Cela dépend du navigateur et de la version de Flash Player. Vous devrez peut-être également ajuster votre fichier crossdomain.xml. Notez également que le passage d'un jeton de cookie non crypté pourrait avoir des implications sur le plan de la sécurité. Voir Firesheep.

+0

Merci, mais Adobe ne permet pas de définir "Cookie" avec URLRequestHeader –

+0

@Alexander Ah, oui merci pour la correction. Un des en-têtes interdits. Vous pouvez vérifier si les cookies déjà définis par le serveur sont renvoyés avec l'URLRequest. Comme je l'ai mentionné, ils le font parfois avec certains navigateurs. – martineno