Me pone programar

Profesión y afición

Me pone programar

Blog personal sobre PHP, JavaScript, CSS, Estándares, Flash i demás temas interesantes del mundo de la informática e Internet

IDs con puntos en jQuery

14/01/2011 a las 01:49 por admin

Recientemente me he peleado con la selección de un elemento del dom, cuyo ID tenía un punto. En este caso jQuery no sabe diferenciar que es ID y que sería el atributo CLASS cuando se intenta seleccionar.

Expongo el caso:

<input type=”text” id=”usuario.nombre” />

Si quisieramos usar el selector por ID, haríamos algo tal que así:

$(“#usuario.nombre”);

Pero nos encontraríamos que no nos devuelve lo esperado, ya que en este caso estaríamos buscando el elemento con ID “usuario” y CLASS “nombre”; el cual no existe.

Para solucionar este problema (a parte de no utilizar puntos dentro de los atributos, aunque la W3C lo permite) podríamos utilizar el selector por atributo:

$(“[id='usuario.nombre']“);

El resultado es el deseado, ya que forzamos que todo el texto buscado sea el identificador. Pero penalizaríamos el rendimiento, ya que la búsqueda por ID es más rapida que la de atributos en jQuery.

Categorías: jquery
Tags: , ,
Comentarios: Sin comentarios »

Upload en PHP y Flash. ¿Donde está mi sesión?

16/10/2010 a las 05:04 por admin

Estos 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:

[js]flashvars: ”cookie=” + document.cookie[/js]

2.- En el flash cogemos este valor

[as]var url:String = “upload.php” + ”?cookie=” + _root.cookie;[/as]

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:

[php]

list($cookieName, $cookieValue) = str_split(”=”, $_GET[''cookie'']);

session_name($cookieName);

session_id($cookieValue);

session_start();[/php]

pero en mi caso no funcionó. Por lo tanto cree una manera alternativa:\r\n\r\nEn 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.

Categorías: php
Comentarios: Sin comentarios »