Upload en PHP y Flash. ¿Donde está mi sesión?
30/05/2008 a las 12:25 por ShoxEstos dias he estado trabajando en un upload en Flash y PHP (también utiliza Javascript para llamadas en AJAX) y me he encontrado con un bug de Flash muy curioso.
Flash no envia ni la sesión ni las cookies al PHP, con lo que no se puede hacer ninguna validación de usuario o cosas por el estilo. Al llegar al PHP tenemos una variable de sesión que no es la que teniamos originalmente. Por lo que he leido esto falla siempre en navegadores que no sean Internet Explorer, y a menudo en IE no envia todas las cookies, por lo que no podemos estar seguros.
Después de mucho leer, la solución no es tan complicada como cabía esperar tras ver el problema:
1.- Primero de todo, hay que pasarle el valor de la cookie por flashvars al Flash:
-
flashvars: 'cookie=' + document.cookie
2.- En el flash cogemos este valor
-
var url:String = "upload.php" + '?cookie=' + _root.cookie;
Donde la url será a la que llamaremos con la función upload de flash
3.- En el PHP recogemos la cookie que hemos enviado por get, y seteamos la variable de sesión a su valor original. En varios sitios he leido que esto funcionaba:
pero en mi caso no funcionó. Por lo tanto cree una manera alternativa:
En ambos casos, hay que declarar el session_name y session_id antes de hacer el session_start. En el caso que yo comento, sólo me quedo con la variable de session de PHP, ya que el resto no me interesaba.
Tags: Actionscript2, cookie, Flash, PHP, session, upload
Comentarios: 2 comentarios »