Tengo una situación extraña y espero que alguien haya experimentado esto antes y sepa qué escenarios posibles pueden causar que esto ocurra.
Tengo un sitio web PHP que accede a datos de una base de datos SQL. Los usuarios completan un formulario para agregar o editar datos que se PUBLICAN y los datos se escriben en la base de datos. Si el usuario está editando datos existentes, el php carga los datos necesarios para el formulario y uso JavaScript para completar los datos en los campos apropiados una vez que se ha cargado la página.
Todo esto me funciona correctamente en todas las máquinas que he probado y en la mayoría de los usuarios.
SIN EMBARGO... ALGUNOS usuarios informan que no ven los datos correctos en sus formularios, sino información desactualizada. Por lo tanto, cuando estos usuarios "editan" un formulario, en lugar de ver la información contenida actualmente en la base de datos, ven información antigua.
Tengo entendido que (normalmente) los archivos php no se almacenan en caché ya que se ejecutan en el servidor y luego el producto final se entrega al usuario. ¿Hay alguna situación que pueda hacer que un determinado usuario almacene en caché de alguna manera estos archivos "ensamblados" una vez que se reciben del servidor y luego se vuelven a cargar la próxima vez que se carga la página?
Ejemplo:
Hoy un cliente estaba tratando de editar la información usando el formulario. Me llamaron porque un campo mostraba algo incorrecto.
Inicié sesión en mi sitio y cargué el mismo formulario. Mi formulario mostraba los datos correctos (contenidos en la base de datos SQL), mientras que el de ellos mostraba datos diferentes.
Dos usuarios diferentes que miran la misma página web de php y el mismo formulario, usando el mismo navegador (chrome), que debería mostrar los mismos datos, pero no los muestra.
Estoy desconcertado en cuanto a cómo rastrear este problema y solucionarlo.
ACTUALIZAR:
Después de jugar un poco, sospecho que puede ser un problema de que el navegador del cliente o Internet sea un poco más lento que la mayoría, lo que podría estar causando que Javascript se ejecute antes de que la página esté completamente cargada.
Lo cambié para ejecutar la carga de javascript usando jQuery, lo que podría solucionar el problema hasta que pueda volver a codificar una solución más elegante, pero aún no he recibido respuesta de este cliente en particular, así que no sé si eso solucionó el problema para ellos. .pero ciertamente no dolerá.
¿Quizás el navegador está almacenando en caché la página?
Para asegurarse de que no haya caché para el navegador, pruébelo en PHP
<?php header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?>Al igual que mencionó que PHP se ejecutó en el servidor, por lo que no se almacenarán en caché. Sin embargo, los navegadores básicamente almacenan en caché los datos de formularios frecuentes o recientes para su uso posterior. Vamos a discutir esto en detalle.
De forma predeterminada, el navegador observa y recuerda toda la información completada a través de los campos <input> en los sitios web. Esto permite que el navegador ofrezca autocompletar (es decir, sugerir posibles completaciones para los campos que el usuario ha comenzado a escribir) o autocompletar.
Estas funciones están habilitadas de forma predeterminada, pero el usuario puede desactivar esta función a pedido. Sin embargo, el navegador no almacena en caché cierta información confidencial, como el código PIN, etc. Para deshabilitar el comportamiento de caché predeterminado de este navegador, puede configurar el atributo de autocomplete en "off" :
autocomplete="off"Puede hacer esto para un formulario completo o para elementos de entrada específicos en un formulario:
<form method="post" action="/form" autocomplete="off"> […] </form>La configuración de autocompletar en el formulario tiene dos efectos.
Sin embargo, un punto importante a tener en cuenta es que el comportamiento de autocompletar no funciona para los formularios de inicio de sesión. es decir, los formularios incluyen los campos de nombre de usuario y contraseña. Además, el navegador permite al usuario elegir una contraseña maestra que el navegador utilizará para cifrar los detalles de inicio de sesión almacenados. Por este motivo, muchos navegadores modernos no admiten autocompletar="off" para los campos de inicio de sesión:
Sin embargo, por último, pero no menos importante, existe una solución genuina para eliminar este problema y esto es llenar el lado del servidor del formulario de edición del usuario. es decir, a través de PHP. En este caso, no habrá problemas de almacenamiento en caché y todo funcionará sin problemas. es decir
<input type="text" value="<?php echo $username; ?>" name="firstname"/>¡Espero que esta discusión te ayude!