Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas
Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas

noviembre 23, 2011

Using PHP like a JavaWeb Project on Tomcat server



Recuerde que..
Este blog esta desarrollado en idioma español pero utilizando Google Traductor puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a Integracion Google.

Continuando con nuestras investigaciones y pruebas de tecnologías Web vigentes, nos encontramos con la librería Quercus, que es una implementación Java de PHP (de PHP  versión 5.3.2 para Quercus 4.0.18 vigente a fecha 30.09.2011), aunque aunque debemos tener presente que la Tecnología Caucho promotora de la librería, y del servidor Resina, se muestra bastante vigente y activa, principalmente a causa que éste servidor puede ser  utilizado para soportar PHP en desarrollos Java y de Google Appengine, como una librería en el primer caso y como una aplicación en el caso del SDK de Google Appengine para Java (resaltando que Quercus es uno de los componentes principales del servidor Resina, que es un servidor de aplicaciones JSP y servlets similar a Tomcat ó Glassfish, y que puede colaborar de manera transparente con el servidor Jetty empleado por GAE).

Lla infraestructura cloud de Google Appengine soporta actualmente Python y Java; lenguajes que nos permiten entre otras cosas, conectarnos y trabajar con el datastore de Appengine, que es una base de datos escalable y de alta confiabilidad desarrollada Google (definido con el concepto "big table" ); asimismo, a partir de Octubre del 2011, Appengine también soporta lo que se ha denominado Google Cloud SQL, que corresponde a la base de datos relacional MySQL, adecuada para obtener de ella una alta disponibilidad y confiabilidad dentro de la infraestructura de Google ( libre de mantenimiento y administración de parte de los usuarios de nuestros aplicativos ), y ya nos debe resultar familiar que dentro el entorno de desarrollo Java usualmente resulta fácil conectamos a estas bases de datos utilizando JDBC, método que ahora también es soportado por Google Appengine (en el caso de usuarios Phyton se puede utilizar DB-API con el mismo propósito).

Resulta también cierto afirmar que, para los desarrolladores Web en general, hablar de conexiones a bases de datos MySQL es hacer referencia a  un proceso ahora muy difundidos, y que esta base de datos da soporte a muchos proyectos opensource muy difundidos como son los gestores de contenidos Drupal, Wordpress, Elgg, Joomla; phpBB y muchas otras aplicaciones desarrollados para el Back-End.PHP+MySQL, y es importante destacar asimismo que, si nuestra plataforma de desarrollo mantiene soporte a PHP, pues  nos permitiría tener acceso a todos esos proyectos y "servicios sociales". Sería  entonces posible la opción de poder utilizar todos estos desarrollos dentro de la infraestructura de Java, y de los servidores de servlets y JSP como Tomcat ó Glassfish (los que son también muy difundidos en empresas y organizaciones corporativas), e incluso también dentro de la infraestructura de Google Appengine mediante el SDK de Java, y conectarnos con la novedosa infraestructura Google Cloud SQL, e incluso con el mismo datastore de Google Appengine, y para ello, en primer lugar, debemos conseguir utilizar PHP como parte de un proyecto JavaWeb, y dentro de la plataforma de desarrollo de un servidor de aplicaciones ( al igual como en el entorno de los servidores IIS utilizamos PHP con ASP.Net y C# mediante WebMatrix )..... y todo esto es posible mediante Quercus..

Tenemos que tener en cuenta que al ser Quercus una codificación Java del lenguaje PHP, nuestros proyectos que utilicen código PHP ya no se comportaría como un lenguaje interpretado, sino como "lenguaje compilado" durante su ejecución en un servidor de aplicaciones, con ello se lográ mejorar el rendimiento y tiempo de  respuesta de nuestros aplicativos desarrollados con PHP dentro de un proyecto JavaWeb, mejorando todo el rendimiento de nuestro aplicativo, y con ese objetivo (y para que podamos efectuar nuestras comparaciones), es que vamos a "migrar" nuestros codelabs que presentamos como parte de nuestras pruebas del Back-End PHP+MySQL para que trabajen ahora en un servidor Tomcat, cargándolos como proyectos JavaWeb usando el IDE Netbeans, que como ya hemos indicado, nos facilita la configuración y despliegue de nuestros desarrollos en dicha plataforma.

Quercus es una tecnología que vió la luz desde el año 2006,  y el 2009 tuvo relevancia junto con el lanzamiento del SDK de Java para Google  Appengine, y después de una difusión bastante promisoria,  inclusive con una presentación en el "Google I/O" de ese año (donde mostraron una "migración" de Wordpress que corre completamente dentro de infraestructura de Google con cambios mínimos de código PHP, y aunque la aplicación colgada en Appengine a veces sobrepasa la cuota libre proporcionada por Google para su desarrollador, nos consta su funcionamiento), pues parece que la aplicación no ha tenido suficiente soporte de parte de sus desarrolladores  y de la comunidad en general, para lograr las correspondientes facilidades y poder continuar con las pruebas y el desarrollo de aplicaciones, pero creo que todo puede variar con el reciente lanzamiento de Google Cloud SQL, con lo que poder utilizar PHP dentro de proyectos JavaWeb tanto en aplicaciones para nuestros propios servidores y dentro de la infraestructura de Google, y ahora en ambos casos,  prácticamente sin cambiar nada de código PHP, pues ahora desde esta perspectiva,  pensamos que ésta tecnología si puede llegar a convertirse en una opción bastante importante para considerar y creemos importante aportar al respecto... y por ello hicimos nuestras propias pruebas que ahora presentamos.


Para nuestros codelabs de esta oportunidad, vamos a mantener la opción de poner en cada proyecto lo necesario para que funcionen directamente ( solo siendo necesario configurar nuestras conexiones a MySQL en los codelabs que lo requieran, pero por ello el peso de nuestros proyectos se han incrementado a casi 10Mb, y  que corresponden casi todo al archivo resin.jar de Quercus que pesa mas dei 9Mb); entonces, para disfrutar de este codelab solo será necesario cargar los proyectos a nuestro Netbeans, como  proyectos JavaWeb con fuentes existentes. Vale decir, en el caso de los dos primeros codelabs que nos muestran la forma de uso de Quercus y de código PHP sobre una plataforma de desarrollo Java, pues deberá cargar y ejecutar directamente los proyectos... pero en los casos de nuestros codelabs Grid-MySQL, Wizard-sample e Integración Google 3ra. parte (Int-Google03), pues si ya hubiésemos instalado y puesto en funcionamiento nuestros codelabs anterioires correspondientes al uso del Back-End PHP+MySQL (ó del uso de PHP sobre servidores IIS mediante WebMatrix), en ese caso, los ejercicios podrán ser ejecutados y probados directamente, pero si Ud. estimado lector, ha llegado directamente a este codelab, deberá crear las bases de datos MySQL requeridas y verificar sus respectivos parámetros de conexión (host, usuario, password y las bases de datos utilizadas en estos), para lo cual también entregamos los achivos *.sql  correspondientes.

Ya desde nuestra primera entrada empezando desde cero que dió inicio a las investigaciones de nuestro proyecto Integración Google, les habíamos indicado que el lenguaje PHP, integrado completamente al servidor Apache en nuestra instalación de Appserv, como un componente del servidor, y que incluso podía ser instalado de manera independiente; el caso es que al instalar Appserv, u otro servidor similar LAMP, WAMP, etc, el lenguaje PHP ya viene configurado y listos para usar en nuestros desarrollos; pero ahora, para nuestras pruebas de Quercus,  y  ver nuestros códigos PHP trabajando en un proyecto JavaWeb, no requerimos instalar ni configurar nada nada sobre el servidor... Quercus como ya hemos indicado, es una librería que viene incluida en el servidor Resina, y a la que podemos acceder copiando el archivo resin.jar desde  la carpeta bin de nuestra descarga del servidor (ó tambien del war de nuestra descarga de Quercus; que como podrán observar, son el mismo archivo). Asi que en esta oportunidad, nuestro primer codelab es nuestro proyecto myQuercus, creado a partir del war de Quercus versión 4.0.18 (30.09.2010), el cual para adecuarlo a las nuevas versiones de la biblioteca, solo bastará con reemplazar el archivo resin.jar por el correspondiente de nuestras descargas de la pagina oficial de caucho.com


Instalando nuestros codelabs "myQuercus y PHP-with-Java" en Netbeans para ejecutar sobre el servidor Tomcat.

Como se indica, tenemos por supuesto que haber instalado en nuestro ordenador Netbeans y el servidor Tomcat, y si no lo han efectuado, conviene que den una lectura detallada e incluso ejecuten nuestro codelab Usando el Back-End Java+MySQL: Iniciandonos, donde se detalla el proceso y se ejecuta nuestros codelabs Integración Google 1ra. y 2da. parte, los que al no contener codificación Java ni PHP, son directamente ejecutados sobre esta plataforma y nos muestran el funcionamiento de los elementos del framework ExtJs que venimos empleando en nuestros desarrollos ( como maquetación utilizando viewport, Menu TreePanel, windows, paneles, stores y grillas, etc), y el empleo de algunas de las API de Google como autenticación, manejo de spreadsheets de Google Docs, visualizaciones y Mapas de Google...

Estos codelabs para ser instalados en nuestro IDE Netbeans y ser ejecutados sobre el servidor Tomcat, deben ser primero descargados sobre una carpeta que podríamos denominar "Quercus" ( el material de apoyo indicado a continuación ),  y con  lo que podremos crear nuestros proyectos a partir de las fuentes proporcionadas, y asimismo debenos indicar, durante el proceso y en la pantalla de configuración correspondiente, que utilizaremos el servidor Tomcat para ejecutar nuestros proyectos..

Material de Apoyo : 
( do click on blue icons to download )

myQuercus.rar, que corresponde a nuestra adaptación del war descargado de la pagina oficial de Quercus para ser utilizado con Netbeans, y que al ejecutar como proyecto JavaWeb podrán observar la información disponible proporcionada que hemos adecuado, especialmente la correspondiente a la forma de actualización a las nuevas versiones de la librería, pues al ser un proyecto bastante vigente y activo, como hemos indicado por su empleo en el entorno de desarrollo del SDK Java de Google Appengine, es continuamente actualizado... e incluso, en este año 2011 han logrado el reconocimiento Java EE6 Web Profile Certified with Healht System & Cloud Support (pueden revisar la cronologia), lo que nos puede dar una idea del real potencial y las posibilidades de esta librería.





PHP-with-Java.rar, que corresponde a nuestra muestra de como utilizar código PHP conjuntamente con Java, y para ello ejecutamos la función phpinfo() que nos muestra la versión PHP que utiliza nuestra librería Quercus instalada (que puede ser diferente dependiendo de nuestra version de Quercus que utilicemos); además de datos y variables del entorno PHP disponibles para nuestros desarrollos. Este codelab también solo necesita ser cargado y ejecutado a nuestro Netbeans para funcionar.





Instalando nuestros codelabs "Grid-MySQL, Wizard-sample e Integracion Google 3ra parte" del Back-End PHP + MySQL, en Netbeans para ejecutar sobre Tomcat:

Nuestros codelabs referidos al uso del Back-End PHP+ MySQL esta dividido en tres partes, los que son:   


1.- Iniciándonos (Grid-MySQL.rar ), que nos muestra un modelo CRUD -opciones básicas de Crear, Modificar, Borrar, Buscar e Imprimir-, sobre una tabla de una base de datos MySQL, considerando componentes dinámicos, y es el que corresponde a nuestro codelab Grid-MySQL indicado.

2.- Temas de Seguridad y Wizards (Wizard.sample.rar),  que muestra el mismo desarrollo anterior pero considerando una pantalla de acceso para poder utilizar dicha aplicación...y a la que le hemos acondicionado componentes dinámicos respecto al manejo de idioma de nuestro navegador ( la API language de Google, cuyo efecto podemos observar al cambiar el idioma de nuestro navegador...para ello, siga la ruta : Herramientas, Opciones, Avanzado, Contenido Web y Configuración de Idiomas en Google Chrome si están utilizando dicho navegador por supuesto);

y por último, tenemos:

3.- Nuestro codelab Integración Google 3ra parte (Int-Google.rar), que nos muestra un Modelo TreePanel de visualizaciones Google y del framework ExtJs, además de Google Maps, y a nuestro modelo CRUD de Mantenimiento de la tabla de presidentes utilizada en los dos primeros codelabs referidos, la que hemos unido al ejercicio en este caso, como muestra de como integrar nuestros componente desarrollado en nuestros proyectos.

Cabe reiterar que estos codelabs corresponden a los considerados en nuestros ejercicios sobre el Back-End PHP+ MySQL pero ahora instalados sobre el IDE Netbeans para ser ejecutados sobre el servidor Tomcat, para lo que debemos crear los proyectos a partir de las fuentes proporcionadas (y que como ya hemos indicado, debemos descargar sobre una carpeta que podemos denominar "Quercus"), y asimismo no debernos olvidarnos de indicar durante el proceso y en la pantalla de configuración correspondiente, que utilizaremos el servidor Tomcat para ejecutar nuestros proyectos..

Vale recordar que, como estos codelabs corresponden al uso de la base de datos MySQL, éste es un componente nativo de un servidor AppServ; entonces para el caso de las bases de datos requeridas para los ejercicios, recomendamos crearlas sobre el mismo servidor MySQL ya instalado con  Appserv, pues sobre un mismo ordenador no tiene ningún sentido tener instalado varios servidores MySQL ) aunque es posible, si se configuran para puertos diferentes ); y asimismo, que para crear las bases de datos debemos utilizar la herramienta phpMyAdmin también disponible en nuestro servidor Appserv con los archivos *.sql entregados en cada ejercicio.

