entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Pasar datos directamente desde PHP a localstorage en html

Explico primero lo que quiero hacer. Uso HMTL5 Builder.

Página web cliente que tira de php en un servidor.
En la web cliente tengo datos almacenados con localstorage, y mediante un submit me gustaría actualizarlos con los que me dé el servidor desde PHP.

Al igual que PHP me puede cambiar por ejemplo el contenido de un DIV,
¿se puede con PHP directamente almacenar datos nuevos en localstorage?

La idea que persigo es que no se puedan ver en el código fuente de la página web.

1 Respuesta

2votos

Leonardo-Tadei Puntos211150

Hola @PacoRuiz,

No se puede hacer lo que quieres. JavaScript, que es quien se ejecuta del lado del cliente, es el único que tiene acceso a manejar el LocalStorage.

PHP en cambio se ejecuta en el servidor, y por tanto no tiene acceso a lo que hace el navegador: solo puede enviarle cosas para que el navegador las procese.

Naturalmete que podrías hacer un script PHP que genere el código JavaScript necesario para que se almacenen y actualicen los datos, pero este código JavaScript generado tiene que ser ejecutado por el navegador (al igual que en tu ejemplo en que el script PHP devuelve el contenido de un DIV) y el navegador debe ser capaz de leer el código para ejecutarlo, así que siempre se verá este código que almacena los datos al ver el código fuente de la página web.

Espero haberte clarificado dónde y cómo funciona cada cosa!

PacoRuiz comentado Nov 3, 2013

Supongo entonces que lo más parecido a lo que pretendía hacer es recuperar los datos en el script PHP como bien me indicas, y una vez procesados, borrar el script desde por ejemplo jQuery.
Imagino que en ese momento ya no se verán como parte del código fuente del html.

Gracias

PD. Lo de no ver los datos, es sobre todo porque son muchos. La idea es tenerlos en localStorage para que el archivo html "pese" menos.

Leonardo-Tadei comentado Nov 3, 2013

Hola Paco,

no entiendo qué querés decir con "... una vez procesados, borrar el script desde por ejemplo jQuery.".

Cuando decís "una vez procesados" te referís al proceso en PHP en el servidor o al proceso en JavaScript que guasrdará los datos en LocalStorage?

Querés borrar una porción de código JavaScript después de terminar este proceso o querés borrar los datos recibidos? Si es borrar los datos recibidos, no quedarían de todas formas en el LocalStorage?

PacoRuiz comentado Nov 3, 2013

Te cuento lo que he hecho.

Con un submit, el servidor php me ha creado en mi html un input (type=hidden) con los datos que quiero almacenar en el cliente.
Ahora desde el cliente con JS leo esos datos, los meto en localStorage y borro el Input.

Esos datos solo necesito traerlos al cliente una vez, no van a cambiar en posteriores sesiones (y no hay problema por dejarlos almacenados). Lo de borrarlos del html es solo por hacer el archivo más ligero tras hacer la petición.

A partir de este momento, solo cuando necesite esos datos, accederé a leerlos del localStoragesin tener que recargarlos. Doy por hecho que esto es lo más rápido.

No sé si me expliqué bien (todo esto lo hago con HMTL5 Builder)

Leonardo-Tadei comentado Nov 3, 2013

Paco,

lo que planteás de hacer el archivo más ligero después de la petición borrando el INPUPT de tipo HIDDEN en que llegan los datos no hará que las cosas funcionen más rápido ni mejor.

Al refrescar la lista desde el servidor, esto tardará todo lo que tarde el archivo en descargarse y guardarse al LocalStorage. Una vez cargado ahí, el proceso con los datos lo harás siemper con lo almacenado en LocalStorage, con lo que el INPUT no debería influir en nada.

De todas formas si lo que querés es borrarlo del HTML podrías hacerlo así:

a = document.getElementById('ID_input_a_borrar');
a.parentNode.removeChild(a); 

En la primer línea obtenés el elemento del DOM a borrar. En la segunda vía el propio elemento le pedís al que lo contiene (su "parent") que lo remueva.

Espero te sirva!

PD: da lo mismo que lo hagas con HTML 5 Builder o con un editor de texto plano: las características y posibilidades de PHP, HTML y JavaScript no cambian por la herramienta usada.

PacoRuiz comentado Nov 6, 2013

Gracias Leonardo, ya me has dado suficientes ideas para poner el proyecto en marcha, será cuestión de probar y afinar un poco.

Te cuento exactamente lo que es y lo qué pienso hacer.
Tengo un programa de Bares y Restaurantes funcionando en windows y quiero implementar la telecomanda por tableta (vía aplicación web).
La inmensa mayoría de menús (artículos) con sus fotos apenas cambia.
La idea es guardar esos datos localmente en la tableta para que la comunicación vía ajax con el servidor sea mínima (si las fotos ocupan demasiado, simplemente las guardaré en algún directorio creado manualmente) en vez de localStore.
Cuando haya artículos a actualizar, pues los actualizo y por si acaso pido que se reinicie de nuevo la aplicación (se supone que esto se hará en tiempos muertos).

Realmente lo que pretendía era ahorrarme algo de código desde el servidor. Para el resto de cosas me irán surgiendo preguntas a medida que avance y las intentaré resolver sobre la marcha, aunque el esquema general de la aplicación ya lo tengo claro.

Gracias por la ayuda

Leonardo-Tadei comentado Nov 6, 2013

Por nada Paco,

suena interesante el proyecto y comparto contigo en que de esta forma tendrás menos tráfico contra el servidor.

Recuerda marcar esta respuesta como "la mejor" si te sirvió para mejorar la base de datos de EntreDesarrolladores.

Saludos cordiales!

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta