Recoger datos de una base de datos

¡Hola muy buenas!

Necesito algún consejo de algún experto de Corona SDK. Me gustaría saber de qué maneras se puede obtener información de una base de datos. 

Yo de momento, utilizo las funciones network.request() usando “get” para obtener los datos de la base de datos. El proceso que sigo es este:

  1. Petición “get” desde la app de Corona

  2. Petición recibida en el servidor desde PHP

  3. “echo” de la información en una página php en JSON

  4. Recepción y lectura de JSON desde la Corona SDK

El problema de este sistema, es que hay muchas maneras de interceptar la información, y por otro lado, hay que crear páginas por cada tabla de la BD. ¿Cómo lo haríais para mejorar la seguridad de la información sensible? Se podrían hacer sesiones de php?

Me gustaría saber si hay otras maneras de recoger la información de la base de datos.

¡Gracias de antemano! :smiley:

Hay muchas opciones. Si no tienes que usar la base de datos que estás usando puedes usar:

https://marketplace.coronalabs.com/plugin/gamesparks

https://marketplace.coronalabs.com/plugin/firebase-database

https://marketplace.coronalabs.com/plugin/coronium-skytable

Me imagino que hay otros que no conozco. Yo uso gamespark pero hay mucha gente que le gusta coronium-skytable.

¡Muchas gracias por tu respuesta!

Entonces, ¿estos servicios tienen sus propias base de datos que tienes que contratar y usas el pluguin para acceder a ellos?

Saludos

si. vale

También podrías hacer una api REST basada en POST y con autenticación por token, así podrías servir distintos sets de datos en base a la api y es facíl de hacer con frameworks como Lumen o Slim en PHP

Saludos!

Puedes hacer lo mismo con Gamesparks. Gamesparks usa mongo-db todo es guardado como un documento json.

¡Gracias a todos por contestar!

Me ha gustado Firebase, pero me aparece el siguiente error: WARNING: The ‘plugin.firebaseDatabase’ library is not available on this platform.

He copiado del GitHub el build.setting para no tener ningún error, me he descargado los archivos necesarios de google-service, json y el archivo lua que me recomienda la consola, y están en la raiz del proyecto, y también he vinculado la aplicación con el nombre del package, y me sigue saliendo el mismo error.

He buscado información sobre los pluguins, y resulta que muchos de ellos no funcionan en el simulador. ¿EN SERIO? No es que sean pluguins complejos, pero desde luego necesito hacer un “prueba y error” hasta que tenga más control de las funciones. ¿Esto significa que debería hacer un build cada vez que tenga que comprobar si algo funciona correctamente? Si me equivoco, rectificadme. Y tampoco funciona como app para windows.

El caso, es que me pasaré a GameSparks e investigaré, espero que esta librería sea compatible.

Link del pluguin:

https://marketplace.coronalabs.com/plugin/firebase-database

Documentacion:

https://scotth.tech/plugin-firebaseDatabase

Saludos

Mira que estuve investigando sobre las API REST que hace tiempo me recomendaste, pero no conseguí suficiente información en internet como para desarrollar algo. Pero para realizarlo con un framework tendría que dedicar mucho tiempo en aprender a utilizarlo, y la POO la llevo muy mal.

Saludos y gracias

Otra duda que tengo… alguien sabe el precio aproximado de la licencia de pago de GameSparks? FireBase de google cuesta 25$/mes. Lo pregunto porque en la pagina oficial tienes que ponerte en contacto con ellos y llegar a un acuerdo. Creo que enviaré un correo preguntando precios aproximados.

¡Saludos!

Si entras en el programa “indy” los primeros 100,000 MAU son gratis después de eso te cobran 0.01 centavos americanos por MAU.  

Gracias Agramonte.

Al final me decanto por el API REST con Lumen (con Laravel), porque he encontrado este video de youtube super instructivo:

https://www.youtube.com/watch?v=VmtOP5sEH68

Estoy sorprendido de los avances que estoy haciendo.

Espero no cambiar más de idea  :rolleyes:

Bueno si cambias de idea yo te puedo hacer un video tambien.

Con Lumen es super sencillo, animo nos cuentas como te fue :smiley:

Voy avanzando, pero me he quedado estancado en un punto primordial. No puedo conectarme a mi base de datos, y he hecho un montón de pruebas, cambiando el numero de puerto, creando una contraseña maestra y buscando el error por internet, pero no he encontrado una respuesta. Os la dejaré aquí por si me podéis ayudar… mientras tanto estoy avanzando en otras cosas del temario.

Lo que tengo que rellenar es esto:

APP\_ENV=local APP\_DEBUG=true APP\_KEY= XXXXXXXXXXXXXXXXXXXXXXXXXX APP\_TIMEZONE=UTC LOG\_CHANNEL=stack LOG\_SLACK\_WEBHOOK\_URL= DB\_CONNECTION=mysql DB\_HOST= XXXXXX.strato.es DB\_PORT=3306 DB\_DATABASE=DXXXXXX DB\_USERNAME=UXXXXXX DB\_PASSWORD=XXXXXXXXXXXXXXX CACHE\_DRIVER=file QUEUE\_DRIVER=sync

La información la extraigo de mi pagina de hosting con strato, con el nombre de la base de datos y de usuario. El puerto no lo se y lo he intentado buscar. No se si APP_ENV=local es correcto.

El error que me sale es este: 

SQLSTATE[HY000] [2002] Se produjo un error durante el intento de conexión y a que la parte conectada no respondía adecuadamente tras un periodo de tiempo, o bien, se produjo un error en la conexión establecida ya que el host conectado no ha podido responder.

Saludos y de verdad que agradezco mucho vuestra ayuda  :)  :)  :)  :) !!!

Otra cosa que os quería preguntar.

Para obtener los datos de la base de datos debería hacer de nuevo un response() o echo de los datos en pantalla en JSON? Es lo que hacía antes, pero en teoría ahora con mucha más seguridad. Lo digo porque si sólo se hace una petición no hay problema, pero si se hacen varias peticiones de varios usuarios, como se distinguen entre ellas, y que además se correspondan?

Saludos y gracias!  :lol:

Hola :smiley: en torno a tu duda pues puedes valerte de la variable de session de PHP o usar algo como Redis, sobre lo de la seguridad y distinguir usuarios te recomiendo usar un token unico por session que se use para validar las peticiones :smiley:

Saludos

Gracias Miguel!

Otra cuestión… si hablamos de API REST, es un sistema que no utiliza estados no? Entonces mejor uso el envio continuo de tokens para validar las peticiones. Por otro lado, de qué sirve un token si se puede ver en la URL? ¿Cómo se oculta?

Por cierto, ya he hecho mi primera app pequeña y utilizo postman para hacer las pruebas, y el logueo funciona bien. Pero sigo sin ver donde está la seguridad.

Saludos y gracias!

La cosa está funcionando muy bien. Si alguien tiene alguna duda, puedo ayudar.

Saludos y gracias!

Hay muchas opciones. Si no tienes que usar la base de datos que estás usando puedes usar:

https://marketplace.coronalabs.com/plugin/gamesparks

https://marketplace.coronalabs.com/plugin/firebase-database

https://marketplace.coronalabs.com/plugin/coronium-skytable

Me imagino que hay otros que no conozco. Yo uso gamespark pero hay mucha gente que le gusta coronium-skytable.

¡Muchas gracias por tu respuesta!

Entonces, ¿estos servicios tienen sus propias base de datos que tienes que contratar y usas el pluguin para acceder a ellos?

Saludos