Material de Apoyo : 
( do click on blue icons to download )

Grid-PHP-MySQL.rar, que corresponde a nuestro codelab "iniciándonos" sobre el Back-End PHP+ MySQL,  proyecto desarrollado tomando como referencia un tutorial de la pagina Oficial ExtJs, cuyo código por supuesto hemos mejorado y que utiliza la versión ExtJs-3.4.0; y que nos presenta un modelo CRUD -opciones básicas de Crear, Modificar, Borrar, Buscar e Imprimir-, sobre una tabla de una base de datos MySQL, considerando componentes dinámicos.


Using the Back-End PHP+MySQL (Getting Started) corriendo como proyecto JavaWeb sobre nuestro servidor local Tomcat :



Este codelab trabaja con la base de datos "tutorial", que si no la hemos creado para nuestros otros codelabs, deberá crearla primero con la herramienta phpMyAdmin de Appserv, y luego importar sobre ella las tablas y datos requeridos desde el archivo pdtes_usa.sql incluído en la descarga.

Recuérdese asimismo que en el archivo database.php, y en la instrucción msql_connect debemos indicar los datos para conectarnos a la base de datos (host, usuario y password), y en la instrucción msql_select_db,  indicar el nombre de la base de datos donde hemos importado las tablas y datos contenidos en pdtes_usa.sql ("tutorial" es el nombre de la base de datos que hemos utilizado).

Pueden también revisar nuestra entrada : Using the Back-End PHP+MySQL ( Getting Started ) donde mostramos con mayor detalle el contenido de cada componente de este codelab, aunque en esa oportunidad, las mostramos para instalar y hacer funcionar este proyecto sobre el entorno de desarrollo de Appserv ( servidor Apache+ PHP+ MySQL), pero cuyos conceptos son completamente compatibles para utilizarlos sobre este entorno de desarrollo de WebMatrix, por cuanto, en dicha plataforma, en ese caso, solo utilizamos al servidor IIS  y el lenguaje PHP instalado sobre ella... y el funcionamiento del servidor IIS es similar al del servidor Apache al desplegar código PHP, y esto porque en nuestro codelab no estamos utilizando ningún código ASP.Net ó C#.

Wizard-sample.rar, que corresponde a nuestro codelab "Temas de Seguridad y Wizards (acceso)" referidos al Back-End PHP+ MySQL,  donde mostramos los fundamentos para empezar a diseñar nuestros sistemas y proyectos tomando en consideración pantallas de acceso (Wizards) y revisando que opciones de seguridad debemos empezar a considerar en ellos. Este codelab hace referencia a como poder acceder (ó restringir el acceso a usuarios no autorizados) a nuestro modelo CRUD del codelab anterior, y para ello hace uso de los datos registrados en la tabla usuarios creada al importar pdtes_usa.sql sobre la base de datos "tutorial" ya creadas. Todo el código empleado en el codelab es PHP sobre HTML y Javascript, los que mediante Quercus on ahora soportados como proyecto JavaWeb, que cargaremos sobre Netbeans y ejecutaremos sobre nuestro servidor local Tomcat.

Para este codelab en la base de datos Tutorial debemos agregar manualmente la tabla usuarios que debe tener como mínimo los campos: ID (int, primary key e auto-incremental(, usuario, varchar(15); y password también varchar(15)... y allí indicar los valores de nuestro usuario y password de acceso (passer, passer por ejemplo). Las generalidades de configuración y conexión a la base de datos Tutorial los podemos observar al inicio del archivo index.php (donde nos conectamos a la base de datos mediante mysql_connect y mysql_select_db), y a partir de la línea 242 del código, donde se verifica que nuestro nombre de usuario y password se encuentren registrados en la tabla usuarios.

Using the Back-End PHP+MySQL (Wizard and safety themes) corriendo como proyecto JavaWeb sobre nuestro servidor local Tomcat :

Go to Wizard-Sample Codelab...


Pueden también revisar nuestra entrada : Using the Back-End PHP+MySQL ( Wizard & Safety themes) donde mostramos con mayor detalle el contenido de cada componente de este interesante codelab, y en que se detallan una de la principales formas de uso del lenguaje PHP en lo que respecta al manejo de base de datos, cookies y enlace entre diferentes páginas PHP.. y por supuesto, como ya hemos indicado, este proyecto lo podemos correr desde WebMatrix como ya hemos indicado...


Int-Google03.rar, que corresponde a nuestro codelab "Integracion Google 3ra parte" referidos al Back-End PHP+ MySQL, donde mostramos los fundamentos para empezar a diseñar nuestros sistemas y proyectos tomando el consideración el enfoque de uso que nos ofrece el framework ExtJs (maquetación utilizando viewport, uso de un menu TreePanel, al que se accede mediante una pantalla de acceso ó Wizard, permite la declaración y manejo de stores,  y mostramos la forma de conectarnos a una base de datos MySQL utilizando PHP en este caso, lo que finalmente nos permiten acceder a las diferentes visualizaciones  Google y ExtJs que hemos venido presentando en nuestros codelabs anteriores, incluyendo también al Modelo CRUD de Mantenimiento del listado de presidentes de los dos ejercicios anterioires que forman parte de esta entrega.

Este ejercicio trabaja con las bases de datos IGCodelab contenidos en igcodelab.sql (datos de productos de belleza), y la base de datos Tutorial (donde tenemos registrados a los presidentes USA contenidos en pdtes_usa.sql). Pero en esta oportunidad, el nombre y password del usuario para acceder al Modulo son los contenidos en la tabla usuarios de la base de datos IGCodelab. Los datos que conexión a la base de datos IGCodelab, y la grabación de cookies empleadas a lo largo del modulo, son detalladas en drivers.php, y el chequeo del usuarios se detalla en database.php en la función getuser(), a partir de la linea 63 del código.

Integracion Google 3ra. Parte corriendo como proyecto JavaWeb sobre nuestro servidor local Tomcat :



Pueden también revisar nuestra entrada Integracion Google (3ra parte) donde mostramos con mayor detalle el contenido de cada componente de este ejercicio...

NOTAS DE TRABAJO :


1.- Los ejercicios de este codelab funcionan sin mayor problema tal como los presentamos, pero para los codelabs Grid-MySQL e Int-Google03, como podrá observarse, los archivos *.php involucrados utilizan codificación UTF-8 (en el Back-End PHP+MySQL sobre servidores Apache utilizábamos codificación ANSI). ... Ocurre que cuando se trabaja con cookies (como es el caso de estos codelabs), puede haber restricciones para el uso de la función setcookie(), por cuanto PHP por defecto, en un servidor Apache, restringe las salidas del buffer del servidor luego que se haya cargado o ejecutado algun script HTML... y en el caso de estos proyectos JavaWeb, que implementan PHP mediante el uso de Quercus, no existen estan restricciones, ello aún cuanto, como podrán observar, en el archivo de configuración web.xml se ha configurado a nuestros archivos y scripts *.php para que trabajen con codificación UTF-8.

Cuando trabajamos con WebMatrix no ocurren estos problemas y es indiferente que nuestros archivos *.php sean codificados UTF-8 ó ANSI, pero como siempre, debe verificarse al ejecutarlos su correcto funcionamiento incluso antes de su puesta en producción para evitar contratiempos.

2.- Si revisan ahora con detalle los códigos de nuestros ejercicios, podrán observar, tal vez con sorpresa, que no hay ninguna variación respecto a los códigos presentados para ser ejecutados en  las otras que hemos venido utilizando  ( servidor Apache - PHP con Appserv, y servidor IIS + PHP con WebMatrix), y realmente sólo cambia la presentación de cada proyecto, vale decir, la adaptación que hemos efectuado para adecuarlos como proyectos JavaWeb, con la inclusión de la carpetas WEB-INF (donde se encuentra la carpeta lib que contiene nuestra librería resin.jar, y donde configuramos a través de web.xml el despliegue de nuestros servlets y librerías de nuestra aplicación en el servidor Tomcat); y de la carpeta META-INF, que contiene a context.xml, mediante el cual identificamos a nuestra aplicación en el servidor.

3.- Cabe resaltar que utilizando esta librería, y en la forma como lo utilizamos en nuestros codelabs (sobre un servidor como Tomcat ó sobre Glassfish), podríamos instalar en nuestros servidores de aplicaciones locales a proyectos sociales bastante conocidos como Drupal, Wordpress, Joomla, phpBB, etc. sin cambiar en nada el código de esos aplicativos y consiguiendo incluso un mejor rendimiento al trabajar PHP como un "lenguaje compilado" (apúntese que en las plataformas de desarrollo LAMP ó WAMP, PHP es un "lenguaje interpretado"). Lo mismo podríamos hacer si se considera utilizar el servidor Resina, y correr nuestros desarrollos Java y PHP, ó proyectos combinados de ambos, sobre dicha plataforma.

4.- Como indicamos, el archivo resin.jar puede ser copiado de la descarga del servidor Resina (carpeta bin), ó del war de la descarga de la página de Quercus. Recomendamos bajarla desde esta última opción por cuanto, en un proyecto JavaWeb instalado en nuestro IDE Netbeans, no resultan necesarios los componentes de java que se incluyen en el war, pero al trabajar con Google Appengine, con el SDK de Java y también con el IDE Netbeans, en ese caso, la carga de nuestros proyectos principalmente al hacer nuestras pruebas, en ese caso puede ser necesario trabajar con ANT y considerar todos los componentes de Java incluídos en el war de nuestra descarga, y los que utilizaremos en nuestra próxima entrada que nos mostrará como trabajar con PHP en Google Appengie, utilizando por supuesto, el SDK de Java de GAE y Quercus...

Saludos
@Mlaynes




octubre 02, 2011

Using the Back-End Java+MySQL: Instalando sdsimple..



Recuerde que..
Este blog esta desarrollado en idioma español pero utilizando Google Traductor puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a Integracion Google.

...y bueno amigos, continuando con el Back-End Java(JSP)+MySQL, pero continuando con nuestra modalidad de presentación de "codelabs", vamos ahora a poner la valla bien alta presentando en esta oportunidad al proyecto sdsimple.

Que es el proyecto sdsimple? es una aplicación administrativa desarrollado bajo la modalidad "Todo a la Web" bastante compacta y completa para facilitar la administración y gestión de PYMES que se distribuye bajo los términos de la Licencia Pública General GNU (tal como está publicada por la Free Software Foundation; ya sea la versión 3 de la licencia, o (según su elección) cualquier otra versión posterior). Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; incluso sin las garantías de COMERCIALIZACIÓN o USABILIDAD O UTILIDAD PARA USOS PARTICULARES... las anotaciones son las textuales indicadas por Pedro Peña García (desarrollador del proyecto), a quien de esta humilde comunidad presentamos nuestros respetos... sdSimple se presenta como un sistema de facturación on-line y como la "gestión eficaz de tu negocio", y en este caso vamos a precisar los alcances del proyecto sdsimple para que sepamos que tenemos entre manos:

  • No solo es facturación, abarca compras, ventas, cobranzas, pagos y gestión de caja y bancos; que considero un modelo muy interesante y apropiado para empresas de servicios, o empresas que "legalmente" conforme a la legislación de cada país, por el monto de sus ventas y/o activos, no son obligadas a mantener control de Stocks ni activos (basicamente lo que conocemos como PYMES). Sdsimple no hace control de stocks -el costo de los stocks y de ventas se tendría que calcular por diferencia de inventario, como es usual y legalmente establecido para este tipo de negocios-  pero si registra los impuestos basicos involucrados en el proceso (IVA y retenciones), por supuesto todo esto depende de cada país y  puede ser suficiente, pero por poner un ejemplo, en Argentina parece existen mas impuestos y/o retenciones que considerar respecto al caso peruano, de acuerdo a solicitudes de amigos de esta comunidad que han llegado a instalar el proyecto y ponerlo en funcionamiento de acuerdo a sus necesidades.
  • El proyecto en sí tiene soporte multiempresa, pero nos da opción a un único código de acceso a cada una de ellas, asimismo solo considera un único correlativo para la facturación y otro para las compras, vale decir, tal como esta diseñado solo soporta un único punto de venta y de registro; es decir, esta realmente diseñado para ser usado directamente por los administradores del negocio.
  • No presenta un modulo de contabilidad pero por supuesto que conociendo al detalle el modo de funcionamiento del sistema, y las bases de datos que la componen (las que son intuitivamente identificables), pues podría fácilmente enlazar a una aplicación contable..
  • Esta desarrollado utilizando como Back-End Java(JSP) + MySQL, y por el front utiliza ExtJs-2.2, una versión bastante estable y totalmente compatible con la ultima version ExtJs-3.4 de su tipo distribuido por sencha.com

Prueba SdSimple on line:


  • URL : http://free.hostingjava.it/-igcode/ ( en evaluación por fallas en el servicio)

  • Alternativa :

    URL : http://mysdsimple.aws.af.cm/ ( New! )
    ( nuestro proyecto sdsimple corriendo sobre la plataforma Cloud de AppFog )

  • credenciales: usuario passer, password passer, para ambos casos
  • al ingresar, lea detalles de funcionamiento en la sección "readme" del menú..



sdsimple on AppFog Cloud


Algunas limitaciones de servicio teníamos con la instalación de nuestro proyecto sdsimple sobre freehostingjava.it, así que decidimos aprovechar la plataforma Cloud de AppFog, una PaaS publica muy difundida que acepta incluso servicios clouds privados, y que por supuesto, nos proporciona una cuota free mas generosa: hasta 2Gb de source code, 100Mb de almacenamiento MySQL (soporta también otras bases de datos SQL y No-SQL), 5Gb de data transfer mensual, y otros detalles que pueden revisar en el siguiente enlace)

Vale destacar en este punto que a diferencia de un servicio de hosting java convencional, en este caso, al tratarse de una PaaS, resulta imprescindible averiguar el nombre de la base de datos, del usuario y la contraseña que el servicio Cloud de AppFog nos proporciona al activar nuestra cuenta y crear nuestro servicio de base de datos (MySQL en este caso), y para ello nos resultó conveniente crear una aplicación "phpmyAdmin" y enlazarla (Bind it) al servicio MySQL creado y que utilizamos para nuestro "proyecto mysdsimple", y ya con phpmyAdmin instalado podemos crear, consultar y trabajar con nuestras tablas y datos de manera mucho mas fácil y eficiente, teniendo presente que para este caso, no consideramos ninguna opción de seguridad para la creación de las vistas al utilizar CREATE VIEW, con el objeto de simplificar su creación (los nombre de las bases de datos y usuarios autogeneradas son generalmente bastante largos).

Este ultimo punto indicado es importante para considerar porque el nombre de nuestra base de datos NO es el nombre del servicio MySQL que creamos, sino que éste se encuentra definido dentro de la variable VCAP_SERVICES que se crea al utilizar los servicios cloud de AppFog, y una forma muy practica de obtener este dato es creando en nuestra aplicación "phpmyAdmin" un archivo PHP que podemos llamar info.php (puede ser cualquier nombre), y que contenga como única instrucción phpinfo(); al ejecutarlo directamente desde nuestro navegador, desde la dirección de nuestra aplicacion "phpmyAdmin" por supuesto, obtendremos la pantalla de información PHP, y en ella, los valores de la variable VCAP_SERVICES (pueden también utilizar los métodos de código indicados en la documentación de AppFog)

Detalles de mysdsimple app desplegada en AppFog Cloud:
  • Servidor Apache Tomcat 6.0.35
  • JDK 7, version 1.7.0
  • mySQL version 5.5.31

y finalmente, hay que considerar que al trabajar con JDK7, al ejecutar nuestros comandos sql, debemos preparar nuestra declaraciones considerando el parámetro: Statement.RETURN_GENERATED_KEYS ó utilizar el método preparedStatement considerando ese mismo parámetro; y que con el objeto de recuperar las conexiones que se van agotando en el tiempo (time out), y durante la carga de nuestros proyectos JavaWeb, no olvidemos de considerar en la configuración de nuestro "pool de conexiones" los parámetros: validationQuery="SELECT 1" testOnBorrow="true", que resuelven estos problemas y evitan excepciones que podrían afectar el funcionamiento de nuestro proyecto..


Consideradas y planteadas las "limitaciones" del modelo de nuestro proyecto sdsimple, pasaremos a hablar de sus "virtudes" por cuando sdsimple es un verdadero proyecto cloud-computing que fácilmente podríamos adaptar para una gestión completa de un negocio o empresa PYME, por supuesto que haciendo las correcciones y/o adiciones que se requieran, pero principalmente considera que sdsimple nos facilita considerablemente todas las cosas que hay que tener presentes en un proyecto "completo" usando el Back-End Java + MySQL, y nos puede resultar un buen modelo para nuestros propios proyectos.

Debe resaltarse asimismo que, trabajar con Java no es lo mismo que trabajar con PHP que es un lenguaje de programación interpretado, diseñado originalmente y principalmente para la creación de páginas web dinámicas. PHP se usa principalmente para la interpretación del lado del servidor (server-side scripting) y por supuesto, para las conexiones con una diversidad bases de datos.. pero PHP se adapta muy bien con el servidor HTTP Apache -de uso casi generalizado- y viene ahora completamente integrado con él, como podrá fácilmente comprobar al revisar los miles de servicios hosting website y webservers que se promocionan por la red (y actualmente a costos bastante acequibles que incluso pueden ser menores US$5.00 mensuales, y en muchos casos Unlimited storage, unmetered transfer, and of course.. Unlimited domains.) ..pero el mundo Java no solo va asociado al mundo Web, con él pueden hacerse desde simples hasta complejos sistemas de escritorio, y con una perfomance comparable a la del lenguaje C, y por supuesto que con ella podemos desarrollar de todo: aplicaciones de escritorio, proyectos WEB, para moviles, y realmente para todo lo que se pueda conectar y/o asociar a una computadora... es un lenguaje muy potente, y su curva de aprendizaje no es tan sencilla, pero si usted estimado amigo lector ya ha llegado hasta etapa de nuestros codelabs (y se ha tomado la molestia de instalarlos, ejecutarlos y llegado a comprender), pues ya habra notado y convencido que mucho de lo que es desarrollo Web es como manejar una serie de multiples "paquetes" en diversos lenguajes y bajo determinados formatos y convenciones, que ya varios de ellos ya están desarrollados y listos para su uso... un ejemplo básico para nuestro caso es el manejo del formato JSON, que como han podido comprobar, las librerías que utilizamos para PHP ya están hechas y solo las utilizamos -como cuando utilizamos widgets, iframes, etc.- ..pues lo mismo sucede en el mundo Java... y lo mismo tambien con el mundo Python y otros ..y conociendo y manejando todos esos "paquetes" o modelos transversales a los entornos de desarrollo web, pues nos resultará mas sencillo, por poner un ejemplo, conectarnos a cualquier base de datos.. "leer", trabajar y mostrar su contenido como planteamos en nuestro proyecto, utilizando cualquier entorno de desarrollo, y utilizando frameworks como con ExtJs que hemos venido trabajando en nuestros codelabs.. y por supuesto que con otros frameworks también se puede llegar a lo mismo, pero la facilidad que pueda uilizar un mismo framework para diferentes entornos: PHP+MySQL, Java+MySQL, GAE-Python (Google AppEngine), e incluso con el "modernísimo" node-js/V8, que es Javascript pero por el lado del servidor, pues eso aún solo lo he comprobado con ExtJs.. aunando a lo anterior la posibilidad de integrarnos también a desarrollos para móviles utilizando Sencha Touch..

...volviendo al tema, finalmente ahora veremos como instalar el proyecto sdSimple en nuestro servidor local Tomcat, utilizando el IDE Netbeans para facilitarnos el trabajo, y poder tener al proyecto en un entorno "profesional" de desarrollo listo para que lo empecemos a revisar ..y empezar a planificar y realizar nuestras propias modificaciones y mejoras.... .por supuesto, que si han revisado nuestra entrada anterior ya deben tener una idea de como realizar todo el proceso, pero en esa oportunidad "cargamos" un proyecto que no estaba ligado al mundo Java (nuestros codelabs Integración Google 1ra y 2da parte), pero en esta oportunidad si vamos a utilizar códigos java y la base de datos MySQL que debemos haber instalado en los inicios de este proyecto Integración Google junto con Appserv (ó el entorno HTTP Apache, PHP y MySQL que hayamos elegido (WAMP ó LAMP), así que ahora solo quedan algunas cosas propias de dicho entorno que debemos considerar antes de proceder con la instalación.

 el caso es que el entorno de desarrollo Tomcat-Java-Netbeans no viene anexado a una base de datos en particular, así que podemos conectar a cualquier base de datos ya sea "local" o "remota" , es decir, disponible en nuestro equipo, en nuestra intranet o en la "nube" (además que desde el comienzo se menciono que el entorno de desarrollo AppServ no era sino la unión de tres grandes "sistemas" que nos facilitaba el proceso de configuración y enlace entre ellos, el servidor HTTP Apache, la base de datos mySQL y el lenguaje de programación PHP; pues ahora vamos a comunicarnos y mostrar a la base de datos MySQL sin utilizar HTTP Apache ni PHP  ...usando ahora Apache Tomcat y Java a través del entorno de desarrollo de Netbeans.

Si no tenemos instalado "Appserv" podemos proceder a instalar unicamente MySQL (si es posible), pero si no queremos trabajar directamente en el editor de comandos de MySQL, y trabajar con un entorno "gráfico" para el manejo de la base de datos como phpmyAdmin, pues necesitaremos también instalarlo por separado (también es posible), pero si queremos facilitarnos las cosas ..y probar todos nuestros "codelabs" anteriores, mejor procéda a la instalación de Appserv (u otro "servidor" similar), cuyos conceptos describimos en nuestro post empezando desde cero....


Material de Apoyo
( do click on blue icons to download )

myProject.rar (24,1Mb), que son las fuentes del proyecto SdSimple modificadas para corregirle unos defectos no críticos - la selección de tipo de "tema" por ejemplo - y para darle algunas prestaciones adicionales que a nuestro entender pueden ser importantes para el uso de SdSimple, como permitir que el IVA acepte decimales ( muchas gracias a 'Nash Bridges' de Argentina, amigo de esta comunidad ), y por supuesto, también hemos actualizado el framework ExtJs empleado a su versión Ext-3.4.0, la última compatible de sencha.com al código empleado en el proyecto SdSimple. Pueden revisar nuestra entrada el Potencial de ExtJs para mayores detalles al respecto.

leeme.txt, archivo readme elaborado por el desarrollador, que detalla el proceso de instalación original sugerido para el proyecto sdSimple ( para referencia ).

Cabe asimismo reiterar que estas "mejoras" efectuadas al proyecto sdSimple son mínimas y no definitivas ( a modo de demostración de las modificaciones que se quieran implementar ), y desde esta comunidad valoramos el esfuerzo y mérito de Pedro Peña García, desarrollador del proyecto, por haber realizado su diseño y programación, y para declararlo bajo licenciamiento GPL, hecho que apreciamos y reconocemos, y que nos permite ahora ponerlos a su alcance, que lo podamos instalar en nuestros propios servidores,  y que así realmente podamos observar con el debido detalle y en funcionamiento, un modelo "cloud computing" para la gestión administrativa de negocios PYME, y por supuesto, para que lo puedan considerar y/o emplear en sus proyectos y desarrollos personales bajo la plataforma Apache Tomcat + Java(JSP) + MySQL


NOTA : el empaquetado del proyecto es de 24.6Mb, y ha resultado algo pesado por la actualización a ExtJs-3.4.0 y por que hemos dejado en el proyecto todas las librerías necesarias para que el proyecto SdSimple pueda instalarse y funcionar sin mayores problemas ...es lo que esperamos, y lo que ha sido uno de los principales "problemas" de proyecto, por cuanto, instalar un proyecto Java tiene sus cosas... y ahora, solo queda empezar a detallar los pasos necesarios para su instalación en nuestro servidor local, lo que como hemos indicado y podrán intuir, es un proceso bastante similar a lo planteado para correr nuestros proyectos Integración Google 1ra y 2da sobre Apache Tomcat utilizando Netbeans, descrito en nuestro Codelab anterior de introducción al manejo básico del entorno de desarrollo Java(JSP)... a los que solo falta agregar algunas consideraciones propias de manejo del IDE Netbeans y de la base de datos MySQL.


Pasos para ejecutar la instalación.
( proceso resumido )


Paso 1
Crear la base de datos mySQL del proyecto

..desde nuestro servidor Appserv u otro similar, crear utilizando phpMyAdmin la base de datos myproject ( se crea vacía por supuesto), y cargar con la utilidad de importación, las tablas necesarias desde el archivo sdsimple.sql proporcionado y disponible en la carpeta descargada del proyecto. Solo la tabla "empresa" debe tener registrada la información de nuestra empresa de prueba, así como los datos usuario y password para acceder al sistema; "passer" y "passer" respectivamente por defecto, pero podemos modificarlos a nuestro criterio.. asimismo, podemos verificar el año de ejercicio y otros datos generales (solo los datos resaltados son críticos y necesarios para los efectos del caso).

NOTA IMPORTANTE :

Antes de iniciarse la importacion del archivo *.sql proporcionado, debe revisarse con detalle el caso de las vistas utilizadas; en este caso, el proyecto original sdsimple utiliza vistas con "Create View", y a las que ha agregado la opción: SQL SECURITY DEFINER que hace referencia al usuario con que nos conectamos a MySQL - root u otro que estemos utilizando - El caso es que, debemos cerciorarnos que el proceso de creación de las vistas sea efectuado correctamente sino tendremos probemas para trabajar las opciones de presupuestos, ventas, compras, cobros, pagos y movimientos bancarios.. puede tambien obviarse la opción de seguridad planteada eliminando la sentencia DEFINER=`admin`@`%` SQL SECURITY DEFINER en cada creación de vista.





Paso 2
Cargar nuestro proyecto al Netbeans

... un paso similar al realizado al "cargar" nuestros proyectos Integracion Google 1ra y 2da parte...recuerde que en este caso nuestro proyecto se denominará myproject, y debe indicar correctamente la ubicación de nuestra carpeta "web" y las otras solicitadas.. una vez cargado nuestro proyecto debemos ingresar las "propiedades" de nuestro proyecto e indicar que el formato de nuestra fuente Java será JDK5 ó superior; y asimismo que utilizaremos el servidor Tomcat para lanzar nuestro proyecto...


NOTA IMPORTANTE :

las fuentes proporcionadas del proyecto sdsimple son casi las mismas de las originales del proyecto pero adecuados para trabajar con la version 3.4.0 de ExtJS, pero los "jar" proporcionados solo permiten el correcto funcionamiento del proyecto sobre un servidor Tomcat 5.x y utilizando JDK5.. pero el proyecto puede facilmente actualizarse para que trabaje con Tomcat versiones 6.x y 7.x (incluso con JDK7 de Java); para ello, debe revisarse la Guia de Migración Tomcat, y que para nuestro caso significa que debemos grabar el archivo commons-logging-api.jar, de la librería Apache Commons Logging en la carpeta WEB-INF/lib de nuestro proyecto, dado que este servicio ya no es soportado directamente en los servidores Tomcat 6.x y 7.x (entre otros cambios que conviene revisar..).







Paso 3
Configuración del "Pool de Conexiones"

Paso muy importante que requiere una explicación del porque del proceso, y es el que nos permitirá finalmente ingresar al sistema y poder utilizarlo (caso contrario, solo podremos acceder a la pantalla de acceso y se nos denegará el acceso).. la configuración se realiza sobre el archivo "context.xml" que pueden ubicar en la carpeta "configuration files" del proyecto cargado ( ó dentro de la carpeta META-INF de "web" ); y allí deben verificar los datos de conexión a la base de datos MySQL que hemos creado en el primer paso (usuario y password principalmente, el contexto es Datasource por defecto por lo que no debemos cambiarlo excepto si llegásemos a instalar el proyecto en un servicio de hosting externo, en que generalmente se nos proporciona un nombre de contexto personalizado (o modifiquemos nosotros el contexto).



Paso 4
Configuración del Log del proyecto...

Paso importante para monitorear el funcionamiento "interno" del sistema a través de los mensajes de servidor Tomcat, especialmente si no llegásemos a realizar una instalación exitosa del proyecto y allí podremos detectar y corregir los principales errores de nuestra instalación ( observe que en nuestro caso configuramos la salida de nuestro log en la carpeta "Logs" de nuestro servidor Tomcat indicando la ruta completa; y por supuesto que podemos grabarla donde querramos, pero es importante revisar, con el editor de nuestra preferencia, los "mensajes" que arroja nuestro proyecto durante su carga y funcionamiento )



Paso 5
disfrutemos de nuestra instalación, y por supuesto...

que podemos hacer con SdSimple ?


si ya llegamos a ingresar al proyecto... aparte de la satisfacción de haber culminado el proceso ( observe que hay un historial bastante grande de casos de instalaciones no exitosas que pueden revisar en el mismo blog de la misma página oficial del proyecto SdSimple, que incluso ahora ya no esta activo ); pues aún quedan varios puntos pendientes y muy interesantes por revisar, como por ejemplo:

  • El método de acceso al sistema..
  • El modelo de conexion y trabajo con la base de datos MySQL (altas, bajas, modificaciones)
  • El método de impresión utilizado...
  • Manejo de servicios proporcionados como por mail.jar..
  • otros métodos utilizados...




..y ahora ..a planificar nuestras modificaciones y mejoras...

:/)


Saludos
@Mlaynes





abril 24, 2011

Integracion a Google (3ra parte)


Recuerde que..
Este blog esta desarrollado en idioma español pero utilizando Google Traductor puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a Integracion Google.

...y continuando con el entorno del Back-End PHP+MySQL pasamos a mostrar nuestro modelo de visualizaciones Google y ExtJs mostrado en nuestros codelabs Integracion Google 1ra y 2da parte, pero utilizando una base de datos llamada IGCodelab creada sobre MySQL (cuyo archivo IGCodelab.sql si proporcionamos en esta oportunidad para facilitar el desarrollo del ejercicio), y en la que la respectiva Tabla de Usuarios tiene registrados nuestro username y password de acceso al Modulo (puede probar con prueba y prueba, o passer y passer), entonces, y solo así, podremos acceder a las opciones de nuestro TreePanel que muestra ls diversas opciones de visualizacion utilizando las API de Google y de ExtJS que henos preparado, y creo suficientes para observar el potencial de ExtJS integrado a Google para el desarrollo de aplicaciones reales, y que incluye el manejo de Wizard cuyo modelo básico fue desarrollado en un tutorial del Quizzpot.

Con que contamos en estos momentos?

Si siguieron el desarrollo de nuestros codelabs desde el inicio, y por supuesto los anteriores respecto al Back-End PHP-MySQL, ya deben tener instalado en sus ordenadores un servidor de pruebas Apache con PHP+MySQL, y PHPMyAdmin (para administrar nuestras bases de datos), por lo que solo basta que verifiquen que tengan completo acceso a MySQL a través de PHPMyAdmin, accediendo a la misma y poder observar las tablas de la base de datos Tutorial creada en el ejercicio anterioir... y bueno, ahora nuevamente ya estamos listos para empezar nuestro codelab.

Audiencia

Se recomienda que, para entender este codelab, tengamos los suficientes conocimientos de ExtJs y desarrollo Web (HTML, Javascript ...y algo de PHP (que si no dominamos o desconocemos, pues no debería preocuparnos tanto puesto que en este modelo solo se utilizan instrucciones fáciles de comprender y su sintaxis es bastante sencilla, además que si nuestro interes va por el empleo de este Back-End, debe ser un buen motivo para empezar a explorar este lenguaje).


Asimismo se recomienda haber leído y probado: Integracion a Google (1ra parte) e Integración a Google (2da parte), especialmente para comprender las herramientas utilizadas para integrar de las API de Google a ExtJs (y viceversa), que en este caso no se emplean pero se hacen referencia.

Material de Apoyo
( do click on blue icons to download )

Int-Google03.rar, Descomprimir  el material de apoyo en una carpeta de www de nuestro servidor local AppServ u otro compatible Apache-PHP-MySQL, y se creara la carpeta "Int-Google03" que contiene los archivos correspondientes al presente codelab (si no entiende este paso favor consulte "empezando desde cero').Luego en éste código debemos proceder a la configuración de las rutas de importación de nuestra versión del framework ExtJs que utilicemos ( recomendado cualquier versión Ext-3.x, la versión ExtJs4 no es soportada por éste código ).


Int-Google03.rar ( 2.6Mb ), Este código corresponde al material de apoyo utilizado para instalar el presente codelab pero en la plataforma de Desarrollo WebMatrix. ( compatible con el servidor Appserv en este caso, pues este codelab sólo involucra al Back-End PHP+ MySQL que también es soportada por WebMatrix ).  El resultado de éste código es una versión mejorada del material presentado primero, y comprende al proyecto completo, es decir, se ha adicionado y configurado para su uso, a la versión "liviana" del framework  ExtJs versión 3.4.0, y si se desempaqueta éste código en una carpeta de "www" en nuestro servidor local AppServ (dentro de otra carpeta que podemos llamar "WebMatrix" como hemos indicado ), podremos ver directamente los resultados al llamarlo desde la barra de direcciones de nuestro navegador usando : "http://localhost/WebMatrix/Int-Google03" (previa configuración de los parámetros de conexión a la base de datos, tal como se indica a continuación), y en este caso, también deben tenerse en cuenta las instrucciones para la correcta configuración de nuestra base de datos "igcodelab" empleada en este codelab, y para lo cual se anexa el archivo igcodelab.sql.

NOTA : Entre las mejoras planteadas con este segundo código, cabe resaltar que ahora en nuestro modelo de Menu TrrePanel hemos adicionado a nuestro modelo CRUD de Mantenimiento y Listado de Presidentes empleado en los codelabs anteriores referidos al tema del Back-End PJP+MySQL a efectos de mostrar como se puede "integrar" estos modelos de manejo de base de datos en nuestros proyectos personales...


Pasos para ejecutar el Codelab...

Para ejecutar el tutorial debemos primero debe realizar lo siguiente:
  • Crear la base de datos IGCodelab. Esta base de datos contiene las tablas drivers, productos y usuarios que son las necesarias para ejecutar el codelab (utilice el archivo igcodelab.sql que incluimos en el material de apoyo).
  • Para los que están ejecutando el ejercicio en su versión "completa", la sugerida para probar sobre la plataforma WebMatrix, sin haber realizado los anteriores referidos al Back-End PHP+MySQL, deben crear la base de datos Tutorial, y cargar las tablas y datos desde el archivo pdtes_usa.sql el cual es utilizada en ese ejercicio.
  • Creada nuestra base de datos, puede observar que la tabla usuarios tiene registrado los usuarios prueba y passer con la que podremos acceder al Modulo.
  • Con nuestro explorador debemos ingresar a la carpeta "Int-Google03" creada en la carpeta www del Appserv, y alli "editar" el archivo "drivers.php". Este archivo en sus primeras lineas tiene en su inicio las intrucciones de conexion a nuestra base de datos:

    // Database connection information
    $host = "localhost"; // Host name
    $user = "root"; // User default for MySQL access
    $pwd = "..yourPassword.."; // put your PHPMyAdmin Password
    $db = "igcodelab"; // Our Database of exercise
    En ella debemos modificar los parametros $user (si nuestro usuario de ingreso no es root sino otro personalizado); y $pwd, donde debemos poner nuestro Password de conexion a MySQL (el que utilizamos para nuestro PHPMyAdmin); en $db va el nombre nuestra base de datos (si no corresponde a "igcodelab" como se indica debemos cambiarlo a como corresponda); y finalmente debemos tener en cuenta que si nuestra prueba la realizamos directamente en un servicio hosting externo con dominio propio, entonces en $host, en lugar de localhost debemos colocar nuestra direccion web correspondiente: www.mydominio.com
  • ..y ahora nuevamente ya estamos listo para ejecutar nuestro ejercicio...!
Ahora, si con nuestro navegador ingresamos a "localhost", y luego al ingresar a la carpeta a carpeta "Int-Google03"  siguiendo la ruta donde hayamos descargado el material de apoyo (pero que debe dentro de la carpeta www de AppServ); pues al ingresar esta carpeta que contiene a nuestro archivo index.html, deberá aparecer una pantalla como la que se muestra a continuación:


Esto nos indica que nuestra descarga y copia ha sido correcta, y ya estamos listos para revisar el material de apoyo descargado y descubrir como hemos desarrollado nuestro codelab de Integracion Google empleando Wizards y Visualizaciones desarrollados con la API de Google y ExtJs.


Nota.- si no aparece la primera pagina mostrada es probable que no hayamos descargado nuestra version completa o "liviana"de ExtJs en la carpeta "www", como mostramos en "el potencial de ExtJs"; o tal vez, estemos usando una versión de ExtJs diferente de la indicada en nuestro archivo HTML (..ahora estamos usando la versión ext-3.3.1 vigente al 01/03/2011). Observe la ruta rerlativa a www que utilizamos para acceder dichos archivos "../../extjs/extjs-3.1.1" en este caso (que indica 2 carpetas sobre nuestra descarga del tutorial). Efectúe los cambios de la ruta necesarios en el archivo index.html del tutorial y pruebe nuevamente hasta que aparezca la pantalla indicada.

La segunda imagen nos muestra nuestro modelo de Pantalla de Acceso o Login, la cual en su parte inicial, al seleccionar el drivers de nuestra conexion, al mismo tiempo verifica la conexion a nuestra base de datos (si no aparece la opcion MySQL es porque aún cuando nuestra configuración de ExtJs es correcta, nuestra conexion a nuestra base de datos MySQL no lo es, y debemos revisar los parametros indicados de nuestro archivo drivers.php.

Asimismo, si no nos aparece nada, o al ingresar nuestros datos de acceso no se activa nuestro treePanel, o si la consola de nuestro browser nos muestra mensajes de problemas de conexion a la base de datos o conexion a MySQL, pues debemos revisar con mas detalle nuestra configuración y observar si los datos indicados han sido correctamente ingresados...


Nota (22/11/2011).- los ejercicios mostrados sobre uso del Back-End PHP+MySQL funcionan sin mayor problema tal como los presentamos, pero para los codelabs Grid-MySQL :Using the Bak-End PHP+MySQL (Getting Started), y en este codelab: Int-Google03, como podrá comprobarse, los archivos *.php involucrados utilizan codificación ANSI, aún cuando lo recomendado cuando trabajemos en nuestros proyectos web es que como norma todos nuestros archivos sean construidos con la codificación UTF-8.... Ocurre que cuando se trabaja con cookies (como es el caso de estos codelabs), puede haber restricciones para el uso de la función setcookie(), por cuanto en PHP por defecto, al trabajar sobre un servidor Apache, se encuentran restringidas las salidas del buffer del servidor luego que se haya cargado o ejecutado algun script HTML... y en el caso de los dos codelabs mencionados, como puede fácilmente observar por la forma en que se encuentran construidos los ejercicios, primero se cargan a los archivos index.html, y luego durante el proceso se invoca a los respectivos archivos *.php para interactuar con la base de datos MySQL. 

Esta restricción puede superarse convirtiendo los archivos *.php que invocan a las funciones setcookie() a codificación ANSI, o como otra alternativa, reconfigurar nuestro archivo PHP.ini, indicando la directiva:  output_buffering=on (su valor por defecto es off).

La documentación no indica al detalle la causa de esta salvedad pero puede ser verificado - utilizando Firebug de Firefox para hacer sus pruebas - que al convertir los archivos *.php del proyecto Int-Google03 a codificación UTF-8 (utilizando notepad++ u otro editor). Por ejemplo, pueden probar con el archivo drivers.php que se utiliza primero para la grabación de los cookies, al cual a variar a codificación UTF-8 éste arroja  por la consola de inspección el warning : "Cannot modify header information - header alreaqdy sent by..",.y nos indica las líneas de nuestras instrucciones setcookies(); y por supuesto, no funciona la carga de datos, o mas propiamente dicho, se bloquea la salida de datos desde el buffer del servidor, aún cuando la información haya sido "capturada"...

Esto reiteramos, como hemos indicado, se soluciona al convertir nuevamente a ANSI nuestro archivo drivers.php, o también podemos reconfigurar nuestro PHP.ini la directiva: output_buffering=on, y en este ultimo caso, aún cuando nuestros archivos PHP sean codificados UTF-8 si se permitirá la "salida" de la información y el ejercicio funcionará sin ningún contratiempo.

Cabe anotar asimismo, que esta situación no ocurre si trabajamos con PHP sobre un servidor IIS (como WebMatrix), pero como hemos indicado al inicio de esta entrada que podemos bajar el codelab correspondiente a dicha plataforma para probar el ejercicio sin realizar mayores onfiguraciones para la importación de las librerías ExtJs, entonces, hemos cargado en ese codelab los archivos *.php que involucren el manejo de cookies en codificación ANSI para evitar cualquier problema en su funcionamiento.


Saludos
@Mlaynes

Opina en nuestro foro §FB..!





marzo 10, 2011

Using the Back-End PHP+MySQL ( Wizard & Safety themes )


Recuerde que..
Este blog esta desarrollado en idioma español pero utilizando Google Traductor puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a Integracion Google.

...y continuando con el entorno del Back-End PHP+MySQL pasamos a mostrar el mismo modelo de la entrada anterior que nos muestra un mantenimiento basico de Tablas (Altas, Bajas, Modificación, Consulta e Impresion); pero en este caso mostrando previamente una pantalla de acceso o Wizard, mediante el cual, de habernos registrado previamente en una respectiva Tabla de Usuarios (en donde debe estar registrados nuestro username y su respactivo password de acceso al Modulo), entonces, y solo así, podremos acceder a nuestro GridEditor que nos muestra una lista de Presidentes de U.S.A y los partidos a los que pertenecen...

El hecho de utilizar Wizards o Pantallas de Acceso a nuestros modulos o sistemas, va asociado de manera ineludible a temas de seguridad por lo que debemos empezar a tomar en cuenta las siguientes consideraciones:
  • No debe permitirse el "acceso directo" a nuestras paginas, en este caso a nuestro modelo "grideditor" de presidentes, vale decir que si alguien obtuviese la direccion URL de nuestro GridEditor (como debe ser con cualquier otra pagina de nuestros sistemas), estos no deben poder acceder a ellas, sino que deberán ser redirigidos a la Pantalla de Acceso de nuestro modulo o sistema, y acceder a nuestras opciones solo si hubiesen sido debidamente registrados.
  • Debe asimismo tomarse en cuenta acciones de Auditoria de Datos, es decir, que deberíamos a empezar a registrar en una Tabla de diseño adecuado, todas las operaciones que estan efectuando nuestros usuarios (Alta, Baja, Modificacion, Consulta, y su fecha y hora de operación), y así poder hacer un seguimiento de ellas (este tema no forma parte del presente "codelab" pero lo mencionamos para su consideración)
  • Debe tambien tomarse en cuenta una Validacion de Datos pensando en el  funcionamiento del sistema (no solo en las condiciones estáticas de las mismas); es decir por ejemplo, si en nuestro ejercicio se quisiera eliminar un partido poltico (que trabaja en este caso como una Tabla de Datos), primero se debe verificar si no esta siendo utilizada en la tabla de Presidentes (que para los efectos expuestos trabaja en este caso como si se tratase de una Tabla de Transacciones); de no hacerlo así y se procediera a borrar un partido que esta siendo utilizado.. sencillamente los presidentes que pertenecen a dicho partido "desaparecerían" de nuestra Vista (por la condicion Where del Query), y eso seria erróneo. pues la data seguiría grabada en nuestra base de datos pero no se mostraría (la  codificación del presente codelab tampoco contempla lo indicado, pero también reiteramos que debe tenerse en cuenta.
  • y finalmente, debe tomarse en cuenta temas de seguridad de la WEB y evitar la acción de virus y hackers... PHP nos presenta varias opciones y temas de seguridad que debemos empezar a revisar y considerar para nuestros proyectos, y para lo cual detallaremos algunas referencias tecnicas que esperamos que con su aporte se puedan mejorar aún mas, por cuanto, en lo que respecta a estos temas en particular, los diversos software de desarrollo  permanentemente presentan mejoras en sus formas y opciones... y en lo que respecta a este "codelab", hemos considerado un Modelo Básico pero bastante practico, el cual esperamos  mejorar aun mas para cuando presentemos nuestro modelo de Integracion a Google utilizando el manejo de las API de visualizaciones.
Con que contamos en estos momentos?

Si siguieron el desarrollo de nuestros codelabs desde el inicio, y por supuesto el anterior respecto al Back-End PHP-MySQL, ya deben tener instalado en sus ordenadores un servidor de pruebas Apache con PHP+MySQL, y PHPMyAdmin (para administrar nuestras bases de datos), por lo que solo basta que verifiquen que tengan completo acceso a MySQL a través de PHPMyAdmin, accediendo a la misma y poder observar las tablas de la base de datos Tutorial creada en el ejercicio anterioir... y bueno, ahora nuevamente ya estamos listos para empezar nuestro codelab.

Audiencia

Se recomienda que, para entender este codelab, tengamos los suficientes conocimientos de ExtJs y desarrollo Web (HTML, Javascript ...y algo de PHP (que si no dominamos o desconocemos, pues no debería preocuparnos tanto puesto que en este modelo solo se utilizan instrucciones fáciles de comprender y su sintaxis es bastante sencilla, además que si nuestro interes va por el empleo de este Back-End, debe ser un buen motivo para empezar a explorar este lenguaje).


Asimismo se recomienda haber leído y probado: Integracion a Google (1ra parte) e Integración a Google (2da parte), especialmente para comprender las herramientas utilizadas para integrar de las API de Google a ExtJs (y viceversa), que en este caso no se emplean pero se hacen referencia.

Material de Apoyo
( do click on blue icons to download )

Wizard-sample.rar, Descomprimir el material de apoyo en una carpeta de "www" de nuestro servidor local AppServ u otro compatible Apache-PHP-MySQL, y se creara la carpeta "Wizard-sample" que contiene los archivos correspondientes al presente codelab (si no entiende este paso favor consulte "empezando desde cero'). Luego en éste código debemos proceder a la configuración de las rutas de importación de nuestra versión del framework ExtJs que utilicemos ( recomendado cualquier versión Ext-3.x, la versión ExtJs4 no es soportada por éste código ).

Wizard-sample.rar ( 2.6Mb ), Este código corresponde al material de apoyo utilizado para instalar el presente codelab pero en la plataforma de Desarrollo WebMatrix.( compatible con el servidor Appserv en este caso, pues este codelab sólo involucra al Back-End PHP+ MySQL que también es soportada por WebMatrix ). El resultado de éste código es una versión mejorada del material presentado en el enlace anterior, y comprende al proyecto completo, es decir, se ha adicionado y configurado para su uso, a la versión "liviana" del framework  ExtJs versión 3.4.0, y si se desempaqueta éste código en una carpeta de "www" en nuestro servidor local AppServ (dentro de otra carpeta que podemos llamar "WebMatrix" como hemos indicado ), podremos ver directamente los resultados al llamarlo desde la barra de direcciones de nuestro navegador usando : "http://localhost/WebMatrix/wizard-sample" (previa configuración de los parámetros de conexión, tal como se indica a continuación a la base de datos "tutorial" (empleada en este codelab), y el archivo pdtes_usa.sql anexado corresponde al mismo empleado por el codelab anterior Grid-PHP-MySQL, y en la que debemos crear a la tabla "usuarios" y registrar el nombre y password de nuestro usuario para acceder al sistema, y lo debemos crear "manualmente" como una manera de familiarizarnos con el manejo de la herramienta phpMyAdmin que viene instalado con el servidor Appserv.

NOTA : Entre las mejoras planteadas con este segundo código, cabe resaltar que ahora nuestra pantalla de acceso presenta en su codificación condiciones dinámicas respecto al lenguaje de nuestro navegador para lo cual, hemos procedido a determinar mediante instrucciones HTML el lenguaje utilizado por nuestro navegador... y con instrucciones javascript, y empleando la Google API language, mostrar la información desplegada en nuestra pantalla de acceso en español, inglés e incluso otros idiomas (prueben con cambiar el lenguaje de su navegador Ingresando a Herramientas, Opciones, Avanzado, Contenido Web, Configuración del Idioma - si estamos utilizando Google Chrome -  ; asimismo, en nuestros archivos php, se esta utilizando toda la información cargada en los "cookies", para así poder recuperar en cada "pagina php", los datos de acceso a nuestra base de datos MySQL...

NOTA (22/11/2011) : Desde Mayo del 2011, Google ha declarado en proceso de obsolescencia de la API Language v.1 que utilizamos en este codelab (y de forma definitiva a partir del 01/12/2011 según la documentación respectiva); y ha considerado la versión de la Google API Language v.2 como un servicio exclusivo de paga - así es en estos momentos, sin cuotas libres... algo extraño en el mundo Google, pero esa es la realidad por el momento - y la actual versión 1 de la API Language de Google no se muestra estable en su funcionamiento, por lo que hemos modificado nuestro código para que, en caso de efectuarse la traducción, se muestre nuestro mensaje en ingles... es una restricción que también hemos tenido que efectuar a los mensajes de bienvenida y de alertas de nuestro Blog, los que eran multi-lenguaje -incluyendo chino, japonés, etc.- los que ahora, de no funcionar la API de traducción (por motivos de cuota, restricción, etc.), pues por lo menos muestren los mensajes en Inglés... Google informa que el gadgets Google Traductor seguirá siendo un servicio libre, pero mientras no contemos con algún proyecto opensource de fuerza para traducciones libres (como si existe para el caso de servicios de Mapas por ejemplo), pues ., .increible!... pero también podemos recurrir a la Microsoft API Language, la cual nos brinda una cuota de subscripción libre de hasta 5M de caracteres por mes.


Pasos para ejecutar el Codelab...

Para ejecutar el tutorial debemos primero debe realizar lo siguiente:
  • Crear en nuestra base de datos TUTORIAL la tabla usuarios. Esta base de datos fue creada en el ejercicio anterior (importada de pdts_usa.sql), y en esta oportunidad no les proporcionamos un archivo para su creación con el objeto que sean creadas directamente utilizando nuestro PHPMyAdmin o DBManager. Los requisitos de nuestra tabla de usuarios es que tenga definido como mínimo los siguientes campos: ID : Int(10), primary_key, auto_increment y unique; el campo usuario: varchar(15), y el campo password: varchar(15); adicionalmente podemos crear otros campos de diferentes tipo como Apellidos completos -o separado Paterno, Materno- Nombre completo, e-mail, telefono fijo, móvil, id_skype, direccion, o cualquier forma de contactar con nuestros usuarios, etc.. siempre dependiendo de los requerimientos de diseño de nuestro modulo o sistema ( los tres primeros campos deben tener exactamente ese nombre -respetando minusculas y mayusculas para mejor identificacion- caso contrario, debemos cambiar la respectiva codificación en nuestro archivo index.php que controla el acceso a nuestro ejercicio).
  • Creada nuestra tabla usuarios, pues ahora debemos registrar 2 o mas usuarios para hacer nuestras pruebas; puede ser uno llamado prueba con nombre prueba y password prueba (para hacer mas facil nuestro ingreso de datos), o como sea de nuestro agrado.
  • Con nuestro explorador debemos ingresar a la carpeta "Wizard-sample" creada en la carpeta www del Appserv, y alli "editar" el archivo "index.php". Este archivo en sus primeras lineas tiene en su inicio las intrucciones de conexion a nuestra base de datos:

    // Database connection information
    $host = "localhost"; // Host name
    $user = "root"; // User default for MySQL access
    $pwd = "..yourPassword.."; // put your PHPMyAdmin Password
    $db = "tutorial"; // Our Database of exercise
    En ella debemos modificar los parametros $user (si nuestro usuario de ingreso no es root sino otro personalizado); y $pwd, donde debemos poner nuestro Password de conexion a MySQL (el que utilizamos para nuestro PHPMyAdmin); en $db va el nombre nuestra base de datos (si no corresponde a "tutorial" como se indica debemos cambiarlo); y finalmente debemos tener en cuenta que si nuestra prueba la realizamos directamente en un servicio hosting externo con dominio propio, entonces en $host, en lugar de localhost debemos colocar nuestra direccion web correspondiente: www.mydominio.com
  • ..y ahora nuevamente ya estamos listo para ejecutar nuestro ejercicio...!
Ahora, si con nuestro navegador ingresamos a "localhost", y luego al ingresar a la carpeta a carpeta "Wizard-sample"  siguiendo la ruta donde hayamos descargado el material de apoyo (pero que debe dentro de la carpeta www de AppServ); pues al ingresar esta carpeta que contiene a nuestro archivo index.html, deberá aparecer una pantalla como la que se muestra a continuación:


Esto nos indica que nuestra descarga y copia ha sido correcta, y ya estamos listos para revisar el material de apoyo descargado y descubrir como hemos desarrollado nuestro Wizards de conexion a nuestra aplicacion descrita en el post anterior, correspondiente a un Modelo Basico de mantenimiento de Tablas con opciones de Alta, Baja, Modificacion, Consulta, Impresion, Busquedas, etc, bajo un formato clasico.


Nota.- si no aparece la primera pagina mostrada es probable que no hayamos descargado nuestra version completa o "liviana"de ExtJs en la carpeta "www", como mostramos en "el potencial de ExtJs"; o tal vez, estemos usando una versión de ExtJs diferente de la indicada en nuestro archivo HTML (..ahora estamos usando la versión ext-3.3.1 vigente al 01/03/2011). Observe la ruta rerlativa a www que utilizamos para acceder dichos archivos "../../extjs/extjs-3.1.1" en este caso (que indica 2 carpetas sobre nuestra descarga del tutorial). Efectúe los cambios de la ruta necesarios en el archivo index.html del tutorial y pruebe nuevamente hasta que aparezca nuestra pantalla de acceso.

La segunda imagen nos muestra nuestro modelo de mantenimiento de una tabla desarrollado en el post anterior, si hacemos click sobre dicha imagen nos remitirá a la pagina indicada en la web oficial de ExtJs para la demostracion, pero en nuestro aplicativo, en el toolbar le hemos agregado un boton adicional para salir del Modulo (y que nos redirigirá a nuestra pantalla inicial de acceso); asimismo vale indicar que nuestras pruebas las debemos realizar sobre nuestro servidor local ( htpp://localhost ), pues en este caso se trata de una version mejorada como indicamos.

Asimismo, si al ingresar nuestros datos definidos en la tabla usuarios no aparece nuestra pantalla de mantenimiento del ejercicio anterior, y nuestro browser nos muestra mensajes de problemas de conexion a la base de datos o conexion a MySQL, pues debemos revisar con mas detalle si nuestra tabla usuarios ha sido correctamente creada y definida, y si los datos de acceso registrados en ella son a su vez tambien correctamente ingresados...

Detalle del Modulo.

Al revisar los archivos desempaquetados de nuestro Material de Apoyo encontraremos los siguientes archivos:
  • Readme.txt, donde encontraremos informacion respecto a este tutorial y los foros que nos sirvieron de apoyo y referencia para desarrollar este ejercicio.
  • pdts_usa.sql, archivo tipo texto en formato de lenguaje SQL con que se crearon  las tablas presidents y parties  de nuestra base de datos tutorial (la ponemos de referencia, pues como indicamos antes, nuetra tabla de usuarios requerida para este ejercicio deberá ser creada directamente con PHPMyAdmin o DBManager de nuestro servidor MySQL).
  • database.php, archivo de tipo texto en formato de lenguaje PHP con el cual actua del lado del servidor para interactuar con nuestra base de datos, en ella hemos comentado las partes que corresponden a la carga de datos de acceso a nuestra base de datos, así como las funciones correspondiente a cada caso como es la actualizacion, creación, borrado, busqueda e impresion de nuestra data; las formas de este codigo puede ser facilmente comprendido y ajustado anuestros desarrollos propios.
    Se presenta asimismo las funciones getlist() y getparties() que son las ejecutan nuestras consultas de las tablas MySQL, habiendose comentado las adiciones efectuadas por el caso de efectuar "Conteo de Paginas" y "Busquedas rapidas".
    Se presenta asimismo a las funciones JEncode y codeDate, la primera para llamar a las funciones standard de codificacion del formato Json, y la segunda para el tratamiento de los campos tipo fecha al formato mm/dd/yyyy empleado en el GridEditor de presidentes de nuestro ejercicio..
  • JSON.php, archivo de tipo texto en formato PHP que es una libreria clasica de PHP para el manejo del formato JSON con el que se trabaja las base de datos y tablas de MySQL (y que siempre debemos utilizar en nuestros proyectos que trabajemos con MySQL)
  • Index.php, archivo de tipo texto en formato PHP, HTML y Javascript debidamente etiquetados por cada grupo de codificación. Este archivo es de ejecución automatica y en ella se define nuestra pantalla de acceso al Modulo, y la correspondiente consulta a nuestra tabla de usuarios respecto a que si los datos ingresados (nombre y password), son correctos y corresponden a los registrados en nuestra tabla usuarios, lo que permitira el acceso a nuestro GridEditor de presidentes.

    Las instrucciones de contacto vía mail y redireccionamiento a nuestra Fan Page Facebook son detallados en nuestro post referido a técnicas de Localización e Internacionalizacion. (y próximamente a este codelab le agregaremos también la técnica de traduccion automatiza del API Language de Google, conforme al lenguaje de nuestro navegador, para completar el manejo del referido tema).

  • Grid-PHP-MySQL.php, en formato PHP y HTML en donde la parte PHP del mismo realiza el control de acceso a nuestra aplicación (para evitar los "accesos" directos sin haber utilizado el Wizard), y asimismo, la parte HTML indica las directivas de inicio de nuestro ejercicio para la importacion de las librerias de ExtJS y las de nuestro ejercicio.
  • presidentslist.html, archivo en formato HTML que nos muestra una Tabla, la cual se genera al ejecutar la opcion impresion de nuestro ejercicio: luego en las instrucciones de nuestro archivo database.php podrá observar la técnica de como se manda a imprimir dicho documento.
  • mainscript.js, archivo en formato ExtJs debidamente empaquetado utilizando namespace, que nos muestra las funciones e instrucciones ExtJs que permiten el funcionamiento de las opciones de Actualizacion, Creacion, Modificacion, Consulta, Impresion y Busqueda, entre otras opciones, de nuestra aplicacion de mantenimiento (no varia del codelab anterior).
  • searchfield.js, archivo en formato ExtJs que exclusivamente contiene las funciones que nos muestran el recuadro de Busqueda Rapida de nuestro codelab anterioir (no varía).
  • style.css, archivo en formato CSS que permite la llamada a las imagenes que utilizaremos en los botones de acceso a las opciones de nuestro ejercicio mostradas en la barra superior de nuestra ventana (toolbar) de nuestra aplicacion de mantenimiento (no varía del codelab anterior).
  • carpetas icons e images, la primera contiene el icons mostrado en la pestaña de nuestro navegador; y el segundo, las imagenes jpg personales utilizadas en el ejercicio y los dos estilos de celdas que hemos presentado en este caso para mejorar la presentación de las celdas del Grid. No varía del codelab anterior.
APUNTES TECNICOS

Si ya han probado con exito nuestro pantalla de acceso a nuestro modelo básico de mantenimiento de Tablas, al revisar los archivos del ejercicio debe tenerse presente lo siguiente :
  • Si revisan el codigo de Index.php observarán que como herramienta de "control" de nuestros accesos utilizamos las "cookies", en la cual grabamos la informacion necesaria para verificar que  nuestro usuario ha utilizado el Wizard de acceso de nuestro ejercicio; reiteramos que este se trata de un modelo basico y que en este caso solo pregunta si nuestra cookie del nombre esta vacia, y por supuesto que nuestra logica de verificacion puede y debe ser mejorado (como adicionando la verificacion de nuestro usuario y password de acceso, o verificando y poniendo un limite al tiempo trascurrido desde nuestra  ultima operacion para evitar que las cookies grabadas en nuestros ordenadores y no borradas al salir cerrando nuestro navegador pues sean mal utilizadas, entre otros posibles casos). 
  • Si hemos salido correctamente de nuestro modelo de mantenimiento, y digitasemos en la barra de direcciones nuestro navegador la direccion exacta de nuestro modelo http://localhost/tutorial/Wizard-samples/Grid-PHP-MySQL.php para nuestro caso, nos remitirá a nuestra pantalla de acceso (porque las cookies estan vacias), de ingresar al modulo es porque las cookies no han sido borradas al salir directamente al cerrar el browser.
  • Nuestro modelo nos muestra que podemos utilzar todas las cookies que querramos y asimismo, que nuestros passwords, como cualquier otro dato, pueden ser encriptados y desencriptados con el objeto que terceros no "vean" y utilicen indebidamente nuestros datos utilizando para ello las instrucciones:
     $pwd = base64_encode($pwd);      // en index.php
    $my_pwd = base64_decode($pwd);   // en database.php
  • Resulta interesante asimismo, observar con la opcion "Inspeccionar Elemento" del navegador Google Chrome (opcion del boton derecho del mouse sobre nuestra pantalla del browser), y con el Firebug de Mozila Firefox (que debe ser instalado como un plug-in de dicho navegador, y es el utilizado en los videos tutoriales del Quizzpot), pues que los recursos de nuestras paginas web (la pantalla de acceso y la de nuestra pantalla de mantenimiento para este codelab) no nuestran los codigos PHP en la parte "cliente" de nuestros navegadores (revise opcion recursos de nuestra pagina web al Inspeccionar elemento con Google Chrome o Firebug de Firefox, cuando esten cargadas), y con esto nos estamos asegurando que los datos de informacion de acceso a nuestro servidor HTTP no se muestran a los usuarios (refiriendonos a los que hemos escritos al inicio de index.php), pero sería mas interesante que efectuesemos nuevas pruebas con capturadores de paginas web (con herramientas como HTTrack, WebRipper o el mismo Dreamweaver, entre otros), para que observemos que archivos y que informacion  pueden bajar y utilizar terceros no autorizados por nosotros.
  • Con la misma herramienta podemos revisar las cookies de nuestro modelo y verificar que nuestras contraseñas se encuentran encriptadas y no disponibles para terceros, quedando pendiente revisar diversas tecnicas de encriptacion disponibles para dicha función, así como otras opciones del propio PHP.(como el uso de sesiones, que son como las cookies pero por el lado del servidor y totalmente invisibles a los usuarios o clientes).
  • Cabe resaltar asimismo que este modelo de codificacion no es muy recomendada por no mantener el criterio de separar nuestras validaciones (archivos PHP) de nuestros form (HTML y Javascript), o seguir un modelo de desarrollo MVC (Models, Views, Controlers), que en desarrollos grandes nos facilitarían bastante el desarrollo por componentes trabajando en equipo, mejorando así la comprensión y mantenimiento de los mismos;  pero este modelo que presentamos es muy practico y nos permite comprender espero facilmente toda la logica planteada con muy pocos archivos, y por eso nuestra elección para utilizarlo en este codelab.
  • Ponemos a su consideración las siguientes direcciones:

    1. Pagina del foro de www.cristalab.com que sirvió de base para este modelo, entrada antigua pero que aun mantiene vigencia y que en sus comentarios muestra enlaces a temas de seguridad muy importantes (agradecimiento a azelito, usuario de dicho foro).
    2. Pagina de Blogdephp.com que nos muestra un login a MySQL empleando empleando el modelo MVC, y que utiliza el framework codeigniter para PHP (que es bastante utilizado comercialmente), y cuya presentacion en el foro de Cristalab.fue motivo de comentarios apasionados pero interesantes que finalmente nos pueden ayudar a mejorar nuestros codigos.
    3. ..y no olvidemos revisar las opciones de manejo de las cookies y de las sesiones en PHP, que sin dudar son interesantes para mejorar la seguridad de nuestras desarrollos y proyectos.

Espero que estos dos últimos codelab de introduccion al manejo del entorno del Back-End PHP-MySQL sea suficiente para completar y entender su forma básica de funcionamiento, y nos animemos a hacer nuestras propias investigaciones y pruebas sobre este entorno de uso tan difundido.. especialmente ahora que los servicios de Hosting PHP+MySQL externos se muestran tan accesibles a nivel de costos (..desde US$20.00 anuales), e ilimitados respecto a los tamaños, velocidad y nivel de transferencia de datos que nos proporcionan, vale decir, que nos permitirían llevar todos nuestros requerimientos de base de datos y aplicativos a la web (cloud computing)

Saludos
@Mlaynes

Opina en nuestro foro §FB..!