Menudo lío me he montado yo solo (bueno, en realidad no tan así) con las opciones de Gesbit y su serialización. Resulta que ayer me escribe mi amigo Álvaro, que está queriendo usar Gesbit para una de susbitácoras, informándome de cierto problema que se encuentra al querer guardar una determinada opción de Gesbit: la descripción de la bitácora, concretamente. ¡Llevo toda la tarde de ayer y toda la noche de hoy con este asunto y ahora por fin parece que me aclaro un poco!
De todas las soluciones que he intentado, al cabo he optado por la que mejor me parece: olvidarme de la directiva "magic quotes" de PHP. Efectivamente, la clase "MySQL" de Gesbit cuenta con cierto métod para escapar los datos de las consultas SQL que se llevan a cabo, y, en dicho método, si la directiva en cuestión está activada, se hace uso de la función "stripslashes" de PHP, antes de llevar a cabo el filtro de la cadena propiamente dicho. Pues bien, he quitado del medio dicha función, olvidándome de la directiva.
Y es que el manual de PHP lo deja claro: no debe trabajarse en función de dicha directiva, porquese trata de una opción obsoleta, que no estará ya en PHP 6, y que (esto lo digo yo, aunque también lo pone en el manual) no deja de dar problemas en versiones anteriores de PHP, incluida la 5, que es la versión actual y que necesita Gesbit para funcionar. ¡Incluso he llegado a guardar las opciones "serializadas" de Gesbit previamente codificadas en base 64! Pero esto era un error, y he vuelto atrás, porque, en realidad, sin esa directiva, no hay problemas con las opciones, incluso si estas contienen caracteres "especiales" como puedan ser comillas dobles o simples.
Pero... entonces... ¿qué pasa si la directiva "magic quotes" está activada? Pues a mí me funciona como se espera de todas formas, y espero que a mi amigo Álvaro también, pero, estoy dispuesto a darke a Álvaro la siguiente solución: "no uses caracteres especiales en el nombre o en la descripción del blog", antes que pensar en codificar las opciones luego de serializarlas, antes, en fin, de seguir trabajando con una directiva de PHP que está ya considerada obsoleta, y que no hace sino dar problemas, pero, esto ya lo he dicho. Y eso es lo que hay. Creo que por ahora voy a dejarlo tal cual, porque, como he dicho al principio, menudo lío me he montado yo solito...
He llegado a actualizar la versión estable de Gesbit, ¡y la beta!, con los cambios (usando base 64 para las opciones) y claro, he tenido que "volver atrás", y actualizarla de nuevo sin esos cambios. Pero, sea como sea, ahora la versión estable está igualada con la versión "beta", y además ya no hace uso de la directiva de marras, y salga el sol por donde salga, de verdad, porque, menuda pesadilla con este asunto, ¡qué frustrante no saber si estaba haciendo algo bien o qué! Es que no te imaginas los cambios que he procurado, antes de darme cuenta de que bastaba con dejar de usar la directiva "magic quotes", mejor dicho, dejar de "preguntar" si estaba activa o no.
Sea como sea, ya digo, mañana le diré a Álvaro que actualice Gesbit, en realidad sólo un determinado "script" ("mysql.class.php"), si es que no lo hizo ya ayer tarde (porque fue una de las opciones que le propuse) o que descarge la versión estable, ya actualizada y al día, y, en caso de que tenga problemas con la descripción del blog... que no use caracteres especiales, puesto que me consta que su servidor usa "magic quotes", y por ahí puede venir el problema, como digo, de que se corrompan las opciones, por decirlo así. Creo que es la mejor solución, aunque no sea tal, porque, repito, el manual de PHP lo deja claro: "no trabajes en función de la directiva magic quotes, puesto que no se recomienda al estar obsoleta". Uf...