viernes

Piece of Cake! - Yeah Right! [Parte 2]

Que es lo primero que notas al usar Software Libre cuando hay problemas la documentación a pesar de ser variada es pobre en cuanto a profundidad de la información en los temas [No sucede en todos los casos] aunque las comunidad son muy unidas y están dispuestas a ayudar;

Pues ese era el reto, pase cerca de una 4 días completos del trabajo haciendo investigación y múltiples pruebas con las posibles configuraciones del Cake, las sesiones, las cookies, etc cuanto se me ocurrió y cuanto me recomendaron, incluso recurrí a los distintos grupos de Cake que hay en Google. Ahí expuse mis dudas sin mucho existo [Considero que por ser un tema algo poco común], aquí el tema donde pongo la pregunta a todo detalle.


Pero al final gracias al análisis del Framework y por que un poco de suerte, logre llegar a la solucion a mi problema, así que aquí pongo mi solución misma que puse en el grupo de Google con lujo de detalle:


"...........
Lo primero es que Cake no solo tiene un archivo core.php son dos!!

-- El PRIMERO es el que creo todos conocemos que se encuentra en "/cake/app/config/core.php"
--El SEGUNDO el hermano gemelo malvado de mi historia esta en "/cake/cake/s
cripts/template/skel/config/core.php"

Lo que no sabía es que de alguna forma ambas configuraciones están relacionas durante la inicialización, por lo que las configuraciones de la sesiones debe ser la mismas, tanto en nombre de la sesión como en el nivel de Seguridad:

define('CAKE_SESSION_COOKIE', 'PHPSESSID');
define('CAKE_SECURITY', 'low');

Debe ser igual si no esto causara conflictos y causara que la sesión se comporte de forma inesperada . Como saber si esto te esta pasando!?!?!?!


1.- Limpia el navegador de sesiones y cookies,
2.- Imprime el arreglo con las variables de $_SERVER, si ves tu sesión dos veces en el HTTP_COOKIE y con diferente ID, ya sabes como resolverlo ;) Ejemplo:

[HTTP_COOKIE] => PHPSESSID = 192614432b2f59e6d243372fb59da955, PHPSESSID = c2b4636b72803ce72dd1f9a84a6ec528

Pero aquí mi problema no se había resuelto por completo jejeje aunque esto te permite tener una sesión valida para la ejecución del cake no resuelve el problema si tu como yo tratas de hacer dinámica la incializacion del Database.php con variables de sesion, como explique anteriormente.

Que sucede es mi interpretación de la inicialización del CAKE primero se crea la base de datos y después las sesiones y lo demás necesario para la ejecución de tu aplicación, para agregar diversión cake verifica si ya se inicio una sesión en el framework caso contrario el lo hace por considerar que es la primera ves que se esta creando la aplicación y debe darle sus valores a la sesión que se va a manejar, en el caso que detecte que ya esta una sesión en ejecución ignora esto
y sigue con lo demás.

Como Resolver esto; en el archivo "/cake/cake/libs/session.php" en el método"__initSession()" que es el que se encarga de iniciar la sesión en base a las características del cake forzamos la inicializacion de nuestra sesión para que todas las características sean puestas en nuestra sesión que venimos manipulando desde antes.

Y Wolaa CAKE ya funciona como siempre y usando una conexión dinámica con datos de una sesion inicializada previamente a su aplicación de CAKE!
..........."
Como comente en la comunidad pongo esto, con la esperanza de que ese y este largo post sea útil para los que lo lean!!.


Otro Comentario que no quiero dejar de hacer es el hecho de que CakePHP no es el único Framework que hay para PHP, todo dependerá de que es lo que se piense desarrollar dado que hay algunos frames mas potentes que Cake pensado para aplicaciones mas complejas, para aplicaciones de una complejidad medio yo recomendaría el uso de Cake.

Lista de Frameworks para PHP.

Saludos.

No hay comentarios: