El código de la discordia: Chrome vs Dawnie

Este puente he estado trabajando en la nueva web de gamevelop, de la que espero tener una primera alpha beta a finales de mes. Como ya no puedo trabajar sin separar código de diseño eché un ojo a varios frameworks (symfony, cakephp, silverstripe y django) pero como suele ser habitual en estos casos, ninguno parece lo suficientemente sencillo como para avanzar a buen ritmo sin conocimientos previos con ellos. Es decir, que tenía que asumir una curva de aprendizaje destacable antes de poder producir de forma rápida. ¿Qué hacer entonces?

Hará ya cerca de 4 años que comencé a escribir un framework propio con ese objetivo de ser más productivo en programación web, teniendo en cuenta que tenía que afrontar el desarrollo de una nueva versión de WoD, un MMO que vio la luz de forma fugaz por Undead. Ese framework fue evolucionando y tuvo varias arquitecturas diferentes en varias versiones, hasta llegar a Dawnie, el utilizado en la futura gamevelop.com.

El caso es que he descubierto un bug muy muy raro. El código en cuestión está en php y por lo tanto está del lado del servidor,  así que la respuesta debería ser la misma en cualquier navegador, pero el fallo sólo aparece en Chrome y derivados.

<?php
// Captcha numbers
$op1 = 7; //rand(1, 9);
$op2 = 2; //rand(1, 9);
 
$n1 = $op1;
$n2 = $op2;
$n3 = $n1 + $n2;
 
$gmv_engine->add_value("operator_1", $n1);
$gmv_engine->add_value("operator_2", $n2);
$gmv_engine->add_value("nopt1", $n1);
$gmv_engine->add_value("nopt2", $n2);
$gmv_engine->add_value("operator_sum", $n3);
?>

Como aclaración, decir que el método add_value busca en la plantilla html el primer parámetro y lo sustituye por el valor del segundo.

Si se ejecuta el código tal cual, todo está bien. Si genero aleatorios para $op1 y $op2 con rand(), la cosa falla. Al ver la página en Chrome vemos unos números y al entrar al código fuente (vía la opción del navegador) vemos otros números. Es más, al entrar en el modo debug del framework que hace un print_r del array donde se guardan los ids y sus valores (en este ejemplo, tendría entre otros un elemento con el id operator_1 y el valor de $n1) en el navegador se ven los mismos números que se muestran en el navegador, y en el código fuente los mismos números que se muestran en el código fuente.

¿Dónde está el error? Lo más desconcertante es que en otros navegadores funciona correctamente. ¿wtf?




No se han encontrado entradas relacionadas

2 Comentarios hasta el momento »

  1. Bitacoras.com dijo

    11 de December del 2012 a las 1:45 pm

    Información Bitacoras.com…

    Valora en Bitacoras.com: Este puente he estado trabajando en la nueva web de gamevelop, de la que espero tener una primera alpha beta a finales de mes. Como ya no puedo trabajar sin separar código de diseño eché un ojo a varios frameworks (symfony……

  2. Naranjo dijo

    12 de December del 2012 a las 2:11 am

    Caché. O la estás liando y te estás equivocando de pestaña/url.

    Te recomiendo que utilices un framework existente, pese a la curva de aprendizaje.

    De hecho, te recomiendo algo más, y es que hagas a mano la parte más pequeña posible de la página.

    Quiero decir, que dejen el WordPress, que si necesitas un wiki uses un Mediawiki, y para un foro un SMF. Pero que programes a mano la menor cantidad de características posibles.

    Confía en los proyectos que ya hay publicados. Solo asegúrate de mantenerlo todo actualizado y con un plan de copias de seguridad bueno.

    A la larga son muchos menos problemas, te lo aseguro.

Comentarios RSS · TrackBack URI

Déjame tu comentario :P

Nombre: (Requerido)

E-Mail: (Requerido)

Sitio WEB:

Comentario: