Sie sind auf Seite 1von 96

mailxmail - Cursos para compartir lo que sabes

Curso de MySQL con PHP


Autor: Ariel Alejandro Wagner

mailxmail - Cursos para compartir lo que sabes

Presentacin del curso


El gestor de bases de datos MySQL se basa en el sistema de bases de datos relacionales, conocido por las siglas RDBMS (Relational Database Management System). Para poder establecer su gestin, el servidor MySQL utiliza un lenguaje propio interno basado en estructuras de consultas. Este lenguaje es conocido con el nombre de SQL (Structured Query Language) o lenguaje de consultas estructuradas. El estndar SQL adopta el modelo ANSI, basado en una normalizacin norteamericana. En estos momentos, se est desarrollando una nueva tecnologa en base de datos llamada OODBMS (Object Oriented Database Managment System). Esta novedosa tecnologa incluye la orientacin a objetos como mecanismo de desarrollo de sistemas de base de datos. Este curso de informtica ha sido el ganador del concurso de cursos de mailxmail.

mailxmail - Cursos para compartir lo que sabes

1. Introduccin a las Bases de Datos en MySQL


El gestor de bases de datos MySQL se basa en el sistema de bases de datos relacionales, conocido por las siglas RDBMS (Relational Database Management System). Para poder establecer su gestin, el servidor MySQL utiliza un lenguaje propio interno basado en estructuras de consultas. Este lenguaje es conocido con el nombre de SQL ( tructured Query Language) o lenguaje de consultas estructuradas. S El estndar SQL adopta el modelo ANSI, basado en una normalizacin norteamericana. En estos momentos, se est desarrollando una nueva tecnologa en base de datos llamada OODBMS (Object Oriented Database Managment System). Esta novedosa tecnologa incluye la orientacin a objetos como mecanismo de desarrollo de sistemas de base de datos. Su modo operativo difiere en grado del modelo RDBMS tradicional. Muchos lenguajes modernos, tales como LINQ aprovechan las virtudes de OODBMS para el desarrollo de sistemas de gestin de base de datos mediante tecnologa puramente orientada a objetos. Por ejemplo, una de las caractersticas ms importantes es el sistema de persistencia de datos muy utilizado en ambientes de datos donde se requiere seguridad operativa, entre otras caractersticas funcionales.

Dr. Edgar Frank Codd


El lenguaje SQL universal utilizado para la gestin de base de datos, fue desarrollado por el Dr. Edgar Frank Codd basndose en un trabajo desarrollado para la firma IBM Corporation. La compaa IBM Corporation, en un principio, ignor este trabajo y el Dr. Edgar Frank Codd, decidi abandonar las tareas. Ms tarde, fue experimentado por la actual compaa Oracle hacindole un pedido al Dr. Edgar Frank Codd, es decir, su colaboracin en su experimento, quin generosamente dono su material intelectual y sus estudios. Dado el aparente xito inicial del sistema, IBM Corporation apura el proceso de avance del desarrollo de SQL y le pide al Dr. Edgar Frank Codd que regrese a la compaa nuevamente para continuar con el desarrollo. El Dr. Edgar Frank Codd regresa y finaliza sus trabajos con IBM Corporation. Ms tarde, tanto la compaa Oracle como IBM Corporation, reconocieron al Dr. Edgar Frank Codd como un investigador serio y honesto. Entre otros de sus trabajos, el Dr. Frank Codd estableci lo que se conoce como las reglas de las normalizaciones de las bases de datos. En la actualidad, el lenguaje SQL es universal y lo utilizan la mayora de los gestores de bases de datos modernos. El Dr. Frank Codd tambin realizo otra serie de investigaciones en materia de datos, tal es el caso de los desarrollos OLAP (On-Line Analytical Processing) basados en

mailxmail - Cursos para compartir lo que sabes


cubos de datos, es decir, un modelo de datos multidimensionales. Un modelo de almacenamiento y manipulacin de datos mediante un modelo tridimensional, por ejemplo, es un Cubo OLAP. Actualmente, el modelo OLAP ha ido evolucionando en modelos ms complejos, tales como MOLAP, ROLAP, HOLAP, entre otros.

mailxmail - Cursos para compartir lo que sabes

2. En qu consiste una Base de Datos Relacional?


Una base de datos relacional se compone de un conjunto de tablas albergadas dentro de una plataforma contenedora de tablas llamada base de datos. Una tabla se compone de dos componentes importantes. Un componente es conocido con el nombre tcnico de Atributos y podemos considerarlos a modo de ejemplo como si se tratara de las columnas de una tabla. El otro componente es conocido con el nombre de Tplas o Tplos y podramos compararlos con las filas de una tabla. Las columnas se encuentran relacionadas con las filas. Los atributos forman parte de los campos que tienen una relacin con sus registros o filas, por lo tanto, el Atributo est ligado con sus Tplas en una relacin de uno a uno o de uno a varios elementos de las filas. Este sistema representativo de datos resulta ser bidimensional dado que utiliza dos componentes para su construccin que son las columnas y las filas. Vase la figura siguiente.

La relacin que existe entre el atributo y sus tplas obedece a un mecanismo de agrupacin lgica de coordenadas. Por ejemplo, en matemticas, para determinar un punto en un plano, se requiere de dos cnones como mnimos, es decir, un valor para la coordenada del eje X (abscisas) y un valor para la coordenada del eje Y (ordenadas). Al obtener ambos valores y ubicarlos en el plano cartesiano, podemos representar un punto en dicho plano. As mismo, en una base de datos, ms precisamente en una tabla, ese punto resultante podra tratarse de un valor, un nombre o cualquier tipo de informacin. Vindolo de otra forma, una tabla puede ser representada por una matriz de dos dimensiones. Ud., podra utilizar los ndices de dicha tabla para recorrer su matriz de forma deseada, incluso, crear un patrn organizativo para gestionar sus datos albergados en dicha tabla. De esta forma, podra organizar sus datos de modo estructurado y cuyo acceso resultara directo hacia esos conceptos. Vase la siguiente figura.

mailxmail - Cursos para compartir lo que sabes


Mediante la manipulacin de los ndices, podra gobernar su matriz de forma directa y eficaz. Esto justamente es lo que hace el motor de base de datos al administrar el gestor de cursores. Por un lado, tiene una precisa informacin del posicionamiento de las coordenadas de cada dato y su relacin entre atributos y tplas. Cuando el cursor se mueve entre los registros lo hace a travs de los ndices. Los datos son obtenidos a travs de esta relacin-gobierno de los ndices. Los datos tan solo se sujetan a dos procesos; escritura o lectura. Por lo tanto, el control general de esta arquitectura de gestin de datos se centra en movimientos para los ndices y en proceso escritura-lectura para los datos. Los modernos gestores que se encuentran ubicados dentro del entorno que gestiona la base de datos y sus tablas, poseen toda la estructura lgica que se encarga de estas trivialidades como la de realizar bsquedas, indizados, filtrados, altas, bajas y modificaciones, etc., todo bajo un entorno de sofisticados clculos matemticos. Estos procesos son controlados por dos reas. Un rea es a travs de un lenguaje anfitrin que es el SQL o mediante un acceso externo embebiendo este lenguaje sobre dichos procesos encapsulados de control que se encuentran en los proveedores de las bases de datos y otras caractersticas relacionadas con el lenguaje de comunicacin y manipulacin de datos externos. Generalmente en la capa de datos, el gestor complejo de datos, se encarga de estas trivialidades mencionadas recientemente. El desarrollador no tiene acceso a este nivel, de hecho, el motor de base de datos se encarga de estas gestiones. Por tanto, el nivel de gestin de la capa de datos se divide, a modo groso, en dos secciones fundamentales. Una seccin donde se encuentra estas gestiones que es el bajo nivel y las gestiones de alto nivel que son accedidas por el desarrollador mediante un lenguaje de turno que utilice. En este caso, el lenguaje competente se trata de SQL universal. Con l, podremos manipular los datos que se encuentran en nuestra base de datos y sus tablas de forma directa sin tener en cuenta si el gestor de base de datos se trata de un modelo Oracle, SQL Gupta de IBM, Microsoft SQL Server, MySQL Server, etc. El lenguaje SQL universal hace una abstraccin del modelo de diseo y solo se aboca a su administracin a travs de su lenguaje SQL estndar. Resulta importante sealar que el mecanismo de almacenamiento y el proceso de gestin de los datos en una base de datos, determina no solamente la tecnologa y la confiabilidad, sino que adems, brinde aspectos de sofisticacin o de estandarizado para abaratar costes, capacidades, recursos, etc. Las bases de datos tales como MySQL que operan en servidores Web, estn optimizadas para tener altos mrgenes de lectura, es decir, que estas mismas sean ms rpidas que las gestiones de altas, bajas o modificaciones. La tecnologa MyISAM o su antecesor ISAM, utilizan un mecanismo de almacenamiento estandarizado que garantiza proceso de lecturas rpidas y procesos de escritura aceptablemente seguras. No obstante, las bases de datos puramente binarias y destinadas para servidores de alto porte, tal como MySQL Server, utilizan un modelo de compactacin, anlisis, transacciones y disparadores de eventos seguros, bloqueos ms robustos y proteccin de datos ms redundancia de datos, entre otras caractersticas operativas.

mailxmail - Cursos para compartir lo que sabes

3. Caractersticas ms significativas de SQL


El lenguaje SQL ha sido creado en un principio como un mecanismo optimizado para la obtencin de forma rpida y eficiente diversos tipos de obtencin o extraccin de datos. Las consultas proponan un simple modelo de consulta hasta modelos ms complejos, basados en procesos de filtrado de datos, vistas, etc. Ahora bien, el modelo de lenguaje SQL propone dos instancias de desarrollo de su entorno llamadas: DDL (Data Definition Language) DML (Data Manipulation Language)

DDL (Data Definition Language) Lenguaje de Definicin de Datos La definicin de datos hace referencia a un modelo de escenario donde se formalizan tablas o consultas. En el caso de las tablas, el DDL propone un modelo basado en ABM (Altas Bajas o Modificaciones), las cuales permiten la creacin, eliminacin o modificacin de tablas en la base de datos. Existe un cuarto factor que es el truncado que resulta en un cuarto tipo de proceso en funcin a los tres recientemente mencionados. En sntesis, este modelo DDL define las estructuras de las tablas en las bases de datos. Podremos utilizar comandos tales como ALTER, CREATE, DROP y TRUNCATE entre otros para operar estos procesos de definiciones de datos. DML (Data Manipulation Languaje) Lenguaje de Manipulacin de Datos La manipulacin de datos hace referencia a los procesos tiles que pueden ser aplicados a las tablas para realizar diversas tareas tales como el ingreso de datos, eliminacin o modificacin de los mismos. El modelo DML tambin propone un modelo basado en ABM para la mayora de los procesos de manipulacin que incluyen como mencione recientemente, altas, bajas y modificaciones. A esto habr que agregarle las copias muy tiles para las copias de respaldo o seguridad, etc. La manipulacin de datos resulta ser un proceso ms sensible operativo de la informacin. Este modelo propone comandos operativos tales como INSERT, UPDATE, DELETE, etc., para el sustento y manipulacin de datos. Una caracterstica interesante resultan ser los llamados Triggers o (Disparadores), muy utilizados en los servidores centrales para automatizar tareas de manipulacin tales como copias de seguridad, procesos de lotes, depuraciones programadas, etc. El Lenguaje SQL Universal

Profesor Conrado Bhm

mailxmail - Cursos para compartir lo que sabes


El lenguaje SQL universal se basa en consultas estructuradas. Se sujeta al estndar ANSI que establece una serie de protocolos para el mismo. Se dice que son estructuradas dado que tienen un proceso de construccin basado en comandos, parmetros y predicados. El trmino de lenguajes estructurados y no estructurados, se trata de una vieja pelea de algunos expertos en desarrollo de software en el pasado y que en la actualidad, ha recobrado cierto inters. El primero en acuar este concepto en el camino del fascinante mundo del desarrollo del software fue el profesor Conrado Bhm. El profesor puso de manifiesto el uso del lenguaje procedural que no utiliza recursin forzada o rebuscada, tal como pasa en lenguajes que utilizan etiquetas o ciertos artilugios para repetir estructuras de cdigos. Cabe recordar que el uso del lenguaje Assemble enmaraaba mucho los procesos y ms si estos eran recursivos, tal es el caso de contadores o de procesos que requieren tareas repetitivas. El uso de las tan cuestionadas etiquetas eran todo un desafa para muchos y todo un dolor de cabeza para otros. Era evidente que las crticas estaban ms que justificadas. El teorema Bhm-Jacopini, puesto que el profesor tuvo colaboracin del profesor Giuseppe Jacopini, explica que un lenguaje estructurado obedece a tres conceptos fundamentales y ellos son los siguientes: Secuencia Instruccin Incondicional Iteracin (Instrucciones de bucles) Generalmente y volviendo al tema, segn el estndar ANSI SQL establece que el lenguaje SQL se divide en dos globales tipos de consultas y ellas son: Consultas Estticas Vistas Parciales Filtro de datos, por ejemplo, listados o catlogos, etc. Vistas Totales Similar al anterior pero incluye todos los datos Consultas Dinmicas Ingreso de datos nuevos Ingresar datos nuevos o tablas nuevas Actualizacin de datos Cambiar datos viejos por datos nuevos, tablas, etc. Eliminacin de datos Baja de datos, eliminacin de dato o tablas, etc. Las consultas estticas tan solo procesan los datos de orgenes desde las tablas de las bases de datos y no aplican ningn tipo de cambio a las mismas. Simplemente, se trata de una radiografa parcial o total de los datos que no genera ningn tipo de alteracin a los datos vigentes. Mientras que las consultas dinmicas se comportan de forma contraria a las estticas. Todo proceso genera cambios y altera los datos en las bases de datos y en sus tablas que han sido foco para el cambio. Operar Consultas con el Entorno de Web Server MySQL El entorno del servidor Web MySQL utiliza el lenguaje SQL para poder operar el diseo y la construccin de base de datos, tablas, consultas, etc. Los primeros servidores MySQL, utilizaban el smbolo de sistema para crear y operar la administracin de las bases de datos como del propio servidor. En las ltimas versiones que vienen con el servidor Apache, se cuenta con un administrador visual que se puede operar desde cualquier tipo de navegador Web. Resulta cmodo el uso

mailxmail - Cursos para compartir lo que sabes


de este tipo de interfaces dado que permite una gestin ms intuitiva, sencilla, fcil de comprender y operar. Sin embargo, resulta importante saber operar tambin la consola dado que, en el caso de algunos sistemas operativos, la administracin visual puede que no est disponible. Tal es el caso del servidor UNIX si este no cuenta con navegadores Web. Recurdese que un servidor UNIX, tiene tres modos operativos. Dos modos son de consola y un tercero modo llamado XWindows que es grfico. Los entornos UNIX suelen ser configurados para uso en modo de consola, dado que de esta forma, les permite ahorrar recursos. Por general, el Shell de UNIX resulta ms poderoso desde su consola. Entre otras cosas, tambin resulta importantsimo conocer los comandos de consola del servidor MySQL, dado que como desarrollador, Ud., deber comprenderlos puesto que los utilizar en sus futuros desarrollos de sus pginas Web. A modo de consejo, no estara mal, aprender algunos comandos bsicos del Shell de UNIX. No obstante, cubrir un curso de esta caracterstica implica un temario aparte y que, adems, escapa del objetivo de este actual curso de MySQL y PHP que est realizando.

mailxmail - Cursos para compartir lo que sabes

4. Operaciones Bsicas para Web Server MySQL


Existen dos modos operativos para el uso del gestor Web Server MySQL y a continuacin pasaremos a describirlos. Nota: Los comandos y las formas operativas de este curso, se basan en la familia de sistemas operativos Windows. Conociendo el Entorno Grfico de MySQL Server Web Para poder abrir el gestor de bases de datos de MySQL para el Web Server y suponiendo que lo tenga instalado y corriendo en su sistema, deber escribir en la lnea de comandos Ejecutar en Windows la orden http://localhost/ y luego presione la tecla Enter. Si su gestor Apache Server est en espaol, debera leer una opcin que dice ms o menos as phpMyAdmin Database Manager Version xxx. Haga clic all y abrir la consola de interfaz para la gestin de base de datos. Es probable que le pida un nombre de usuario y una contrasea. Ud., debera colocar como usuario root por defecto y la contrasea es la que Ud., introdujo cuando instal su servidor. Luego, haga clic en el botn Aceptar. Si todo marcha bien, Ud., debera ingresar a la interfaz del gestor de datos sin dificultades y ver lo que se muestra en la siguiente figura. (En el ejemplo, uso un navegador Mozilla Firefox)

Conociendo el Entorno No Grfico de Web Server MySQL Para poder conocer el entorno de consola, debemos utilizar la seccin del smbolo de sistema para sistemas operativos Windows. Para ello, vaya al smbolo de sistema o, si lo prefiere, escriba enEjecutar la orden cmd /k cd c:\appserv\mysql, Luego, presione la tecla Enter. Esto lo trasladar a la carpeta donde se aloja el servidor

10

mailxmail - Cursos para compartir lo que sabes


MySQL. Ahora, desde el smbolo de sistema, escriba la orden mysql y luego presione la tecla Enter. Si todo marcha bien, Ud., debera estar viendo en pantalla la siguiente figura.

En el modo consola, para poder activar comandos o realizar determinadas tareas, habr que conocer los comandos, escribirlos de forma acertada a los efectos de poder ejecutar las aplicaciones de forma correcta. Permaneciendo en esta ventana, si Ud., escribe en el prompt cursor de su pantalla la orden \ h o \ ? luego presiona la tecla Enter, podr acceder al Help ayudas de la consola. Notar que en las ayudas, se especifica ms de un parmetro. Cada uno de ellos cumple una funcin y es probable que puedan combinarse entre s de modo de activar determinadas fases o herramientas. Si Ud., desea salir del modo de consola de MySQL, bastara con que escriba el parmetro \ q y luego presione la tecla Enter. A continuacin, si escribe la orden exit y presiona la tecla Enter, cerrar la ventana de smbolo de sistema en su computadora. Tambin puede poner en prctica los comandos de consola avanzados para acceder a la carpeta del servidor Apache y el gestor de base de datos MySQL. Para ello, escriba la siguiente lnea de comando en la seccin Ejecutar de Windows. A continuacin, presione la tecla Enter.

cmd /k cd c:\appserv\mysql
Esta orden lo llevar inmediatamente al directorio donde se encuentran las herramientas del gestor de bases de datos MySQL. Es importante tambin recordar que, para evitar tener que escribir todas estas rdenes quiz algo complejo o intricado, prefiera en su lugar construir un archivo por lotes. Si este es su caso, abra el men Ejecutar de Windows y escriba la siguiente orden.

cmd /k edit c:\appserv\mysql\opmysql.bat

11

mailxmail - Cursos para compartir lo que sabes


Con esta orden Ud., utilizar el editor de la consola de Windows MS-DOS para construir su archivo por lotes llamado opmysql.bat. Una vez dentro del editor, escrita estas rdenes y luego guarde el archivo y salga de dicha aplicacin. Finalmente, pruebe a su archivo por lotes simplemente escribindolo en el smbolo de sistema y presionado la tecla Enter.

@echo off cls mysql Luego en la lnea de comandos o del smbolo de sistema, pruebe su archivo por lotes escribiendo la orden en el prompt y luego ejecutndolo mediante la tecla Enter. No es necesario escribir la extensin bat. C:\appserv\mysql\opmysql
Si Ud., no cuenta con el editor de textos del smbolo de sistema, puede utilizar el editor de consola residente llamado copy con. Para ello, dentro del modo consola, debera escribir las siguientes rdenes en forma secuencial.

cmd /k cd c:\appserv\mysql A continuacin y dentro del prompt cursor del servidor escriba la siguiente orden. c:\appserv\mysql\copy con opmysql.bat Luego, presione Enter y escriba las rdenes que siguen. @echo off cls mysql Para terminar y salvar el archivo, deber presionar la combinacin de teclas CTR + Z y una vez que la consola escriba los caracteres ^Z presione la tecla Enter. Esto har que el archivo se almacene con todas las rdenes que ha escrito en l archivo opmysql.bat. @echo off cls mysql ^z Presione la tecla Enter para finalizar. C:\appserv\mysql\type opmysql.bat Con la orden siguiente podr leer el archivo por lotes sin ejecutarlo desde la consola de Windows MS-DOS. 12

mailxmail - Cursos para compartir lo que sabes


Los procesos o archivos por lotes, puede resultar muy tiles. Podra crear un sinfn de usos como herramientas complementarias y que le pueden ahorrar mucho trabajo de escritura y, por supuesto, potenciales errores operativos. De hecho, Ud., notar que el servidor cuenta con algunos archivos en su directorio. Esto mismo, se los utiliza para gobernar el sistema del gestor de bases de datos. Encontrar entonces un comando para detener o para arrancar los servicios residentes en memoria o los unning memory system del gestor de base de datos. r Entre otros, podr construir archivos por lotes para hacer copias de seguridad o para cualquier actividad de mantenimiento de sus directorios si as lo prefiere. En un sentido amplio, los comandos por lotes son muy bastos. El gestor de base de datos MySQL por consola no culmina aqu. En este pequeo apartado tan solo he mencionado los comandos que sirven para iniciar el entorno operativo del gestor. Una vez dentro del gestor MySQL, Ud., encontrar que deber conocer ms comandos concernientes al gestor propio de MySQL. El manejo de estos poderosos comandos le permitir operar al gestor de base de datos de forma eficiente sin la necesidad del uso de interfaces grficas, ideales entonces, para entornos donde la interfaz grfica no puede ser aprovecha tilmente. Las Bases de Datos y las Tablas El servidor MySQL utiliza una carpeta interna llamada Data donde se alojan todas las bases de datos y sus respectivas tablas. Las bases de datos se declaran con la creacin de una carpeta dentro de la ruta del servidor MySQL, mientras que las tablas, se tratan de una serie de archivos especficos que son albergados dentro de dicha carpeta contenedora. Una tabla se compone de al menos tres archivos para su construccin. Un archivo colecciona los datos, otro permite la configuracin y mantenimiento del ndice y un tercero que se trata del sistema que forma parte del cuerpo de los atributos del archivo contenedor de datos. Es muy probable que se creen ms archivos asociados. Ello depender en grado de qu cambios especficos le apliquemos a nuestras tablas. Los tres o ms archivos deben permanecer siempre juntos para que puedan operar de forma correcta. Por tanto, dentro de cada carpeta creada en la carpeta Data, se interpreta como una base de datos. Todas sus tablas, es decir sus archivos, se encontrarn dentro de la carpeta contenedora. Por tanto, cada carpeta dentro de la carpeta Data se trata de una base de datos.

Advertencia: Bajo ninguna circunstancia, Ud., debera eliminar el resto de las carpetas que se encuentran alojadas dentro de la carpeta Data, excepto claro est, carpetas de bases de datos creadas por Ud., que no desea utilizar ms. El resto de las carpetas que all se encuentran, no debe tocarlas en absoluto. Recurdese, estas carpetas contienen informacin para la administracin de su gestor de datos. Cualquier destruccin o alteracin de las mismas, podra alterar el funcionamiento de su servidor de bases de datos Web. Esta arquitectura de organizacin de carpetas y archivos para bases de datos y

13

mailxmail - Cursos para compartir lo que sabes


tablas, facilita enormemente la distribucin de las bases de datos y sus tablas. Si su servidor se encuentra en un Hosting remoto, Ud., tan solo debe hacer un upload subir archivos en el servidor central, incluso, si desea realizar copias de seguridad de sus bases de datos y sus tablas, la copia de estas carpetas se hace de forma muy sencilla. Usuarios y Privilegios

El gestor de bases de datos MySQL requiere de usuarios para que estos puedan operar y explotar los recursos del entorno. Cada uno de los usuarios, tendr un determinado permiso o control de los recursos, segn sea aplicada la poltica de administracin. En este concepto, entran los privilegios. Un privilegio especifica una poltica de comportamiento del usuario que declara que cosas puede o no puede hacer. Por ejemplo, resulta probable que Ud., no desee que ciertos usuarios puedan acceder a determinadas tablas y sus datos o, en todo caso, desea que estos tan solo puedan ver los datos y que no los puedan cambiar. Por tanto, existe un usuario que gestiona estos permisos y otros usuarios que hacen uso del recurso pero que no pueden administrarlo. El usuario que posee el mayor de los privilegios, que le permite operar el gestor de datos con todas sus herramientas, es conocido con el nombre de administrador. Es quien se encarga de gestionar al gestor de datos de forma absoluta y totalitaria. Por tanto, los tipos de usuarios se dividen en dos grandes grupos y ellos son: Administradores Poseen los mximos privilegios y administran el recurso en forma total Usuarios Poseen los recursos mnimos o regulados y solo explotan los recursos permitidos La poltica de privilegios se centra en dos grandes rasgos de acciones y estas son las siguientes: Poltica de Acceso Le permite al usuario acceder al recurso y explotarlo Poltica de Denegacin No le permite al usuario acceder al recurso y no podr explotarlo Dentro de todo el compendio de polticas detalladas, en el modo de Acceso, resulta posible refinar el proceso de control de acceso al medio. Este proceso de control es llamado generalmente como poltica granular dado que se aplican restricciones ms refinadas o especficas. Por ejemplo, Ud., podra permitirles a determinados usuarios acceder a una tabla con sus datos, pero por otro lado, restringir el mecanismo de cambios o actualizaciones. Esta poltica actuaria como solo lectura . Una restriccin semejante, puede justificar varias razones. La ms evidente resulta ser la seguridad, dado que de esta forma, Ud., se asegura que nadie puede alterar o destruir los datos vigentes. Por otro lado, optimiza los recursos del sistema, dado que los recursos en modalidad de s olo lectura, suelen consumir menos recursos.

14

mailxmail - Cursos para compartir lo que sabes


Esto se ve reflejado en la velocidad de acceso y proceso al medio. Copias de Seguridad ~ Exportar e Importar Todos los datos que se alojan y manipulan desde el servidor de datos, es decir, todas las bases de datos suelen contener cierta informacin sensible. Los datos podran destruirse, perderse o corromperse por diversas circunstancias. Ante potenciales amenazas de prdidas de datos o fatalidades, resulta crucial contar con unos mecanismos de copias de seguridad y de restauracin. El servidor que administra MySQL para el gestor Web, ha incorporado dos comandos de seguridad operativa que cumplen la funcin deImportar o Exportar los datos. De esta forma, las tablas puede ser o, bien, copiadas en otro destino de almacenamiento o, bien, exportadas para su seguridad y salvaguarda de datos.

15

mailxmail - Cursos para compartir lo que sabes

5. Operando el Entorno Grfico de MySQL Server Web I


El servidor Web de MySQL puede ser gestionado de dos modos. Uno es a travs de los comandos de consola bajo el smbolo de sistema y la otra forma es a travs de la interfaz grfica del gestor. Resulta mucho ms cmodo y gil el uso del entorno grfico dado que es ms prctico e intuitivo. El entorno de consola, es mucho ms complejo y menos intuitivo. Resulta especial para aquellos que poseen conocimientos avanzados y de comandos Shell del sistema operativo. En este curso, nosotros operaremos el modo de interfaz grfica en lugar del entorno de consola. Crear una Base de Datos Antes de empezar con la gestin de datos, primeramente, Ud., debe crear una base de datos. Se supone que Ud., cuenta con una estrategia de diseo previo de su futura base de datos. Aqu asumiremos que estamos creando un modelo de base de datos estratgicamente diseado y listo para implementar. Una vez que haya creado su base de datos, luego y ms tarde, podr crear e ir incorporando todas las tablas que conforman su base de datos. La base de datos pretende contener todas las tablas para gestionar los datos y de alguna forma concentrar la gestin, por ejemplo, de un negocio, comercio, etc., o cualquier otro modelo que requiera gestin de datos. Para crear una base de datos nueva, deber seguir los siguientes pasos: 1 . Abra su gestor de base de datos de MySQL Server Web. Para ello, recuerde hacer lo siguiente. Vaya a Ejecutar de Windows y escriba la siguiente orden http://localhost/, luego haga clic en el botn Aceptar o presione la tecla Enter de su teclado. 2 . A continuacin, haga clic donde dice phpMyAdmin Database Manager Version 2.10. Esto abrir el gestor de bases de datos y le pedir que inicie una sesin. 3 . El siguiente paso es colocar el nombre de usuario y la contrasea para poder abrir el gestor. Si Ud., no altero los datos en la seccin de privilegios, debera entrar como administrador por defecto a travs de la siguiente sesin. El nombre de usuario es normalmente admin y no suele colocarse contraseas cuando se instala el gestor por primera vez. Por tanto, determine el nombre de usuario y contrasea para poder operar la base de datos. Una vez salvado estos defectos, debera ingresar a su gestor normalmente. 4 . Una vez dentro del gestor, proceder a crear su primera base de datos. Resulta importante que observe la barra del lado izquierdo para que encuentre un cuadro combinado. Esto le resultar til ms tarde, dado que las bases de datos que Ud., cree, aparecern all. Notar quiz que un nmero aparece entre parntesis. Ese valor le indica la cantidad de tablas que posee dicha base de datos. 5 . Para comenzar a crear la base de datos, observe en el lado derecho, un cuadro de textos donde podr colocar el nombre de su futura base de datos. El cuadro pegado a este, donde figura por defecto la opcin Cotejamiento, es utilizado para determinar el tipo de idioma local para la base de datos. Se recomienda entonces dejar la opcin Cotejamiento dado que automticamente asignar el idioma por defecto. No se preocupe por este detalle, esta opcin optara por la

16

mailxmail - Cursos para compartir lo que sabes


mejor que se adapte al idioma.

Seccin donde se coloca el nombre de la futura Base de Datos.

1 . En el cuadro de texto citado escriba la palabra Stock, luego, verifique que la opcin que est a su lado derecho, diga Cotejamiento. Finalmente, para crear la base de datos, haga clic en el botn Crear. Vase figura de arriba. Si todo va bien, deber crear la base de datos. Aparecer una ventana anuncindole de la incorporacin de dicha base de datos, incluso, un detalle en lenguaje SQL. 2 . A partir de estos instantes, estamos habilitados para empezar a crear las tablas para nuestra base de datos. Aqu tiene dos opciones. O bien, empieza a crearlas directamente, una tras otra; o bien, podr crearlas ms tarde que ser nuestro caso, ya que lo que deseo es que Ud., se habite al entorno del gestor de base de datos de MySQL Server Web. Por tanto, haga clic donde dice Servidor:localhost Servidor:localhost Esto har que el entorno regrese a la pgina inicial del . gestor de datos. 3 . Ahora, vamos a verificar si la base de datos se ha creado correctamente. Para ello, observemos el lado de la barra izquierda y abramos el cuadro combinado. Si se ha creado bien, veremos la palabra Stock(0) en el componente. Felicitaciones, acaba de crear su primera base de datos en el gestor de MySQL Server Web. Creando una Tabla para la Base de Datos Stock En la primera parte de este instructivo hemos aprendido a crear una base de datos con el gestor de MySQL Server Web. Ahora, procederemos a crear nuestra primera tabla para nuestra base de datos llamada Stock. 1 . Dirjase hacia la seccin izquierda de su pantalla dentro del gestor de MySQL y en el cuadro combinado, elija la opcin Stock(0). Esto nos permitir elegir la base de datos para poder empezar a crear sus tablas. A su vez, esto tambin har que en el sector derecho se abra una seccin para crear tablas. En esta rea trabajaremos a continuacin. 2 . Dentro de la seccin derecha del gestor MySQL, en el cuadro de texto, escriba el nombre de la tabla la cual llamaremos como Deposito. En el cuadro de texto de al lado, debemos colocar la cantidad de campos que se requieren para dicha tabla. Por favor, coloque el nmero 4 dado que crearemos cuatro campos para esta tabla. Una vez que haya escrito el nombre de su tabla y la cantidad de campos, a continuacin haga clic en el botn Continuar. Si todo marcha bien, esto har que se cree la estructura de la tabla. El paso siguiente ser el de ajustar los tipos de atributos para dichos campos. Atencin: Tngase cuidado cuando crea tablas con vocales que utilizan acentos o

17

mailxmail - Cursos para compartir lo que sabes


diresis. Recurdese que el gestor SQL utiliza la norma americana ANSI 94 que se basa en el lenguaje ingls que no contempla determinados vocablos hispanos. Tanto los acentos como las diresis pueden resultar problemticas a la hora de desarrollar las consultas y otras tareas relacionadas. Por lo tanto, lo insto a que utilice palabras que omitan estos detalles para evitar potenciales problemas ms tarde. Entre otros detalles, evtese dar nombres a sus tablas con espacios entre palabras como por ejemplo Deposito Argento. Si Ud., desea crear un nombre semejante, tiene dos opciones. O bien, une las dos palabras sin espacio o, bien y como otra alternativa quiz ms prolija, separe ambas palabras mediante un guin bajo. En sntesis, lo importante es que evite usar espacios entre sus nombres de tablas. Le recomiendo antes de empezar a operar con los campos, leer la seccin amarillenta remarcada que aparece en la pantalla durante la creacin de los campos y sus atributos para evitar posibles problemas ms tarde.

1 . Ahora, iremos colocndole a nuestra tabla los respectivos nombres de campos y sus atributos especficos. Coloque los nombres de arriba hacia abajo en los primeros cuadros combinados ms a la izquierda como sigue en esta seguidilla: I D, ARTICULO, COSTO y CANTIDAD. Obsrvese que los nombres de los campos los he colocado en maysculas. Es como se recomienda y le recomiendo que los coloque en maysculas siempre. La minscula es aceptado por el sistema pero est fuera de norma. 2 . El siguiente paso es ajustar los tipos de atributos para cada uno de los campos. Empezaremos con el campo I D. En la seccin Tipo, busque y seleccione la opcin INT. Esto declara un campo de tipo entero. En Longitud/Valores Longitud/Valores coloque el nmero 4 . Esto le permite limitar la cantidad de nmero enteros, que en este caso es un mximo de 9999. Tanto en Cotejamiento como en Atributos, omitimos sus detalles. En Nulo, seleccionaremos la opcin Not Null. Esto evita que no se coloquen valores en este campo. Los valores resultan ser obligatorios. En Predeterminado no colocamos nada. En Extrano colocaremos nada. Vale la pena aclarar que Extra tiene una opcin llamada auto_increment. Esto es til para los casos donde deseamos que los valores se coloquen automticamente. En nuestro caso, este detalle lo omitimos. Ahora, marcaremos la opcin nico cuyo icono es una ventanita con una letra u en rojo. Esta opcin nos permitir evitar que los valores resulten duplicados en nuestra tabla Deposito. Por ltimo, existe un cuadro de texto llamado Comentario. No resulta obligatorio colocar alguna descripcin all. Sin embargo, se recomienda para los casos donde se debe documentar la base de datos y puede resultar como una excelente gua memoria para el desarrollador. Recurdese que el tiempo es tirano y amnsico. 3 . Para ARTICULO colocaremos en TipoTEXT. Esto representa un campo de tipo de texto. En Longitud/Valores colocaremos 1 0 0. Esto limitar al campo a una cantidad de cien caracteres incluido los espacios vacos. En Nulo, colocaremos la opcin Null. Esto nos permitir dejar en blanco nuestro campo. Es evidente que esto no es normal, pero puede que su artculo no tenga un nombre definido y podra transitoriamente no tener nombre hasta nuevo aviso. El resto de las opciones, las omitiremos directamente. 4 . Para COSTO colocaremos en TipoDECIMAL. Este formato permite utilizar valores numricos para la economa o la contabilidad. Para clculos de ingeniera o donde se requiere de mxima precisin, se recomienda utilizar DOUBLE DOUBLE. Este resulta en un nmero mucho ms grande que DECIMAL. En el Predetermina Predeterminadocolocaremos 0 . Esto har que cuando se cree un registro en nuestra tabla, se coloque automticamente por defecto el valor cero en dicha

18

mailxmail - Cursos para compartir lo que sabes


seccin. 5 . Para CANTIDAD colocaremos en TipoINT. Luego para Longitud/Valores el nmero 4 . En el Predeterminado colocaremos 0 . 6 . Para finalizar, haga clic en el botn Grabar. Si todo marcha bien, su tabla se habr creado satisfactoriamente y debera estar viendo en pantalla un resumen de la creacin de la tabla MySQL y un detalle en lenguaje SQL de la creacin de su tabla reciente. Felicitaciones, acaba de crear su primera tabla en el gestor MySQL Server Web.

Este es el resultado final de crear su nueva tabla llamada Deposito para su base de datos Stock.
Para finalizar con esta primera prctica de creacin de base de datos y una tabla ejemplo, haga clic en Servidor:localhost para regresar a la pantalla principal. Ahora, notar que su base de datos Stock acusar la siguiente frase en el sector izquierdo Stock(1) Stock(1), incluso, ver que la tabla Deposito aparece debajo de esta descripcin. Esto le indica que su base de datos posee una tabla.

19

mailxmail - Cursos para compartir lo que sabes

6. Operando el Entorno Grfico de MySQL Server Web II


En la prctica anterior aprendimos a crear una nueva base de datos y una tabla. Sin embargo, es probable que durante la administracin de la base de datos, se tenga que alterar el contenido de sus tablas o, bien, eliminando las tablas o modificndolas. Tambin resulta probable que se tenga que trabajar con datos para dichas tablas, lo que en cierto modo, se deber operar con algunas herramientas especficas de este entorno. Por tanto, es necesario conocer algunas herramientas adicionales ms. En esta clase prctica, conoceremos algunas de estas herramientas y veremos un uso prctico de las mismas. Herramientas para la Gestin de Tablas Antes de proceder con el reconocimiento de las herramientas para su uso, por favor, asegrese de seleccionar la tabla Deposito de la base de datos llamada Stock. Una vez hecho esto, le recomiendo llegar a la pantalla que se muestra aqu a continuacin en su gestor de MySQL Server Web. Recurdese que debe seleccionar la base de datos Stock y luego seleccionar la tabla Deposito. Ver figura siguiente.

Antes de empezar, vamos hacer revista de algunas de las herramientas ms importantes. En la seccin de arriba, donde se divisan solapas, se pueden ver una serie de herramientas para la gestin de la tabla Deposito. La primera solapa Examinar Examinar, simplemente muestra la estructura de la tabla, incluso, se muestra un resumen de estructura en SQL como consulta de la tabla, que de por cierto, est vaca dado que supone an no hemos colocado datos en ella. Sin embargo, la solapa que se abre por defecto y que es la que se utiliza frecuentemente es Estructura. A continuacin hago una breve descripcin de esta seccin de la herramienta de tablas Estructura. Conociendo la Herramienta Gestin de Tablas - Estructura

20

mailxmail - Cursos para compartir lo que sabes


En la seccin donde aparecen los campos de la tabla Deposito, podr encontrar una serie de conos al extremo derecho final de cada uno de los campos vigentes de la tabla. Casualmente esta seccin es llamada como Accin. Exceptuando el primer icono, el resto resultan los frecuentemente usados. El icono en forma de lapicito nos permite cambiar las propiedades del campo al que hace referencia. Dichos cambios permiten editar sobre los atributos de dicho campo y permiten establecer nuevas reglas sobre el mismo. Si dichos cambios inciden en el formato con el peligro de truncar valores en los campos, el gestor har dicha advertencia antes de que Ud., proceda con su actualizacin. De todos modos, tngase cuidado. No se confe de este tipo de alertas. No siempre las cosas terminan del todo bien. Quiz sea recomendable estudiar otra estrategia antes de aventurarse a un cambio que implique cambios por sobre los atributos de los datos almacenados. Ms adelante dar algunos consejos estratgicos acerca de posibles cambios que rocen el modelo de atributos sobre el formato de los datos. Bien, continuando entonces, el icono en forma de equis coloradita nos permite eliminar este campo de la tabla. Tngase cuidado con el uso de la misma. Si la activa accidentalmente, esta misma, eliminar su campo de su tabla ms el contenido que existiere en ella. Ms tarde, no tendr forma de recuperar su campo y ni sus datos que hubiere vigentes anteriormente contenidos en dicho campo. El cono en forma de llavecita y un formulario de fondo le permite a Ud., establecer la clave primaria para dicho campo. As mismo, el cono en forma de rayito y un formulario de fondo es para establecer el ndice. Por ltimo, el icono con una U coloradita y un formulario de fondo es utilizado para declarar la unicidad del campo, es decir, evita que se puedan registrar valores repetidos o duplicados.

En el caso de nuestro ejemplo, como ver en la siguiente figura, hemos declarado el campo ID de unicidad para evitar que un operador ingrese dos o ms cdigos iguales. Esto podra representar un potencial peligro por muchas razones. Un artculo podra tener el mismo valor de identificacin, lo que en sntesis, no podra hacerse referencia precisa de cada uno de los artculos. Conociendo la Herramienta Gestin de Tablas SQL y Buscar En la seccin SQL Ud., podr probar filtrando u obteniendo listados de los datos contenidos dentro de la tabla mediante consultas estticas. Un excelente tablero de pruebas para el desarrollador y, por supuesto, una herramienta estratgica para obtener determinados datos en pantalla. Generalmente, podr construir tipos de consultas estticas basadas en el uso del comando clsico SELECT entre otros comandos operativos del lenguaje SQL. Con respecto a la herramienta Buscar, resulta en un rea exclusiva para bsqueda de datos en dicha tabla. Sin embargo, Ud., bien podra utilizar SQL como un elemento de bsqueda y, en sntesis, ambos podra cumplir los mismos objetivos. Por tanto, el uso depende de los objetivos a los que se desee desarrollar incluso sus

21

mailxmail - Cursos para compartir lo que sabes


preferencias personales. Operando la Herramienta Gestin de Tablas Insertar En esta rea Ud., podr ir agregando registros a su tabla. Los registros se deben agregar de a uno, aunque muchos prefieren realizar una consulta dinmica con SQL y luego ejecutarla como un Batch lote para procesar todas las nuevas altas de datos de una vez en lugar de tener que ingresar uno por uno dichos registros. A continuacin, deber ingresar estos registros, uno por uno, para llenar su tabla. Ms tarde la utilizaremos para probarla mediante SQL y filtros diversos.

I D ARTCULO 1 Escoba 2 Balde 3 Secador 5 Palita 6 Escobilla 7 Franela

COSTO CANTIDAD 18 25 13 9.50 12 9 100 150 80 500 50 90 100 50

4 Trapo de Piso 5

8 Brilla Metales 2 1

Operando la Herramienta Gestin de Tablas SQL Resulta interesante saber que Ud., puede insertar ms de un registro a la vez. Para ello tendr que utilizar la seccin SQL. Dentro de esta seccin, debe construir un proceso de consulta dinmica por lotes. En el caso de que desee realizar esta operatoria, deber utilizar el comando de SQL INSERT INTO. Como prctica, todos los registros que acaba de insertar en su tabla, elimnelos y proceda luego a insertarlos nuevamente con esta tcnica de insercin por lotes. Para ello, escriba en la ventanilla del script de SQL en la seccin SQL las siguientes rdenes, como se muestran debajo de este prrafo. Importante: Tngase especial cuidado con la sintaxis del lenguaje SQL. Utilice el acento francs para encerrar el nombre de la base de datos y su tabla respectiva. Ambas, se unen a travs de un punto. Finalice su lote con un carcter punto y coma. Respete los espacios entre las rdenes y caracteres.

22

mailxmail - Cursos para compartir lo que sabes

Operando la Herramienta Gestin de Tablas Vaciar Esta sencilla herramienta le permite vaciar por completo su tabla con todo su contenido y tan solo dejando su estructura como soporte de general de su tabla. Atencin: Por favor, tngase cuidado con el uso de esta herramienta. Si Ud., accidentalmente elimina todos sus datos de su tabla, ms tarde, no podr recuperar sus datos. Le recomiendo hacer una copia de seguridad antes de aventurarse al uso de esta herramienta. Operando la Herramienta Gestin de Tablas Buscar En esta seccin podremos buscar todo tipo de datos en nuestra tabla de la base de datos. En la seccinBuscar, se nos facilita una serie de herramientas previamente confeccionadas que resultan muy tiles. Estas herramientas se fundamente en el lenguaje SQL y, por lo tanto, parte de ellas podran ser utilizadas tambin en la seccin SQL. En breve, veremos estos detalles. Sin embargo, ahora mismo, utilizaremos primeramente la seccinBuscar para aprender algunos conceptos bsicos. Comenzaremos ejecutando una consulta sencilla y luego aplicaremos una consulta algo ms compleja para comparar resultados. Creando Consultas Sencillas Por favor, dirjase a la seccin donde dice O Hacer una consulta (comodn: "%") dentro de la seccin Buscar. A continuacin, sitese dentro del campo ID. Verifique en la seccin Operador se encuentre el carcter = igual. Luego en la ventanilla donde dice Valor escriba el nmero 2 y haga clic en el botn Continuar. Si todo marcha bien, Ud., en pantalla debera observar los datos que referencian a dicho artculo, en este caso se trata de Balde. Pruebe con cada uno de los valores para el campo ID. Para retornar a una nueva consulta, simplemente, haga clic en la solapa de la seccin Buscar para recargar la seccin nuevamente. Creando Consultas Complejas Ahora, vamos a proceder a realizar una consulta algo ms compleja que la anterior. En el caso anterior, tan solo, podamos obtener un registro a la vez. En este caso y mediante el uso del predicado LIKE, podremos obtener todo tipo de datos si aprendemos a combinar estratgicamente los comodines. A continuacin, haremos

23

mailxmail - Cursos para compartir lo que sabes


aprendemos a combinar estratgicamente los comodines. A continuacin, haremos la siguiente experiencia. En la seccin donde dice O Hacer una consulta (comodn: "%") dentro de la seccin Buscar, dirjase al campo ARTICULO, luego verifique que en la seccin Operador se encuentre la opcin LIKE. Notar que si abre ese cuadro combinado, podr hallar todo tipo de operadores. Ahora bien, una vez que haya optado por LIKE, en la ventanilla de la seccin Valor escriba esto E% y a continuacin haga clic en el botn Continuar. Si todo marcha bien, en pantalla debera ver todos los artculos que empiezan con la letra E en forma de listado. Recurdese que si intercambia de posicin el comodn %, podr obtener todo tipo de filtro especfico para el hallazgo de datos en su tabla. Le recomiendo que experimente con todas las posibilidades que se le ocurra para verificar la potencialidad de estos comandos. Operando la Herramienta Gestin de Tablas SQL En la seccin SQL probaremos el uso de consultas estticas utilizando las mismas herramientas que utilizamos en la seccin Buscar. En este caso, tendremos que escribir en el script de la seccin SQL toda la consulta entera. Por tanto, ahora es un buen momento para aprender a desarrollar consultas estticas que, en otras oportunidades, podr aplicar en futuros desarrollos de sistemas de base de datos durante el desarrollo de aplicaciones Web o de Escritorio. Comenzaremos ejecutando una consulta sencilla y luego aplicaremos una consulta algo ms compleja para comparar resultados. Observacin: Puede omitir el uso del carcter punto y coma al final del script. Sin embargo, le recomiendo escribirlo siempre por muchas razones. Quiz y la ms evidente es la costumbre, la cual puede acarrearnos dificultades cuando utilizamos el lenguaje SQL en otros entornos o situaciones. Creando Consultas Sencillas Por favor, dirjase a la seccin donde dice Ejecutar la(s) consulta(s) SQL en la base de datos stock: en la seccin SQL. Dentro de esa ventanilla enorme (nuestro script) escribiremos nuestras consultas en lenguaje SQL. Empezaremos con una consulta esttica sencilla. Por favor, escriba la siguiente orden en su script. Luego haga clic en el botn Continuar. Si todo marcha bien, Ud., debera ver en pantalla el artculo que hace referencia al valor 2 del campo ID.

Le recomiendo que pruebe con todos los valores de la tabla y los que se le ocurran, obviamente siempre valores numricos, para aumentar su experiencia en este experimento. Creando Consultas Complejas En esta oportunidad utilizaremos algunas clusulas ms complejas mediante el uso del predicado LIKE. Para ello, comenzaremos utilizando el ejemplo pasado que hemos experimentado en la seccin Buscar. Entonces, repetiremos esa experiencia pero desarrollando toda la consulta mediante el lenguaje SQL. Por favor, a continuacin escriba en la ventanilla de script la siguiente orden. Si todo marcha bien, deber obtener en forma de lista todos aquellos artculos que comienzan con

24

mailxmail - Cursos para compartir lo que sabes


la letra E. le recomiendo que pruebe ms tarde con otras letras, incluso, combinado los comodines % de manera de obtener y confeccionar criterios ms amplios y complejos.

Pruebe este filtro algo quiz atpico en materia de gestin de un Stock, pero que en este caso, nos da una idea de que tan potente resultan ser estos comandos a travs del uso de predicados.

Resumen Tanto las consultas dinmicas como las estticas son, al menos en teora, casi ilimitadas. La cantidad de combinaciones y disponibilidades de las mismas permiten desarrollar variedades de estructuras de consultas dependiendo de las necesidades ms diligentes que requieren los clientes, usuarios o desarrolladores del entorno de gestin de datos. El lenguaje SQL resulta ser muy vasto. Operando la Herramienta Gestin de Tablas Exportar e Importar Una de las herramientas ms importantes que todo gestor de datos debe tener, es la forma de hacer copia de seguridad de sus datos. Tambin es deseable a su vez, obtener la recuperacin de datos de forma directa, eficaz y sencilla en caso de que se produjeren fatalidades en el sistema. El gestor de base de datos de MySQL, cuenta con un sistema de migracin que permite operar copias de seguridad. Se trata de una herramienta extremadamente sencilla y muy eficaz. En breve conoceremos algunos detalles de las mismas.

25

mailxmail - Cursos para compartir lo que sabes

7. Copia de seguridad con la herramienta Exportar


Situndonos en la solapa Exportar, podremos observar una serie de marcos donde podremos aplicar nuestra exportacin de datos con diversos tipos de formatos. No obstante, debemos conocer de antemano algunos detalles acerca de cada uno de ellos. A continuacin, hago un comentario acerca de ello. Detalles de los Formatos y sus Objetivos Cada uno de los formatos disponibles con los que cuenta con el gestor MySQL tiene de alguna forma un objetivo y un probable uso con marcadas limitaciones. En algunos casos, el formato puede tener tan solo un sentido. Es decir, suponga que exporta los datos de su tabla con el formato PDF o Microsoft Word, sus datos se formalizarn en un tipo de contexto que no podrn ser recuperados ms tarde mediante el uso de importar. En consecuencia, esta forma de exportacin solo obedece a un objetivo en un sentido y no est pensado para poder ser recuperado ms tarde mediante el uso de la herramienta importar. Sin embargo, existen otros formatos que si tienen, en cierto modo, un doble sentido puesto que estn pensados para poder ser exportados o importados en cualquier momento. En este caso estamos hablando de otro tipo de objetivo. En el primer caso descrito, hago mencin de un proceso de Informe mientras que en este ltimo caso, hago mencin de un proceso de Copia y Recuperacin de Seguridad . Por ltimo, cabe sealar que todo ello surge una tercera variante. Esta tercera variante est asociada con la arquitectura SOAP. Pongamos un ejemplo. Existen distintos tipos de sistemas, los cuales pueden no llegar a ser compatibles entre s. Es ms, sistemas tan distintos como MySQL y ColdFusion de la firma Adobe, por citar algn ejemplo. Si deseamos migrar datos de MySQL a ColdFusin de forma directa resulta imposible puesto que ambos sistemas son totalmente incompatibles. La nica forma de lograr migrar datos entre ambos es utilizar un proceso intermedio de traduccin que permita certificar dicho proceso. Normalmente, a este proceso se lo conoce como Bridge puente. No se trata precisamente de traducir, ms bien, de adaptar los tipos de datos para que estos sean interpretados por el gestor destino. Para ello se utiliza un formato universal llamado XML que consiste en un lenguaje de marcas y etiquetas. Por tanto, de MySQL se pasa a un proceso que crea un archivo XML y luego el archivo XML es ledo e interpretado por ColdFusion. De esta forma, el proceso recupera los datos y pasa de un sistema a otro mediante un archivo XML de intercambio que actuar como puente entre ambos sistemas. Algunos expertos suelen llamar a este contexto de tipo de archivo con el nombre de archivos Proxy. Sin embargo, un archivo Proxy cumple una serie de requisitos ms amplios y complejos, por lo que a mi juicio, este tipo de definiciones resulta muy crtica. Comentario: Para ser preciso, un archivo Proxy tiene un proceso ms complejo que comportarse como un puente entre sistemas. A modo de ejemplo, un archivo Proxy cumplira ms o menos una serie de requisitos. Pasar datos, traducir, interpretar y compensar. Por tanto, un archivo Proxy es una suerte de mezcla de librera, aplicacin e intercambiador de datos. Como ver, algo muy especfico y complejo de movida. En consecuencia, creo que tratar esto demandara otro apartado y escapara totalmente a los objetivos de este curso que Ud., est haciendo actualmente. Resulta importante sealar que durante un proceso de migracin de datos entre

26

mailxmail - Cursos para compartir lo que sabes


sistemas, cabe la posibilidad de la prdida de algunas caractersticas especficas de los tipos de formatos. Quiz este es el punto ms crtico entre las migraciones de datos entre sistemas que resultan totalmente incompatibles. Es por ello que siempre se recomienda el uso de tipos de formatos estndares. Por tanto, no es un tema menor y debiera ser tratado con cierta delicadeza. Creando un Proceso de Exportacin Exportaremos en un principio a tres formatos. Comenzaremos exportando nuestros datos a formato XML, luego utilizaremos el formato Datos CSV y, por ltimo, al formato SQL. El Primer paso para exportar es seleccionar el formato necesario y luego ajustar ciertos valores especficos para su refinamiento, obviamente, si es necesario. Es probable que algunos formatos, no permitan refinar los procesos finales para los datos. Por tanto, es un tema que merece todo un tratamiento aparte de este curso. Aqu simplemente, nos dedicaremos a proceder con una la exportacin generalizada o estndar omitiendo estos detalles por una cuestin pedaggica. Exportar a XML El formato de los archivo XML se basada en un modelo estructurado de etiquetas. Ahora bien, las etiquetas se agrupan en forma arborescente. Se trata de un modelo de tipo de base de datos muy generalizado y popular en esta poca. Sin embargo, es un modelo de tipo de base de datos que tuvo origen en el pasado y que gan fama en la actualidad gracias a la moderna tecnologa informtica, ms precisamente, gracias a la Internet y la inclusin como estndar en el modelo SOAP (Simple Object Access Protocol), es decir, la arquitectura moderna del software. El primer paso es seleccionar la opcin XML dentro del marco Exportar. Luego y a continuacin, haga clic en el botn Continuar. Esta accin abrir un cuadro de dilogos del navegador indicndole dos opciones posibles. O bien, desea abrir ese archivo de exportacin o si desea guardarlo en su sistema actual. Ud., deber elegir la opcin guardar en su disco. Eljase el Escritorio de Windows para hacer ms fcil el trabajo y luego presione el botn Aceptar del cuadro de dilogos. Si todo marcha bien, el exportador de MySQL migrar todos los datos y lo almacenar en un archivo de formato XML colocndole el nombre de su tabla al archivo formato XML. Importante: El nombre del archivo XML Ud., si lo desea, puede cambiarlo. Sin embargo, yo le recomiendo que no haga esto. Si Ud., tiene pensado importar datos desde el origen mediante este archivo XML puente, el nombre del archivo es tomado como el nombre la tabla y por tanto si coloca un nombre que no se corresponde al nombre de la tabla original, quiz Ud., pueda que tenga dificultades ms tarde durante los subsiguientes procesos. Tngase en cuenta estos detalles. Podr probar su archivo de exportacin utilizando para ello Excel. Ver que su formato se exporta en forma de tabla con formatos de color y con los formatos de tipos de datos correctos. Excel interpreta los archivos XML a la perfeccin y resultan muy tiles como sistemas de migracin entre sistemas tan desiguales, tal es el caso de la planilla de clculos de Excel y las bases de datos de MySQL Server Web, entre otros tantos ejemplos abundantes. Exportar a Datos CSV Ahora, haremos el mismo trabajo pero esta vez exportaremos un archivo de tipo Datos CSV, que es un formato estndar basado en tabulaciones o delimitadores creado en sus principios por IBM Corporation para sus sistemas de migracin de sus

27

mailxmail - Cursos para compartir lo que sabes


creado en sus principios por IBM Corporation para sus sistemas de migracin de sus MainFrame AS/400 y otras tecnologas pasadas de los 70. Bien, antes de continuar con esta pequea prctica, debo explicar algunos detalles acerca de este proceso. Las primeras base de datos eran desarrolladas bajo una plataforma basada en texto plano y con un punto de referencia especfico para separar los distintos tipos de datos y sus campos correspondientes llamados delimitadores. El primer mtodo de separacin consista en el agregado final de cada dato, el uso de un carcter especial que delimitada el fin y el comienzo de los campos y sus datos. Durante el proceso de confeccin del archivo, los caracteres especiales de separacin, son insertos estratgicamente. Ahora bien, los caracteres especiales podan tratarse de punto y coma, espacios, tabulaciones marcadas, etc. Sea cual fuere el separador, luego durante el proceso de lectura, son interpretados por la capa de datos y de negocio como un delimitador. La capa Competente[1], tan sola, trataba de excluir de la porcin de datos dichos delimitadores, para luego as, obtener los datos reales de la base de datos. Es as como funciona este formato llamado CSV que es prcticamente un estndar en nuestros tiempos. Puesto que el formato CSV presenta un sinfn de variantes de tipos de limitaciones y sus caracteres, el entorno de MySQL ofrece un proceso de intercambio y personalizacin de caracteres para este propsito. Ver entonces en el marco Opciones CSV una serie de alternativas de control para dicho proceso. En algunas oportunidades, tendr que intercambiar y probar distintos tipos de caracteres para obtener su archivo de forma correcto. Esto tan solo se obtiene por prueba y experimentacin. Para comenzar con nuestra prctica, seleccione Dato CSV, luego en el marco de Opciones CSV Opciones CSV, en el cuadro texto Campos encerrados por deje la celda en blanco. A continuacin, haga clic en el botn Continuar. Ahora, seleccione un destino para su archivo cuyo nombre es por defecto el mismo que el de su tabla. Por favor, no cambie este nombre original. He sealado con anterioridad este detalle y aqu repita las mismas instrucciones. Una vez finalizado, pruebe importando este archivo al formato de Excel. Exportar a Formato SQL Analizando el contexto acerca de este formato, en s, no se trata de un formato de archivo de base de datos, sino ms bien, de un archivo tipo script. Un archivo script se trata de un archivo que almacena rdenes especficas de comando. Por tanto y a diferencia de otros formatos clsicos, al menos a nivel de archivos, una base de datos y sus tablas se compone de una estructura basada en delimitaciones, etiquetados o estructura binaria compleja. Por otro lado, un archivo script se compone de una serie de comandos, parmetros, comentarios, datos, etc., muy parecido a un archivo fuente de cualquier lenguaje de desarrollo, pero que en este caso, incluye todos los datos que deseamos introducir en nuestra base de datos, ms precisamente, en nuestra tabla de turno. En consecuencia, un archivo SQL se trata de un script de datos que alberga tanto comandos como datos en un solo cuerpo. Para comenzar con nuestra prctica, por favor, en el marco donde dice Exportar, seleccione la opcin SQL. A continuacin, haga clic en el botn Continuar. Guarde el archivo y sin cambiarle el nombre en su Escritorio de Windows. A continuacin, abra su Bloc de Notas de Windows. Proceda entonces a abrir este archivo cambiando el filtro de tipo de archivos a todos los archivos en el Bloc de Notas. En el siguiente paso es abrir el archivo que acaba de exportar y que, si no le cambi el nombre,

28

mailxmail - Cursos para compartir lo que sabes


debera ser el nombre de su tabla con extensin sql. Por favor, bralo con el Bloc de Notas y saque sus conclusiones. El archivo script de exportacin crea un archivo script que ser til para el proceso de importacin, por lo que se recomienda, no alterar su contenido a menos que sepa lo que est haciendo. Muchos expertos, personalizan el archivo script para controlar e ejecutar tareas especficas. Si Ud., conoce bastante del lenguaje SQL, podr editar dicho archivo script y podra manipularlo de forma deseada, de modo que de esta manera, pueda personalizar dichos procesos en un modelo deseado final.

[1]Capa Competente ~ Esta capa no existe. Debo aclarar que la arquitectura del software tradicional cuenta con tres capas. La capa de datos, la capa de negocio y la capa de usuario o interfaz. En la poca de las bases de datos primitivas, esta arquitectura no estaba bien definida, dado que no haba un estndar adecuado. Es por ello que la definicin especfica de la capa para esto casos resulta compleja de definir puesto que no se encontraba estandarizada. Por una cuestin prctica, le he colocado el nombre de Competente como una forma de poder interpretar el concepto.

29

mailxmail - Cursos para compartir lo que sabes

8. Permisos de usuarios
El acceso y la explotacin de un a base de datos a sus consultas y tablas sin dificultades y de forma eficiente, suele ser el gran objetivo exitoso que todo desarrollador persigue. Sin embargo y por otro lado, la garanta de acceso al medio bajo estas condiciones, pueden poner de manifiesto ciertas debilidades de seguridad del sistema. Cualquier usuario no autorizado podra violar el espacio de datos y generar todo tipo de dao. Para controlar el acceso y explotacin ha dicho recursos, se puede establecer una serie de reglas en particular que controlen eficientemente estos puntos. A continuacin veremos estos detalles. Mecanismo de Identificacin El mecanismo de identificacin se basa en el estndar llamado comnmente Identificacin por Identificacin por Desafo y que consiste en la identificacin de un usuario mediante un nombre y una contrasea. Esta identificacin es nica y exclusiva de un usuario en particular, es decir, aquel que conoce sus datos. No puede existir otro usuario duplicado. Cada usuario tiene su espacio exclusivo. Este espacio de identificacin, generalmente, se lo conoce con el nombre de cuenta o perfil de usuario. Si bien existe una diferencia muy substancial entre una cuenta de usuario y un perfil, quiz sea preferible que utilicemos el trmino de cuenta de usuario, de modo de referirnos a los usuarios de las bases de datos. Un perfil es una cuenta de usuario pero con mayores detalles. Los perfiles no entran en este contexto de estudio. Para mayores lineamientos de seguridad de usuarios, los datos de los mismos, suelen codificarse con algn algoritmo de seguridad. Segn el grado de sensibilidad de los datos y los usuarios de la base de datos, este proceso de seguridad refinada, podra garantizar una poltica ms fuerte y una modalidad de seguridad ms robusta. En sntesis, existe un sinfn de combinaciones posibles para establecer hard roles polticas de seguridad duras. En los manuales especializados de seguridad y segn los estndares de seguridad, la rigidez de la seguridad se organiza en niveles operativos que van desde las polticas bsicas hasta las polticas ms complejas y duras. Mecanismo de Privilegios El mecanismo de privilegio parte en gran medida de dos controles principales que son el acceso y la denegacin de los recursos. Sin embargo, existe un valor intermedio al que podramos llamarlo privilegio parcial. Este valor intermedio resulta ser el ms granular. Para el caso de un control de privilegio parcializado, podra existir la posibilidad de controlar el acceso a una tabla, concediendo acceso de solo lectura. Si Ud., se basara en valores absolutos de controles, el comportamiento de su poltica sera drstico. Si accede, se permite todo y si deniega, no se permite nada. He aqu la gran diferencia. El gestor de base de datos MySQL Server y MySQL Server Web, prev un modelo de polticas de seguridad granular. De esta forma, el administrador de la base de datos tiene el control y gestin de forma segura, lo que a su vez, otorga confiabilidad al resto de los usuarios de la base de datos. Esto facilita la gestin de la base de datos y sus recursos, otorgando as, los privilegios adecuados y garantizando a los usuarios el acceso de forma granular, precisa y libre de todo tipo de discordias o

30

mailxmail - Cursos para compartir lo que sabes


potenciales peligros. Analizando las Cuentas de Usuarios En la siguiente figura Ud., podr ver un listado de usuarios globales. Si observa la tabla, ver en detalles que cada uno de ellos tiene un atributo especfico segn la definicin para su poltica competente.

La cuenta de usuario se compone de un nombre de usuario y de una contrasea. Adems de ello, se hace mencin al equipo al que se tiene acceso, que en este caso, se trata del Host. En la lista podr observar que la primera columna enlista a los usuarios, la segunda el Host de acceso y la tercera columna nos indica si dicho usuario posee contrasea en su cuenta o no. Resulta recomendable siempre que el usuario tenga contraseas por una cuestin de seguridad. El resto de las columnas hacen referencia al atributo que a este usuario se le aplica. Ms precisamente, interesa la columna donde se enmarca el tipo de privilegio llamada Privilegios globales. El Host o la columna Servidor, hace referencia al acceso de explotacin del recurso. El valor % porcentual es utilizado para representar cualquier tipo de acceso. Ud., puede utilizar direcciones IP o nombres de Host tal como localhost que hace referencia al equipo local. Se debe tener especial cuidado cuando se asignan accesos al recurso. Si por alguna razn desea utilizar ms de un medio de acceso al recurso, recuerde siempre de colocar los niveles de contrasea adecuadas para cada instancia de acceso. Esto evitar potenciales problemas de inseguridad. Analizando la Granularidad de las Polticas de Control Cuando crea a un nuevo usuario en el gestor de base de datos, se plantea un proceso refinado de controles que normalmente se le suele llamar granular. El comportamiento de la poltica granular consiste en determinar qu recursos deben estar o no disponibles para el usuario. De esta forma, el administrador del gestor de datos, podr determinar con precisin los lmites que son fijados a dicho usuario y su entorno operativo. A continuacin se muestra una captura de imagen para el caso de la creacin de un nuevo usuario para la gestin de datos.

31

mailxmail - Cursos para compartir lo que sabes

Parte Superior de la Pantalla

Parte Inferior de la Pantalla

32

mailxmail - Cursos para compartir lo que sabes


Resulta importante analizar la segunda captura. Aqu tiene un concepto amplio de lo que representa una poltica granular aplicada al recurso del gestor de datos. En el marco Datos puede ver los comandos ms importantes del lenguaje SQL. Segn se marque en cada una de las casillas, el usuario tendr o no disponibilidad a dichos comandos. Si bien Ud., puede marcar al azar, se supone que debe tener cierto criterio. Resulta interesante aclarar de ante mano que cuando se establece la poltica para el usuario, debe primar el sentido comn. Por ejemplo, si Ud., asigna la poltica conceder uso para INSERT y denegar SELECT, esto produce una poltica de gestin que permite agregar datos y no permite consultarlos. Evidentemente, si bien el sistema funciona a la perfeccin, aqu hay una falla de integridad, es decir, falta de sentido comn. Es por ello que Ud., debiera contar con algn plan antes de aventurarse a cambiar las polticas al azar. Los permisos se asignan marcando la casilla correspondiente. Si no marca la casilla, la poltica entiende que dicho valor o atributo ser denegado. As mismo, en el marco Estructura se cuenta con los mismos comandos pensados para la creacin y administracin en general de tablas. En el marco Administracin se determina el tipo de privilegio que se desea obtener para el usuario. A continuacin en la siguiente tabla se describe cada uno de estos atributos.

Administracin Atributo GRANT Descripcin Permite aadir usuarios y privilegios sin conectarse nuevamente a la tabla de privilegios. Permite la conexin, incluso si el nmero mximo de conexiones ha sido alcanzado; Necesario para la mayor parte de operaciones administrativas tales como montar parmetros de variables globales o matar procesos de otros usuarios. Permite ver las consultas completas en la lista de procesos. Permite a volver a cargar los parmetros del servidor y depurar los cach del servidor. Permite desconectar el servidor. Concede acceso a la lista completa de bases de datos. Permite poner candados a las tablas para el proceso actual. No tiene efecto en esta versin de MySQL. Da el derecho de usuario para preguntar donde estn los clientes. Necesario para las copias de salvas de seguridad.

SUPER

PROCESS RELOAD SHUTDOWN SHOW DATABASES LOCK TABLES REFERENCES REPLICATION CLIENT REPLICATION SAVE

33

mailxmail - Cursos para compartir lo que sabes


CREATE USER Permite crear, eliminar y cambiar el nombre de las cuentas de usuarios.

Si observa al final del pie de esta captura de pantalla imagen, podr observar una serie de campos de textos donde por defecto se ha colocado el valor cero. Aqu podr controlar, por ejemplo, la cantidad mxima de consultas que el usuario puede realizar durante la sesin, la cantidad de actualizaciones, la cantidad de conexiones medidas en cantidad de usuarios y en tiempo. El valor cero implica omitir estas restricciones. Esta poltica resulta ideal para ciertos escenarios, como por ejemplo, cuando se desea preservar el ancho de banda o limitar las operaciones transactivas del usuario que apuntan al recurso de base de datos. Quiz la seguridad y el ancho de banda son los principales motivos para su gestin y cuidado. Acceso a las Bases de Datos de MySQL Mediante Pginas Web Dinmicas El proceso de transferencia de informacin entre la arquitectura cliente-servidor, permite desarrollar todo tipo de mecanismos de comunicacin que resultan til en campo de la industria, el comercio y la mayora de las actividades humanas. Mediante una pgina dinmica, resulta posible establecer un proceso de comunicacin entre la mquina cliente y un servidor Web. Gran parte de los negocios modernos utilizan este principio y entre otros campos como la industria, la educacin, la salud y los recursos gubernamentales han ganado utilidad estos ltimos aos. Citando ejemplos, desde consultar la existencia y el coste de un libro, el acceso a un catlogo comercial, el acceso a la informacin de normalizaciones en la industria, obtener datos de un paciente hasta poder obtener el saldo de una cuenta bancaria, el pago de impuestos y otros tantos modelos comerciales vigentes. En sntesis, las pginas dinmicas nos permiten crear entornos de desarrollo de consultas ilimitadas, as tambin, ilimitadas en funcionalidades y objetivos.

34

mailxmail - Cursos para compartir lo que sabes

9. Arquitectura de 2 Capas. Cliente Servidor


Procesos de la Comunicacin El proceso de comunicacin resulta muy sencillo. Por un lado tenemos una computadora que solicita informacin la cual genera una serie de peticiones. Esta computadora es generalmente llamada Cliente. Por otro lado, tenemos una computadora ms potente que se encarga de recibir dichas peticiones y procesarlas para luego devolver los datos procesados a la computadora que ha solicitado peticiones. Esta computadora es llamada Servidor. Los paquetes de informacin se envan de un extremo a otro y pueden darse entre idas y vueltas. Este proceso de envi en doble sentido es conocido con el nombre de Postback. Dichos paquetes se trata de las transacciones comunes que suceden entre una computadora Cliente y una computadora Servidor. Las transacciones portan informacin que pueden ser de proceso (peticin) y de informacin (respuesta). Es por ello que para garantizar que el sistema funcione correctamente, habr que depender de varios mecanismos de sustento. Recurdese que este sistema de comunicaciones se basa en un modelo no conectado. Ello significa que si no se garantiza un proceso de soporte ideal de la informacin, esta misma se pierde. De all el hecho del uso de copias de archivos locales en los sistemas, el uso de cookies, credenciales, etc., y otros tantos mecanismos de sustento de la informacin. Resultan finalmente en un medio para garantizar las funcionalidades de este sistema. Detalles de los Procesos de la Comunicacin Ahora bien, la computadora Cliente tan solo recibe una copia de las pginas para la consulta y las almacena temporalmente en su sistema con el objeto de re utilizarlas. Esto sucede cuando un usuario visita el sitio Web de un portal. Las pginas transferidas hacia la computadora Cliente, resultan totalmente estticas y en formato HTML. En alguna seccin de dicha pgina, se establece un formulario de accin con el propsito de poder enviar una peticin a la computadora Servidor. El formulario se encuentra en espera y reaccionar cuando el usuario accione algn mecanismo, por ejemplo, que haga clic en un botn Enviar con el objeto de que se enve la solicitud deseada. Por tanto, la computadora Cliente solamente utiliza la pgina esttica en formato HTML para proceder con dicha comunicacin y peticin con el Servidor.

35

mailxmail - Cursos para compartir lo que sabes


Arquitectura de 2 Capas ~ Cliente / Servidor
Mientras tanto, la computadora Servidor contiene todos los archivos dinmicos que son capaces de realizar procesos especficos. Adems de los archivos dinmicos, tambin cuenta con otros tipos de recursos tales como bases de datos o archivos de soporte, etc. La computadora Servidor, recibe la peticin de la computadora Cliente e inmediatamente la procesa. Al procesar la peticin enviada por la computadora Cliente y segn como est desarrollado el sistema de proceso para las consultas, el Servidor reaccionara de varias formas. Si la consulta estriba en el proceso de verificar datos en una base de datos para que la computadora Cliente pueda obtener informacin peticionada, entonces, la computadora Servidor procesar la informacin enviando de regreso a la computadora Cliente el resultado de la bsqueda solicitada. Este resultado de envo se trata de otra pgina esttica en formato HTML que es recibida y copiada en el sistema local de la computadora Cliente para que luego pueda ser leda en pantalla. La pgina esttica es generada de forma dinmica por el proceso de pginas dinmicas desde la computadora Servidor. En la seccin Servidor, encontramos a grandes rasgos dos capas ms internas de proceso en la capa Servidor. Una capa interna es llamada Negocio dado que opera con el cdigo en conjunto de los procesos de servicios Web. La otra capa interna es llamada Legacy, se encarga de operar en este caso un gestor de base de datos. La gestin de la capa de Negocio se monta sobre el lenguaje PHP que nos permite operar al servidor junto a un software de gestin que se comporta en caridad de servicios Web llamado Apache. Ambos mecanismos, nos permiten establecer la comunicacin entre el Cliente y el Servidor y establecer negociaciones para procesar todo tipo de peticiones y datos. Por otro lado, en la capa interna Legacy, nos encontramos con el gestor de base de datos, que en nuestro caso se trata de MySQL Server Web. Cuando un cliente realiza una peticin, esta es dirigida al servidor y es analizada y procesada por la capa de negocio. Segn el proceso, desviar la peticin hacia la capa Legacy o hacia la computadora cliente nuevamente. Operacin entre la Capa de Negocio Por ejemplo, si una peticin no consiste en consultar la base de datos, el proceso se reduce a procesar dicha peticin y luego devolver al cliente los datos. Un ejemplo de ello podra ser una aplicacin que realiza clculos financieros sin la necesidad de consultar datos en una base de datos. Durante el curso, Ud., ha confeccionado en una de las prcticas una calculadora financiera que le permita calcular la rentabilidad de un plazo fijo. Los datos eran procesados y calculados por el mismo gestor de PHP, por tanto, el proceso se realizaba en su totalidad dentro de la capa de Negocio. Luego de que la capa de negocio finalice su proceso, los datos, son devueltos de regreso a la computadora cliente. Operacin entre la Capa de Negocio y la Capa Legacy A veces la consulta o peticin del cliente podra ser dirigida hacia una base de datos. Por ejemplo, consultar acerca de la existencia de un libro en un catlogo virtual que posee una librera virtual que opera en la Internet. A continuacin, analizaremos un caso de consultas Online. En el siguiente ejercicio prctico que har ms tarde, tendr la oportunidad de construir este ejemplo que analizaremos en este apartado. Por tanto, empezaremos describiendo las partes que operan en esta solucin y sus detalles operativos.

36

mailxmail - Cursos para compartir lo que sabes


Procesos Operativos de un Sitio Web con Consultas Online Comenzando la descripcin, imaginaremos que un usuario con su computadora personal visita el sitio Web de la librera. Una vez que sucede esto, la pgina HTML llamada librera.html y el resto de los archivos de recursos, como por ejemplo, los grficos, archivos de estilos si los hubiere, etc., que se encuentran en el servidor, son transferidos y copiados en el sistema local de la computadora Cliente. Este archivo en formato HTML llamado librera.html, contiene el soporte para el formulario de accin que se utilizado para realizar las consultas Online y el resto de los recursos para estructurar y embellecer la interfaz grfica. Una vez transferido todos los archivos, el usuario podr disponer del uso interactivo que esta pgina Web le ofrece. Para ello, comienza a rellenar los campos de bsqueda y selecciona el tipo de bsqueda que desea dependiendo de las opciones ofrecidas por dicho recurso. Una vez que completa correctamente todos los requisitos bsicos de dicho formulario, procede a ejecutar la consulta haciendo clic en el botn Buscar. A partir de este instante, la peticin es enviada directamente al servidor Web. Sin embargo, el formulario de accin tiene una caracterstica de envo especfica. Por un lado determina el mtodo de envo y, por el otro, el llamado al archivo de proceso en la capa de Negocio en la seccin de la capa del Servidor, cuyo archivo es llamado resultados.php. El envi de la solicitud y todos sus datos pueden realizarse mediante dos mtodos distintos llamados POST y GET. La diferencia entre ambos mtodos de envo erradica en la forma en cmo es enviado la solicitud y sus datos. Cuando el envo es a travs del mtodo GET, la solicitud de envo en conjunto con los datos son anexados a la direccin del espacio de direccionamiento URL que hace referencia al sitio Web. Este mtodo es el ms sencillo y el que garantiza ms velocidad, pero es inseguro dado que los datos pueden ser observados y capturados fcilmente por algn delincuente informtico. En cambio, el mtodo POST resulta ser ms seguro dado que la solicitud ms los datos es incorporado en el encabezado de la peticin, por lo que resulta en un mtodo seguro puesto que se anexa sobre el encabezado del archivo de peticin, lo cual y por razones de seguridad, puede ser encriptado para mayor seguridad operativa. De esta forma, un delincuente informtico, no podra capturar los paquetes de envo y le resultara en ms difcil de hacerlo. El mtodo POST es el que se recomienda por defecto, incluso, muy recomendado en casos de donde se opera con informacin crtica y sensible. La solicitud y segn el mtodo utilizado, es enviada hacia el servidor en forma de un archivo especfico. Este archivo se copia en la memoria del servidor y es procesado por el mismo. El ciclo de vida de este archivo temporal en el servidor, depende del resultado de los procesos en la capa de Negocio. Si el proceso falla, el servidor inmediatamente lo elimina de la memoria y si el proceso es til, lo utiliza hasta culminar con el proceso de ejecucin en la capa de Negocio. Gracias a este sustento temporal, el motor de lenguaje PHP hace uso disponible de las variables que son transferidas y manipuladas desde el momento que se enva la solicitud hasta su culminacin en los procesos en la capa de Negocio en el Servidor.

Los datos de solicitud enviados desde la computadora cliente, como dijimos, se almacenan en un archivo temporal en el servidor. La capa de negocio y en conjunto con el gestor del lenguaje PHP, hace uso de este archivo para manipular las variables de datos que contienen la informacin que han sido envidas desde la computadora cliente. De esta forma, el gestor PHP procede a utilizarlas durante la ejecucin del archivo de procesos de destino, que en este caso se trata del archivo resultados.p

37

mailxmail - Cursos para compartir lo que sabes


resultados.php que se encuentra en el servidor y en el directorio raz del sitio Web. Luego de haber sido procesado dicho archivo, la capa de Negocio transfiere la informacin al gestor de PHP y este se encarga o, bien, de reenviar la solicitud de respuesta al cliente o de procesar el dato y luego reenviar los resultados finales a la computadora cliente. A continuacin, analizaremos muy detenidamente el proceso que sucede en el archivo resultados.php. Procesos Operativos en la Capa de Negocio y en la Capa Legacy El archivo llamado resultados.php se encargar de realizar varios subprocesos que describir en detalles a continuacin. A grandes rasgos, el archivo se puede analizar y partir al menos en tres grandes fases. Una fase es la de verificar si los datos que han sido enviados desde la computadora cliente estn libres de errores tipogrficos o semnticos. Luego, una fase donde se determina si la base de datos est disponible, y por ltimo, una fase que nos permite realizar la consulta en la base de datos. Importante: Caber sealar de antemano que esta descripcin que sigue luego de este prrafo, tan solo se trata de una serie de extractos del cdigo real completo. Se han tomado pequeas partes para analizar su comportamiento. Funciones Especficas para Tratar Cadenas La verificacin de los datos que han sido enviado por la computadora cliente deben ser verificados para evitar errores de excepcin, adems tambin, para hacer que los valores ingresados sean los correctos de modo que sean fcilmente interpretados por el sistema o aplicacin para proceder con la consulta sobre la base de datos. Ud., encontrar el uso de dos funciones llamadas addslashes y stripslashes y al principio el uso de una funcin llamada trim. El uso de la funcin trim es para quitar los posibles espacios vacos por delante o por detrs de los datos escritos en el formulario del cliente. Puede que el usuario escriba los datos en el campo de texto y haya dejado espacios vacos por delante o por detrs de sus escritos. La funcintrim nos garantiza que estos espacios no pasen directamente al cdigo dado que podran incidir en los resultados de las consultas finales. El uso de addslashes tiene como objeto evitar potenciales errores en el proceso de consultas. Por ejemplo, el carcter (') apstrofe suele ser un gran generador de errores cuando se lo utiliza durante la gestin de base de datos. El error se debe a que este carcter suele ser utilizado por el motor SQL como un carcter especial. Para subsanar el problema, se suele utilizar un carcter especfico para salvar el error. En nuestro caso, se agrega una contra barra. La funcin stripslashes realiza el proceso a la inversa. Vase los siguientes cdigos para mayores detalles.

38

mailxmail - Cursos para compartir lo que sabes

Funciones Especficas para Tratar Acceso a Base de Datos Para poder acceder al a base de datos y poder manipular consultas, ya sean estas estticas o dinmicas, se requiere de un serie de funciones que se encuentran dentro de una librera en el propio proveedor de bases de datos. En sntesis, MySQL posee una serie de libreras y ofrece una serie de funciones especficas para que a travs de los lenguajes de desarrollo, en este caso PHP, se puedan acceder y manipular los recursos de las bases de datos. La capa Legacy se encarga de administrar estos procesos. La capa de Negocio accede a la base de datos a travs de la capa Legacy. La capa Legacy es independiente de la capa de Negocio. Todo lo que ocurre dentro del gestor de MySQL y cmo se proceden a realizar diversos procesos especficos en la base de datos, son totalmente ajenos a la capa de Negocio. Tan solo desde la capa de Negocio se pueden pasar mensajes o directivas, que la capa Legacy, se encargar de ejecutar de forma personal. Por tanto, la capa de Negocio delega y depende de los procesos internos que realice la capa Legacy. A continuacin, analizaremos las funciones ms importantes de este ejemplo de consultas Online. La funcin mysql_pconnect(server, user, password, [flags]) es utilizada para establecer la conexin de datos. Utiliza cuatro parmetros formales. La funcin requiere pasar como parmetros la ubicacin de la base de datos, el nombre de usuario y la contrasea. El cuarto parmetro formal resulta ser opcional y se lo utiliza para casos especiales. A continuacin se muestra un extracto del cdigo para establecer una conexin a una base de datos.

El carcter inicial (@) arroba es utilizado para indicarle al procesador que se espera el resultado de algn tipo de lectura para capturar y manipular errores. La variable $ d b $ d b carga el valor que le pasa la funcin mysql_pconnect(). Dicho valor tiene dos resultados finales. Si existe algn error durante la conexin el valor es nulo y, por lo tanto, la variable $ d b asume el valor nulo. Ahora bien, si la conexin resulta exitosa, el valor ser distinto de nulo. En la siguiente lnea del cdigo se anuncia al usuario del problema en caso de que no sea posible conectarse a la base de datos. Dado que la variable $ d b asume como nulo y la negacin de nulo resulta en un valor verdadero, se muestra en pantalla el mensaje contenido en el cdigo, de lo contrario, los procesos continuarn y este mensaje ser omitido.

39

mailxmail - Cursos para compartir lo que sabes


La funcin mysql_select_db(base_de_datos) es utilizada para abrir una base de datos y asignarla para su posterior uso. Recurdese que en el gestor de MySQL Ud., puede contar con ms de una base de datos. En consecuencia, es recomendable que seleccione la tabla que corresponde.

A partir del resto del cdigo, se utiliza una serie de funciones que tienen el propsito de manipulacin y obtencin de los datos en pantalla, los cuales, pueden ser formateados para su presentacin final en la pantalla. Empecemos describiendo dichas funciones.

La variable $consulta alberga la cadena en formato SQL para construir la consulta esttica. Notar que hemos utilizado el predicado LIKE para poder realizar consultas de rango amplio. Para potenciar los mtodos de bsqueda, la variable llamada $terminbusqued $terminbusqueda es la que inserta las palabras que ha escrito el usuario en el formulario para luego su posterior envo. Si observa bien, se ha encerrado entre signos porcentuales (%). Estos caracteres junto al predicado LIKE se los utiliza para hacer que la bsqueda busque todos los registros posibles cuyas palabras que figuran en la variable $terminbusqueda coincidan con las que se hallan dentro de la tabla de la base de datos. La variable llamada $consulta es asignada al parmetro formal de la funcin llamada mysql_query(). Esta funcin se encarga de ejecutar la consulta. El resultado de la consulta o de la funcin realizada es asignado a la variable llamada $resultado $resultado. El valor de la variable $resultado es utilizado dentro del parmetro formal de la funcin llamada mysql_num_row(). Esta ltima funcin permite determinar la cantidad de registros que posee la tabla en la base de datos. Este valor resultar til luego para poder controlar el recorrido de cada uno de estos registros dados y su posterior proceso de carga en pantalla. El resultado de esta funcin es asignado a la variable$num_resultados. Esta variable ltima es utilizada

40

mailxmail - Cursos para compartir lo que sabes


dentro de un bucle for(). El bucle sabe cuntos registros posee la consulta y proceder a contar hasta el valor asignado. Por ltimo, la funcin llamada mysql_fetch_array() en conjunto con su parmetro formal llamado $resultado, es utilizada para asignar la matriz vector a una variable de filas utilizadas para representar los valores obtenidos en funcin a la fila y la columna de dicha tabla. Al finalizar y para cada campo de la tabla de la base de datos, se escribe el cdigo pertinente que hace referencia al campo y el valor que figura en dicho campo. Todo ello se realiza mediante la variable de objeto$row[campo]. Resulta importante aclarar un detalle. Es probable que al escribir el campo como $row[title] suele no no funcionar. Para subsanar este problema, Ud., puede sustituir la expresin literal por el ndice de valor de campo, es decir, si el campo se ubica en la tercera columna, su campo podra escribirlo como $row[2] dado que la primera columna tiene el valor 0. Las columnas o campos se encuentran indexados. Recurdese que la funcin stripslashes() es utilizada para quitar los caracteres barra que son utilizados para evitar errores internos en las consultas SQL del motor de base de datos. Para ir finalizando, una vez que la consulta es realizada y se determina la cantidad de registros existentes, el motor del lenguaje PHP a travs de este archivo fuente prepara un informe de datos de envo hacia la computadora cliente. El envo se hace a travs de otra pgina esttica en formato HTML, la cual, es recibida por la computadora cliente y copiada localmente en dicha mquina. Una vez hecha la copia, el cliente tendr toda la informacin consultada en pantalla y se habr culminado con el proceso de consulta.

41

mailxmail - Cursos para compartir lo que sabes

10. Acceso a las Bases de Datos de MySQL Mediante Pginas Web Dinmicas
En la clase pasada vimos el mtodo de acceder a una librera virtual a travs de una pgina que se utilizaba para consultar una base de datos. Este tipo de consultas se realiza de forma esttica por sobre la base de datos debido a que no existen alteraciones en los datos y estos mismos son objetos de exhibicin. Sin embargo, quiz en algunas ocasiones, resulte necesario actualizar o cambiar datos en la base de datos. Este tipo de acciones implica que los datos se alteren de algn modo en la base de dato y, por ende, el proceso pase a calificarse como dinmico. Durante esta clase veremos el cdigo utilizado para realizar actualizaciones, anexado y eliminacin de datos utilizando el lenguaje PHP y el lenguaje embebido SQL. Anexar Datos a una Tabla para una Base de Datos Para anexar datos en una tabla para una base de datos utilizamos algunos comandos especficos del lenguaje SQL ms unas funciones especficas del lenguaje PHP. Estos operan en conjunto y nos permiten manipular los procesos de forma conveniente. A continuacin, dejo un trozo de cdigo para analizar.

// Conectarse a la base de datos... @ $db = mysql_pconnect("localhost", "root", "contrasea"); if (!$db) { echo ""; ... mensaje de errores ... exit; } // Cargar la base de datos... mysql_select_db("libreria"); // Seccin para el anexado de datos $query = "insert into libros values ('".$isbn."', '".$autor."', '".$titulo."', '".$precio."')"; $result = mysql_query($query); // Resumen final del proceso de anexado... if ($result){ echo mysql_affected_rows()." libro introducido en la base de datos."; }

42

mailxmail - Cursos para compartir lo que sabes


Este trozo de cdigo es muy sencillo. En partes se repite para la mayora de los tipos de consultas, tanto en la conexin de base de datos, en establecer la tabla y la funcin para pasar la consulta dada. La funcinmysql_query() permite ser utilizada tanto para consultas estticas como para consultas dinmicas. La pieza clave en este proceso, se encuentra en cmo es ensamblada la estructura de la consulta segn muestra el trozo de cdigo ejemplo. En estos casos, es necesario sealar algunas recomendaciones para obtener el mejor aprovechamiento de esta tcnica. Si observa el cdigo, notar que todos las variables pasadas como datos o valores para cada uno de los campos de la tabla, estn rodeados de apostrofes. Esto denota que los campos a insertar son de tipo texto. Sin embargo, podramos tener inconvenientes si insertamos caracteres que entran en conflicto con la estructura interna del cdigo, como por ejemplo, el apellido O Bryan o D Volio por citar algunos ejemplos. Para evitar esto, en la clase pasada, he comentado acerca del uso de las funciones addslashes() y streapslashes() para tratar estos problemas. Por tanto, tngase en cuenta estos detalles. Los valores numricos no requieren ser encerrados entre apstrofes. Sin embargo, tendr que observar el uso del punto como carcter flotante y no la coma. Ello es debido a que SQL solo entiende el formato americano dado que se basa en el estndar ANSI 94. Para el caso de fechas, deber encerrar los valores entre signos numerales. Otra observacin con respecto a las fechas, es la posicin correcta entre el valor del da y el valor del mes expresado en nmeros enteros. Si Ud., coloca al revs estos campos, puede que tenga inconvenientes. Por ejemplo, para la fecha 12/1/2005 el sistema ANSI 94 se hace mencin del mes de diciembre del da uno del corriente ao mes. Si lo leemos con el formato argentino, la fecha hara mencin a da doce de enero de 2010. Esto es un grave problema y debe ser cuidadosamente controlado. Las fechas que maneja MySQL por defecto, utiliza un orden de ao, mes y da. Por tanto, si queremos presentar la fecha 12/01/2005, para MySQL la fecha se compondra como 2005/01/12. Aqu tenemos otro tipo de dificultades a la hora de manipular fechas entre PHP y MySQL. Por tanto, se puede acudir al uso o construccin de funciones que permitan crear una adaptacin de formatos adecuada. Analicemos la siguiente funcin que incluye una funcin nueva llamada ereg() ereg().

function convertFecha($fecha){ ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $miFecha); //Porbar si el da es adecuado... if($miFecha[3] > 31 || $miFecha[3] < 0) { $msj="Error de Fecha - Da incorrecto"; return $msj; exit; }

43

mailxmail - Cursos para compartir lo que sabes


//Probar si el Mes es adecuado... if($miFecha[2] > 12 || $miFecha[2] < 0) { $msj="Error de Fecha - Mes incorrecto"; return $msj; exit; } $laFecha=$miFecha[3]."/".$miFecha[2]."/".$miFecha[1]; return $laFecha; }
Esta funcin toma la fecha ingresada a travs del parmetro formal $fecha que es ingresada con el formato de MySQL, por ejemplo 2008-10-05 y la convierte en la fecha 05/10/2005. Lo que hace es simplemente rotar la posicin del ao por el da y el da por el ao respectivamente. La funcin ereg() se trata de un evaluador de expresiones regulares. La funcin verifica los valores que son ingresados y los compara mediante un patrn. Si los valores ingresados coinciden con el patrn, estos valores son aceptados por la funcin y posteriormente procesados. En cambio, si los valores no coinciden con el patrn, estos mismos, son rechazados e ignorados por la funcin, lo que significa, que no son procesados. El evaluador junto con el patrn, tan solo acepta el ingreso de caracteres numricos ms el guin que es utilizado para separar los trminos que componen la fecha. De esta manera, Ud., puede controlar que el ingreso de los valores se realice de forma adecuada y, en cierto modo, liberar al sistema de potenciales errores de integridad. El patrn es representado como la cadena "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})" . El patrn evala que las fechas ingresadas sean valores numricos y que dichos valores estn comprendidos dentro de un rango adecuado. Por ejemplo, en el caso del mes sabemos que existen 12 meses y por tanto, colocar valores mayores a doce o menores a cero, sera un error. El patrn mediante la seccin ([0-9]{1,2}), permite establecer el ingreso de nmero de dos dgitos. El resto de los procesos dentro de la funcin evalan estos lmites de rangos mediante el uso de condicionales bsicos. Eliminar Datos a una Tabla para una Base de Datos Para eliminar datos de una tabla en una base de datos utilizaremos el siguiente cdigo que se muestra a continuacin.

// Conectarse a la base de datos... @ $db = mysql_pconnect("localhost", "root", "contrasea"); if (!$db) { echo ""; ... mensaje de errores ... 44

mailxmail - Cursos para compartir lo que sabes


... mensaje de errores ... exit; } // Cargar la base de datos... mysql_select_db("libreria"); // Seccin para eliminar datos $query = "delete libros where autor = '".$autor."'"; $result = mysql_query($query); // Resumen final del proceso de anexado... if ($result){ echo "Dato eliminado correctamente."; }
Para eliminar registros, siempre resulta conveniente analizar qu tipo de eliminacin requerimos. El comando eliminar puede tener un comportamiento muy distinto al utilizarlo de una u otra manera. Por ejemplo, si Ud., borra utilizando como bsqueda o referencia un campo indexado con clave nica, el registro seleccionado ser eliminado de forma correcta y ser el nico al que estar afectado a esta operacin. Ahora bien, si Ud., opta por un tipo de campo no indexado y que no posee clave principal, la eliminacin de los registros pueden ser ms de uno. Ello es debido a que los registros que coincidan con el valor introducido en el parmetro de bsqueda, ser afectadas por esta directiva. Por favor, tngase en cuenta estos conceptos. Actualizar o Modificar Datos a una Tabla para una Base de Datos Para actualizar datos de una tabla en una base de datos utilizaremos el siguiente cdigo que se muestra a continuacin.

// Conectarse a la base de datos... @ $db = mysql_pconnect("localhost", "root", "contrasea"); if (!$db) { echo ""; ... mensaje de errores ... exit; } // Cargar la base de datos... 45

mailxmail - Cursos para compartir lo que sabes


mysql_select_db("libreria"); // Seccin para actualizar o modificar datos $query = "update libros set isbn = '".$isbn."', autor = '".$autor."', titulo = '".$titulo."', precio = '".$precio."' where autor = '".$autor."'"; $result = mysql_query($query); // Resumen final del proceso de anexado... if ($result){ echo "Dato actualizado correctamente."; }
La modificacin o actualizacin de datos sufre un efecto casi parecido con el que coment en eliminar datos respecto a los datos que sern afectados. Si se elije un dato por clave principal la actualizacin se har sobre ese exclusivo registro. No obstante, si se hace sobre un campo donde no existe indexacin o unicidad de datos, los cambios se vern reflejados sobre este y otros tipos de registros cuyos datos coincidan con el criterio inicial de referencia para el cambio.

46

mailxmail - Cursos para compartir lo que sabes

11. Mecanismo de Autenticacin y Sesiones


En lecciones pasadas, hemos propuesto un modelo de identificacin para controlar la autenticacin de usuarios mediante un sistema de control llamado identificacin por desafo. En su oportunidad, hemos utilizado un proceso de gestin y control a travs de unos archivos especiales que el servidor Apache en conjunto proporciona. Sin embargo, en su oportunidad, hemos visto que el uso de los mismos se sujetaba a limitaciones funcionales y operativas. Sealamos en su oportunidad estas debilidades y la necesidad del uso de un sistema ms eficiente para casos donde se requiere un control ms sensible y estricto de los recursos en lo que concierne en materia de seguridad. Entre otras consecuencias negativas es que a travs del sistema que ofrece el servidor Apache en materia de seguridad, no se puede controlar, gestionar y garantizar el uso de las sesiones de los usuarios identificados en el recurso Web. No hay manera de controlar el uso y los movimientos que el usuario realiza durante la explotacin del servicio Web. Por tanto, el sistema resulta ineficiente en materia de seguridad operativa del sistema. El uso de sesiones permite y garantiza operatividad robusta en el manejo del control de operaciones con los usuarios. En efecto, en esta oportunidad, estudiaremos un gestor mucho ms robusto y eficiente en materia de seguridad y calidad operativa. Notaremos que este sistema resulta mucho ms flexible. Nos permitir extender sus posibilidades y garantizar a la vez un margen operativo y de seguridad a escala. Para ello, combinaremos el uso robusto de funciones que proporciona el lenguaje PHP ms los recursos que proporciona el gestor de base de datos MySQL. Ambos gestores nos permitirn potenciar las funcionalidades y ofrecen un proceso de seguridad, escala y flexibilidad ilimitadas. Funcionalidad Operativa de Autenticacin y Sesiones El mecanismo consiste en dos reas especficas de control. A continuacin, detallaremos en parte dichas funcionalidades operativas. Autenticacin e Identificacin Gestin de Sesiones Autenticacin e Identificacin de los Usuarios Para poder identificar al usuario, resulta necesario depender de un mecanismo de reconocimiento. Este reconocimiento puede utilizar muchas alternativas. El sistema ms comn y generalizado es mediante el uso de un nombre y una contrasea. Ambos campos de informacin, son almacenados en una base de datos protegida y segura del gestor de administracin de bases de datos. El acceso a este recurso tiene como fin la de gestionar el modelo de autenticacin. Este modelo consiste en determinar si el usuario que pretende ser autenticado se encuentra sus datos almacenados en la base de datos. Si sus datos, ambos en este caso, coinciden perfectamente se supone que el usuario es autorizado dado que es quien dice ser. Si no existen coincidencia o los datos no son apropiados, se supone entonces que dicho usuario no tiene autorizacin y por lo tanto no se puede asegurar si es quien dice ser . Para dar mayor margen operativo de seguridad, dado que las contraseas pueden

47

mailxmail - Cursos para compartir lo que sabes


ser objeto de vulnerabilidades operativas, la informacin de las contraseas se suelen encriptar codificar mediante un cdigo de cifrado especfico. Se puede utilizar MD5, SHA y sus versiones. El lenguaje PHP y el gestor MySQL utilizan modelo de cifrado llamado PASSWORD. Este sistema de cifrado es bsico pero bastante eficiente. Para garantizar un mayor modelo de seguridad, se recomienda utilizar MD5 o SHA y algunas de sus versiones. Tanto MD5 como SHA y sus versiones, no pueden ser descifradas. Esto permite garantizar seguridad. Los cifrados realizados por la funcin PASSWORD son ms vulnerables y hay un historial de crackeos, aunque son casos aislados. Por tanto, en materia de sensibilidad, quiz resulte ms adecuado un modelo ms robusto, por tanto, es un tema a estudiar profundamente. Los valores de informacin se almacenan en una base de datos protegidas, las cuales, tienen un control ms refinado y seguro que los que proporcionan los archivos .htaccess del servidor Apache. Adems de ello, el gestor de base de datos permite determinar quin puede controlar la tabla o base de datos y otorgar a su vez privilegios totalitarios, parcializados o restringidos. Tal es el caso de un control totalitario por parte de un administrador, de un control parcializado para el control de un administrador operativo del recurso y privilegios diferenciados o restringidos para los usuarios del recurso. Sistema de Sesiones para los Usuarios El manejo de sesiones resulta crucial durante el proceso de negociacin entre el usuario y el sistema. Por ejemplo, si el usuario est realizando alguna gestin online, como por ejemplo, las compras o una transferencia bancaria. Dado que el sistema se basa en un modelo no conectado, comnmente llamado stateless, no existe forma de controlar los estados operativos del sistema y del usuario. El salto de una pgina a otra implica la prdida de datos debido a que el modelo es esttico y no preserva los estados de las mismas. La nica forma de garantizar la permanencia de dichos estados es a travs de un mecanismo de sesiones que permita registrar estos procesos. Al registrar dichos procesos, estos mismos se convierten en consistentes y, por lo tanto, podrn ser gestionados correctamente. El manejo de la sesin del usuario permite controlar que se opere de forma correcta y segura los recursos. La sesin evita que el usuario, por alguna u otra razn, pase de una pgina a otra y pierda la informacin o tenga el impedimento de continuar realizando las negociaciones online. Si esto sucede, se podran plantear varios problemas de inconsistencia. El usuario podra perder el control de lo que est haciendo. Por otro lado, el servidor que ofrece el sistema y la aplicacin, no tendra control de lo que ocurre y podra estar otorgando un espacio de trabajo a un usuario no autorizado o podra estar restringiendo el uso de dicho recurso al usuario.

48

mailxmail - Cursos para compartir lo que sabes

12. Mecanismo de Control y Gestin de Sesiones


Para poder establecer una sesin entre una computadora servidor y una computadora cliente, se ha desarrollado un mecanismo de control a travs del envo de sesiones mediante al menos dos modalidades. Una por URL y otra mediante Cookies. Segn el mtodo elegido, el servidor de esta forma, podr establecer un proceso de negociacin de sesin entre una computadora cliente y el servidor. Por medio de la URL se pasan las variables o los datos de un punto a otro mediante dos tcnicas GET o POST. Si se realiza en forma de GET, los datos se anexan a la direccin que apunta al recurso o si se utiliza POST, los datos se anexan en el encabezado de la solicitud de envo que es dirigida al recurso apuntado. Cuando un cliente se identifica en el servidor, el servidor enva hacia el cliente un cdigo nico de identificacin y gestin de sesin llamado SID. El SID es un nmero que es asignado desde el servidor de forma aleatoria y es utilizado para gestionar la negociacin. El SID se almacena en la computadora cliente temporalmente hasta que la computadora cliente abandona el recurso cerrando la sesin en el servidor. La computadora cliente tan solo preserva este nmero de identificacin. Mientras que en el lado del servidor, el nmero es almacenado en conjunto a otros factores relacionados con las variables de la sesin y otros datos operativos de gestin interna del servidor. En el caso del uso de Cookies, en la computadora cliente se almacena un pequeo archivo que guarda el nmero SID y otros parmetros relacionados con la expiracin, las pginas o recursos dirigidos, etc. Estos ltimos parmetros resultan ser opcionales excepto el nmero SID. A travs de este pequeo archivo que genera una Cookie, el servidor puede identificar a la computadora cliente y puede de esta forma controlar la sesin entre ambas garantizando as la funcionalidad operativa. Sin embargo, el uso de Cookies podra estar condicionado debido a que muchos navegadores Web o, bien, no soportan Cookies, no los utilizan o no permiten el uso de Cookies. Para evitar que este inconveniente condicione la funcionalidad del sistema, el lenguaje PHP utiliza un sistema que fuerza a utilizar ambos sistemas basados en URL o en Cookies. De esta forma, se garantiza de que en caso de no utilizar Cookies, el sistema siga operando utilizando URL por defecto como ltima alternativa. Funciones Control de Sesiones Existen dos funciones importantes que permiten controlar el inicio o la destruccin de las sesiones llamadas session_start() y session_destroy(). En cada pgina donde se requiere de la sesin, se debe iniciar la sesin y resulta imprescindible iniciar el cdigo asignando la funcin session_start(). Luego, podr complementar el resto del cdigo utilizando otras variables complementarias. Cuando desea destruir la sesin debido a que el recurso ha perdido el inters o el efecto deseado, deber utilizar la funcin session_destroy() para concluir con este proceso. A continuacin dejo dos ejemplos expuestos en la pgina principal de PHP.

49

mailxmail - Cursos para compartir lo que sabes


<?php // page1.php session_start(); echo 'Bienvenido a la pgina #1'; $_SESSION['favcolor'] = 'verde'; $_SESSION['animal'] = 'gato'; $_SESSION['time'] = time();

// Esta sesin opera si la cookie es aceptada echo '<br /><a href="page2.php">pgina 2</a>'; // O puede ser que la sesin ID sea necesaria echo '<br /><a href="page2.php?' . SID . '">pgina 2</a>'; ?> <?php // Inicializar la sesin. // Si usa session_name("something"), No se olvide esto ahora! session_start(); // Quita todas las variables de las sesiones ahora. $_SESSION = array(); // Si desea matar la sesin, tambin borre la sesin de la cookie. // Nota: Esto destruir la sesin y no los datos de la sesin! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } // Finalmente, destruye la sesin. session_destroy(); ?>

50

mailxmail - Cursos para compartir lo que sabes


Para poder registrar y quitar el registro de las sesiones se utilizan dos funciones de control llamadas session_register() y session_unregister(). La funcin session_register() session_register() posee parmetros y permite registrar ms de una variable a la vez, es decir, crear ms de un registro de sesin a la vez. As mismo, para destruir o quitar los registros se utiliza la funcin session_unregister() respectivamente. <?php // El Uso de la session_register() est fuera de uso $barney = "Es un enorme dinosaurio prpura."; session_register("barney"); // El uso de $_SESSION es recomendado, para las versiones PHP 4.1.0 $_SESSION["zim"] = "Un invasor de otro planeta."; // Esta es la manera vieja de uso $HTTP_SESSION_VARS $HTTP_SESSION_VARS["Bob_esponja"] = "l tiene los pantalones cuadrados."; ?> Funciones Control de Cookies Para manipular envo de Cookies se utiliza desde el servidor una funcin llamada setcookie() setcookie(). La funcin crea un pequeo archivo plano que contiene el nmero SID y puede contener otros parmetros adicionales tales como el tiempo de expiracin de la sesin, enlaces relacionados, etc. El primer parmetro es el nombre de la Cookie y por tanto suele ser utilizado para poder construir el archivo Cookie. El resto de los parmetros resultan ser opcionales y solo se los utiliza en casos donde se requiere un comportamiento especfico para las sesiones entre el cliente y el servidor. Un comportamiento quiz ms habitual es el control del tiempo de la sesin establecida. bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] ) <?php $value = 'algo de algn lugar'; setcookie("TestCookie", $value); setcookie("TestCookie", $value, time()+3600); /* expra en 1 hora */ setcookie("TestCookie", $value, time()+3600, "/~rasmus/", ".example.com", 1); ?> En este trozo de cdigo se puede observar tres formas tradicionales de escribir Cookies utilizando la funcin setcookie(). Ntese que el nombre de la Cookie como $name es el parmetro obligatorio, el resto resulta ser opcional. Sin embargo, en un parmetro llamado $expire se coloca el tiempo o ciclo mximo de la sesin. Si Ud., ajusta una sesin de 24 horas, la Cookie har funcionar el control del acceso por tan solo 24 horas. Pasado el tiempo, la Cookie pierde vigencia y el servidor descarta el

51

mailxmail - Cursos para compartir lo que sabes


proceso de negociacin. Esto a veces se hace como medida de seguridad operativa y para regular el consumo de ancho de banda de la red. Consideraciones Especficas de las Cookies El uso de las Cookies puede presentar limitaciones. El grado de racionalidad se centra exclusivamente en el tamao de los archivos enviados. Los archivos Cookie tienen un determinado peso. La Cookie ideal no debera superar los 4Kb. Sin embargo, una Cookie de ms de 2Kb puede acarrear inconvenientes tambin. Adems de la limitacin en tamao, hay que contar con la cantidad de Cookies posibles en el disco rgido de la computadora cliente que no debera superar los 20 archivos. Ello es debido a que el propio sistema de la computadora cliente no puede memorizar tantos enlaces a la vez. Se trata de una limitacin implementada por razones de seguridad funcional. Si utiliza cifrado de algn valor y lo almacena dentro de la Cookie, deber tener sumo cuidado. La cantidad de caracteres que genera un cifrador puede ser muy grande y superar la cuota de tamao dentro de la Cookie, lo cual inevitablemente, truncar la informacin. Por tanto, evite inflar demasiado sus Cookies. Otro problema es el cdigo o juego de caracteres. El uso de un juego apropiado para un determinado pas podra ser perjudicial para otro pas. Es por ello que se recomienda que utilice un juego de caracteres estandarizado, tal es el caso de la norma ANSI 94. Quiz esta norma sacrifique ciertos tipos de caracteres, pero al menos, no fallar en las mquinas de los clientes. Otro gran inconveniente es el bloque de las Cookies por parte de los navegadores. El bloqueo se suele utilizar como medida preventiva o de seguridad. Este hecho implica varios inconvenientes. Obligar al usuario a deshabilitar las Cookies para que nuestras Cookies se puedan almacenar en el disco de la computadora cliente. Al no poder registrarse la Cookie en la mquina cliente, resulta entonces, imposible gestionar las sesiones. Este problema directamente puede tener muchas lecturas negativas. Muchos usuarios podran ignorarlas por falta de conocimiento o por miedo a los tan temidos SCAM [1], virus informticos entre otros tantos flagelos informticos. De hecho, no resulta muy efectivo explicar y detallar lo que el usuario debiera hacer para que el sistema opere correctamente. En estas aclaraciones dejamos nuestra impresin. Pueden prestarse a malas interpretaciones y confusin generalizada. Como dira Henry Ford, Si Ud., confecciona un manual complejo y charlatn, por ms que su auto sea un avin, es probable que no lo venda jams . En consecuencia, evtese complicarle demasiado la vida a los usuarios. Ejemplo de Control de Sesiones y Membreca

52

mailxmail - Cursos para compartir lo que sabes

La gestin de sesin bsicamente es representada en un DFS. Ver figura derecha. Dado que la carga de una pgina Web es Top-Down, las instrucciones se dan en un solo sentido. Esto caracteriza al sistema como un mtodo esttico. Es por ello que para dinamizarlo se utilizan distintos tipos de lenguajes embebidos. El lenguaje PHP es uno de ellos. Analicemos el siguiente ejemplo de control de sesiones. El usuario completa los datos en el formulario y luego enva una solicitud al servidor para que este lo identifique. A su vez, la pgina carga antes de procesar dicha solicitud un proceso de inicio de sesin, llamado vulgarmente como Log In. Si el usuario no logra ser identificado, se rechaza la solicitud de identificacin en conjunto a la sesin temporal creada al inicio de este proceso. Ahora bien, si el usuario es aceptado el proceso contina preservando el espacio de sesin creada antes de proceder con dicha identificacin. A partir de estos momentos, el usuario se encuentra identificado y con una sesin iniciada exitosa. Esto le permite operar dentro del recurso de forma satisfactoria. Sin embargo, podra suceder un tercer problema. He aqu el por qu de la doble verificacin. El problema podra darse durante el proceso de creacin de sesin. Si la sesin no puede ser creada, por ms que el usuario se haya identificado correctamente, la sesin se encuentra en un estado crtico. Para evitar potenciales problemas, se procede a cerrar la sesin si es posible y quitar la identificacin del usuario. Esto normalmente se lo llama quitar sesin o Log Out. As mismo, si el usuario decide abandonar la sesin, el proceso de quita de sesin utilizar el mismo mecanismo de control. La idea es quitar la identificacin y destruir la sesin creada anteriormente.

53

mailxmail - Cursos para compartir lo que sabes


Importante: En las versiones 5 en delante de PHP y algunas apariciones de las versiones de 4.1 de PHP, se incluyeron cambios radicales en los procesos de gestin de sesiones. Por tanto, el proceso que explico aqu y el que Ud., confeccionar en el prctico se basa en una versin 6 de PHP aunque podra funcionar perfectamente en la versin 5 de PHP. Para permitir que la sesin se preserve todo el tiempo, se hace necesario cargar la funcin session_start() en cada una de las pginas que se requiera operar con variables de sesiones llamadas $_SESSION[varEjemplo]. Estas mismas, ayudan a preservar los valores o datos de la sesin. Estos valores podran ser los datos del usuario u otro tipo de informacin, como por ejemplo, el seguimiento de una sesin, de un carrito de compras, una operacin determinada, etc. Todos ellos debern permanentemente ser cargados, comparados, actualizados, etc., sus movimientos sin olvidar cargar la funcin session_start() previamente. La carga de dicha funcin debe colocarse en la primera lnea de cdigo embebido en una pgina dinmica PHP o esttica HTML combinada, etc. Es decir, ser la primera lnea de proceso que debe ejecutarse antes que todo el cuerpo entero del archivo fuente. De esta forma el sistema funcionar correctamente. Si Ud., coloca la funcin session_start() en cualquier parte que no sea la primera lnea de proceso, la operacin de las sesiones no podr ser controlada correctamente y puede que ni siquiera le funcione la sesin. Por tanto, tngase en cuenta este detalle. Para eliminar la sesin, se requiere de una operacin sencilla. Dado que las pginas son estticas, al pasar a otra pgina el estado se pierde. No obstante, las variables podran an tener valores residuales. Para evitar este inconveniente, se recomienda utilizar como primera lnea la funcin session_destroy() que permitir destruir la sesin creada y luego agregar las variables para proceder a vaciarlas. Por tanto, se destruye la sesin y luego se vacan las variables. Esto garantizar que la sesin sea quitada de forma satisfactoria. Suele recomendarse para garantizar el cierre de sesin, redirigir la aplicacin a otra pgina con las instrucciones adecuadas. Por tanto, mi recomendacin es utilizar sta ltima tcnica.

[1]SCAM Resulta ser un mecanismo de estafa o robo de informacin, acopio de claves, PIN y todo lo concerniente a mecanismo de identificacin. Los piratas informticos toman estos recursos para perpetuar delitos tales como estafas, compras con identidad de otra persona, violacin de cuentas bancarias, distribucin de correos masivos, bloqueos y jaqueo de toda clase, etc. Visite el sitio http://www.vsantivirus.com/scam-aol.htm Aqu encontrar artculos interesantes acerca de robos, timos, etc., informticos.

54

mailxmail - Cursos para compartir lo que sabes

13. Sofisticacin del Sistema de Sesiones


En la prctica pasada construimos un sistema de control de sesiones al que podramos llamar bsico y extremadamente sencillo. Sin embargo, carece de ciertas funcionalidades las cuales incluiremos en esta seccin. No obstante, antes haremos algunas puntuaciones en determinadas fases de este nuevo sistema. Control de Membreca y Gestin para el Usuario En el primer prototipo que desarrollamos, el usuario poda identificarse y acceder a su membreca. Sin embargo, el usuario no poda registrarse como un nuevo usuario y ni tan siquiera poda cambiar o recuperar su contrasea si este la olvidaba. Si analizamos de fondo esta aplicacin, el prototipo, carece de control de gestin para el usuario. En pocas palabras, parte de esta gestin debera hacerlo el administrador de la base de datos o el responsable de dicha aplicacin, lo cual en trminos especficos, no sera demasiado funcional para un usuario remoto. Cabe sealar que este mecanismo primario que hemos desarrollado, podra bien cubrir otro tipo de necesidades. Por ejemplo, si el control y gestin del perfil de la membreca debiera quedar absolutamente en manos del administrador o moderador de membrecas. Algunas empresas que tienen registrados a sus empleados, regulan esta poltica habitualmente. Aqu la necesidad implica que los datos de la membreca son extremadamente sensibles y que debe haber un responsable que medie dicha gestin, es decir, el administrador del sistema y su aplicacin. En nuestro caso particular y nuevo que incluiremos en el siguiente modelo, incluye la posibilidad de que el usuario pueda gestionar algunos controles bsicos y especficos de su perfil. Digo bsicos, porque el control total an lo seguir teniendo el administrador de la membreca. Un administrador de membrecas, podra dar de baja a perfiles que no son deseados, que hayan generado conflictos sistmicos, que no se utilizan o por otras razones o caractersticas. Por tanto, el usuario tan solo podr darse de alta, cambiar su contrasea y acceder a su recurso. Detalles Operativos de la Gestin de la Membreca A continuacin voy a describir cmo funciona el nuevo prototipo que propongo en esta prctica que har ms tarde a continuacin. Le sugiero que analice el siguiente diagrama de flujo.

55

mailxmail - Cursos para compartir lo que sabes

La inclusin del mdulo de decisiones mltiples resulta conceptual. El usuario ante la interfaz, puede encontrarse en algunas de las siguientes necesidades: Ser miembro de la membreca Desea iniciar la sesin normalmente No recuerda la contrasea, proceder a recuperarla y cambiarla si es posible Desea cambiar su contrasea por razones de seguridad No ser miembro de la membreca Desea poder Registrarse Por tanto, el mdulo de mltiples decisiones opta por tres opciones. Las primeras dos opciones son las que incluye el mdulo y las que detalle en las vietas. Sin embargo, existe una tercera opcin y es la de no hacer nada. Resulta quiz la ms evidente pero es necesaria enumerarla aqu tambin por una cuestin prctica y funcional. Queda claro entonces que aplicando el sentido en comn, esta tercera opcin, carecera de efecto. En los casos donde el usuario decide recuperar su contrasea perdida u olvidada, incluso, en caso de registrarse, el usuario necesitar estar seguro que los datos que se le notifique sean correctos y que adems sean seguros. En la prctica y por

56

mailxmail - Cursos para compartir lo que sabes


se le notifique sean correctos y que adems sean seguros. En la prctica y por cuestiones funcionales y pedaggicas, no he incluido un mdulo de seguridad. El mdulo de seguridad implicara que al usuario se le enviase los datos a su casilla de correo. De esta forma, queda en un total y absoluto secreto entre ambos, es decir, sistema y usuario. Es ms, el administrador ni tan siquiera, podr conocer la clave del usuario dado que esta est cifrada con un algoritmo que no permite descifrado. En estos instantes, la aplicacin no garantiza esa seguridad operativa. Debe entender que esta prctica se trata de un desarrollo experimental para que aprenda a desarrollar sistemas como estos. Sin embargo, por otro lado, resulta importante aplicar seguridad operativa y el uso de casilla de correo, resulta ser una excelente opcin. Vase el siguiente diagrama de flujos para ver cmo se implementara este sistema de seguridad por correo electrnico.

57

mailxmail - Cursos para compartir lo que sabes


Herramienta para el Envo de Datos por Correo Electrnico El servidor que soporta el motor de transacciones de transferencia de pginas Web debe incluir un mdulo que administre un servidor de correo electrnico. En el modelo del servidor, es decir en el Hosting, Ud., cuenta con un motor de correo electrnico y bastar configurarlo segn las recomendaciones que su Hosting le indique. Sin embargo, en su servidor local, no cuenta con esta herramienta y se hace necesario instalar un mdulo adicional de administracin de correo. Se trata de un servidor pequeo para propsitos de baja escala. En un caso tan particular como el que mencionamos aqu, podra ser ms que suficiente utilizar una solucin de tal porte. No obstante, el servidor de escala requiere de un software ms slido y es muy probable que piense si lo que su Hosting le ofrece no resulta ser mejor opcin operativa. En conclusiones, deber analizar estos aspectos detenidamente y, obviamente, segn lo que Ud., pretenda hacer. En caso que desee implementar el mdulo adicional para el servidor Apache, podr utilizar un software de administracin de servidores de correos que se complementa perfectamente con el lenguaje PHP conocido con el nombre de PHP Mailer. Resulta sencillo de instalar. Finalmente, deber configurarlo incluyendo usuarios o cuentas de correo para que pueda operarlo de forma apropiada. Lo interesante de este modelo es que Ud., puede contar con un sistema de correo que puede resultarle til para otros desarrollos paralelos. Integracin del Correo Electrnico al Envo del Correo con los Datos Contando con el software adecuado para administrar el servidor de correo electrnico, estar listo para enviar los datos a una cuenta de correo deseada. No obstante, la inclusin del correo implica que nuestra aplicacin cambie algunos aspectos funcionales. Por empezar, se debe crear una tabla nueva que implique una serie de requisitos fundamentales, los cuales incluye la direccin de la casilla de correo y otros datos personales del usuario. Esta tabla debiera anexarse a la tabla que administra los perfiles de la membreca. Este nexo permite tener los datos de los usuarios separados de lo que concierne a las cuentas para los usuarios. El usuario podra actualizar sus datos, como por ejemplo, su casilla de correo u otros datos adicionales presentes. A continuacin analizaremos el siguiente sistema que muestro debajo de este prrafo.

58

mailxmail - Cursos para compartir lo que sabes

La tabla auth contiene el nombre de usuario y la contrasea, por otro lado, tenemos la tabla users y sus campos. La tabla auth est relacionada con la tabla users. El campo name de la tabla auth se relaciona con el campo idName de la tabla users en forma de 1 a , es decir, de uno a varios. Esta poltica evita que un determinado usuario de la membreca no pueda duplicarse. La tabla users contiene otros campos ms de informacin, como por ejemplo, el nombre apellido y el correo electrnico. El sistema se vale de esta valiosa informacin para poder comunicarse con el usuario en caso de ser requerirlo. Cuando un nuevo usuario desea registrarse, inicia un proceso de alta. Deber completar los datos sin omisiones para que el registro se complete de forma correcta. Por empezar, el nombre de usuario no podr duplicarse, no podr dejar en blanco la contrasea y no podr dejar sin especificar la casilla de correos. Estos datos resultan ser obligatorios. Ahora bien, suponiendo que los datos son correctos y se han registrado correctamente, los mismos, sern tiles durante el proceso de recuperacin de la contrasea. Analicemos cmo realmente funcionara este sistema automtico de envo de contrasea mediante el correo electrnico. El usuario inicia un proceso de recuperacin de su contrasea puesto que la ha olvidado. Bien, el sistema le pide que ingrese el nombre de usuario. Si el nombre es

59

mailxmail - Cursos para compartir lo que sabes


vlido, un motor que genera claves de forma aleatorias proporciona una clave al azar y la almacena en la cuenta del usuario que ha sido objeto de esta operacin. Una vez que la contrasea nueva generada por el motor es almacenada, se procede al envo de los datos al usuario por medio del correo electrnico. El envo consiste en dos datos fundamentales. El nombre de usuario y la contrasea nueva. El siguiente acto, bastar para el usuario, el ingreso a su cuenta de forma satisfactoria. Ms tarde, el usuario podr cambiar la contrasea nuevamente si as lo desea. El envo de los datos por correo electrnico hace que el mecanismo se conforme dentro de un escenario ms privado y seguro. A continuacin, muestro un extracto de cdigo que podr ser utilizado para el reenvo del correo con informacin para el usuario.

// Datos que proviene de la consulta de la base de datos $user = "user"; $pass = "123"; // Preparar la carta - Compose $to = "usuario@miserver.com"; $subject = "Asunto - Clave de Envo Nueva"; $headers = "From: Librera Virtual - Nueva Contrasea"; $message = "Nueva Contrasea\r\n"; $message .= "Le recordamos que hemos actualizado su contrasea nueva. A continuacin le dejamos los datos.\r\n"; $message .= "Nombre de usuario: $user\r\n"; $message .= "Contrasea: $pass\r\n"; $message .= "Cualquier inconveniente, por favor, comunquese con el administrador del sistema."; // Enviar el correo electrnico... mail($to, $subject, $message, $headers);
Mayor Seguridad Operativa ~ Activaciones de Cuentas En algunos sitios para garantizar mayor seguridad se utiliza un sistema de reenvo y de activacin. La activacin sencillamente consiste en verificar que el correo que le ha sido enviado al usuario lo responda. Mientras que el usuario no responda al correo, el cambio se mantendr substancialmente hasta que el usuario active el cambio. La activacin permite evitar que los envos de las nuevas contraseas no queden de forma inconsistente, por ejemplo, que el correo enviado falle su recepcin o, lo que es peor an, que el servidor est cado en ese. En pocas palabras, cualquier error podra resultar en fatalidad. El usuario podra perder el acceso a su membreca. Por tanto, la activacin resulta ser un proceso recomendado para asegurarse que la recuperacin de la contrasea se realiza de forma satisfactoria.

60

mailxmail - Cursos para compartir lo que sabes


satisfactoria. El mecanismo de activacin ms sencillo consiste en controlar de alguna forma la afirmacin por parte del usuario. Si bien, puede realizarse de muchas formas, quiz la ms sencilla sera conectar un enlace adjunto al correo enviado durante la consulta de modo que el usuario haga clic sobre este enlace y se actualice en la base de datos. De esta forma, el sistema, entiende que el usuario se ha notificado sin inconvenientes y que ha dirigido su respuesta de modo satisfactorio. De aqu en ms, se supone, el sistema para el usuario resulta operacional. Otro mecanismo que es similar a la activacin es la de generar un nmero aleatorio para ser utilizado como una llave secundaria de activacin. Este nmero es mostrado en pantalla de forma aleatorio y resulta difcil de copiar por los medios tradicionales copy & paste. Tampoco pueden ser escaneados o ledos por medio de algn tipo de software OCR. Esto evita que se creen cuentas de formas cclicas una tras otra. Algn mal intencionado, podra crear con un software, un motor generador de cuentas y hacer un desastre en el sistema. Una de las victimas en el pasado fue Microsoft durante el servicio de correo electrnico de su proveedor tradicional Hotmail que facilitaba este tipo de procesos. La mayor cada del sistema por este tipo de ataques conocidos por su variante de ataque de denegacin de servicios DoS ( Denegation on Service), dejo a los usuarios de Hotmail por unas cuantas horas sin servicio para acceder y utilizar el recurso de correo electrnico. Es por ello que se ha diseado un modelo que evita estos potenciales peligros. Por tanto, si Ud., disea un sitio donde se requiere de un sistema similar, es recomendable que tome estos recaudos y que disee un modelo seguro de creacin de cuentas o membrecas. Vase el siguiente diagrama para concluir con la idea de este sistema.

61

mailxmail - Cursos para compartir lo que sabes

El modelo agrega como ltimo mdulo un proceso de control basado en evento y tiempo. Una vez que es notificado el usuario a travs del correo electrnico, el sistema le pedir su activacin y pondr un conteo de 24hs para su activado. Si el usuario no procede con la activacin sugerida, el servicio inmediatamente, cancela el cambio de la contrasea y restaura la contrasea actual volviendo nuevamente al comienzo antes de que se produjera la transaccin ejecutada.

62

mailxmail - Cursos para compartir lo que sabes

14. Qu es el Mercadeo Electrnico?


A lo largo del nacimiento de las tecnologas de las comunicaciones, tal es el caso de la Internet, han surgido una serie de nuevos sistemas de mercado online que facilitan la distribucin y venta de productos a lo largo de grandes localidades, regiones y el mundo en general. Se trata entonces de sistemas regionales o internacionales. Entre tantos trminos tcnicos como E-commerce, E-banking, E-business, etc., existen una serie de diversos sistemas que permiten establecer un mecanismo de mercado de compras, finanzas, encargues, seguimientos, etc. Uno de los ms conocidos es el carro virtual, aunque existen otros tambin interesantes tales como las finanzas y las transacciones bancarias online por citar algunas de ellas. En esta oportunidad, ensamblaremos un carro virtual. Resulta importante sealar que el prototipo que ensamblaremos carece de ciertas etapas por una cuestin, no solamente pedaggica, sino ms bien por una cuestin de estrategia y de sistema. Cada empresa sensiblemente puede hacer notar diferencias en la construccin y gestin del carro virtual. Por tanto, nuestro modelo que construiremos, lo consideraremos como un modelo universal. No obstante, el proyecto, deja una puerta abierta a posibles ampliaciones y, lo que en cierto modo, permite pensar otras alternativas de modelacin a media. Cmo Funciona un Shopcart Carrito de Compras? La gestin de un carro de compras se trata de un modelo de ventas online que alberga una serie etapas de gestin que simulan una tienda de ventas con sus partes funcionales de forma virtualizadas. El prototipo incluye base de datos, interfaces y un proceso de interaccin entre el operador (cliente) y el sistema. Las bases de datos albergan los productos que se ofrecen, los registros de clientes o membrecas, los registros de los administradores de la gestin de venta y stock, las ordenes peticionadas por los clientes remotos y otras cosas ms. Las interfaces tienen como objeto mostrar e interactuar con el operador a los efectos de generar accin. La interfaz debe facilitar el uso al usuario y tiene que ser lo menos compleja posible. La operacin del carrito de compras requiere un tratamiento especial, no solamente de un modelo de manipulacin sencillo, sino que a su vez, requiere de un modelo seguro operativa y sistemticamente. La seguridad debe contemplar muchas reas. La seguridad funcional que permite que el sistema opere de forma satisfactoria y la de gestin, que evita los fraudes, estafas, etc. La compra online sugiere un modelo de seguridad puesto que la mayora de las transacciones se hacen mediante estructuras de pagos virtuales, ya sea o bien, por tarjetas de crdito o dbito, cuentas bancarias, sistemas financieros, etc. Eso requiere de seguridad extrema y depende del modelo de operacin comercial. La seguridad puede sugerir sistemas robustos basados en modelos de cifrados, pginas seguras mediante sockets, reconocimiento en tiempo real de credenciales o saldos, etc. A continuacin se muestra un esquema del circuito operativo del carro virtual.

63

mailxmail - Cursos para compartir lo que sabes

El circuito que observamos en el esquema resulta ser bsico y universal. El cliente, solicita un producto y busca a travs de los filtros que ofrece la interfaz. La interfaz, est conectada a la tabla Catlogo de la base de datos de la Librera. Segn el producto que busca el cliente, el mismo, se presenta en su pantalla con detalles especficos o suntuosos. Dentro de este despliegue de detalles, el cliente, puede optar por elegir o no el producto para su compara. En el caso de que elija el producto, procede a accionar un mecanismo de carga. La carga pasa el producto seleccionado a una etapa de reserva temporal en tiempo real. Esta instancia la llamamos carrito virtual. Si observa el diagrama, la seccinCarga en el Carrito los Productos, el producto estar reservado. De mientras, el cliente podra estar buscando otro producto ms si lo desea, incluso, agregar a su lista de pedidos. Dentro de esta posibilidad, cabe la opcin de descartar el producto que ha seleccionado y optar por otro de su conveniencia o descarta todas las operaciones. Ver que existe una opcin en el diagrama representada como Cancelar. La opcin que es representada como Procede, simplemente describe el accionar normal de las operaciones de eleccin que la interfaz brinda. Notar que, si sigue observando, hay una etapa llamada Prepara la Orden para la Venta. En esta instancia, el cliente an puede optar por cancelar todas las operaciones o aceptarlas. Si acepta las opciones, se supone entonces, que encarga y compra el producto. Si encarga el producto, sucedern dos cosas a la vez. Por un lado, se almacenar en la base de datos en la tabla Orden el pedido que el cliente desea, donde adems, se especifica los datos personales del cliente y los que l desea negociar para su entrega. Por otro lado, se verifica el tipo de pago. El cliente podra optar por pagar va electrnica mediante tarjeta de crdito o dbito, con cuenta electrnica, etc., o podra, bien hacer el pago mediante reembolso Cash efectivo ms servicios adicionales si as la empresa le exige. Este ltimo mtodo suele ser menos complejo de controlar que el sistema de dinero virtual. La verificacin de fondo del cliente resulta en todo un tema de seguridad y de desafo. Existen muchos sistemas de verificacin de cuentas y fondos bancarios. El sistema de pago online de tarjeta de crdito o de dbito es en tiempo real dado que la tarjeta est conectada virtualmente al sistema nervioso de base de datos de la financiera. As mismo, las cuentas electrnicas tales como Pay-Pal o similares, cuentan con un sistema similar basado en el saldo de dicha cuenta. A diferencia de

64

mailxmail - Cursos para compartir lo que sabes


las tarjetas de crdito o de dbito que verifican si el cliente tiene autorizacin para la compra, las cuentas Pay-Pal no financian y estriba su control a travs del saldo asentado en el banco virtual de caja. Mientras que una autorizacin de tarjeta implica un prstamo online con sus costes operativos, las cuentas bancarias virtuales tiene como mecanismo de autorizacin el monto de caja de dicha cuenta. En sntesis, sea cual fuere el sistema operativo de este mecanismo, las autorizaciones se hacen en tiempo real y virtual. El administrador de la base de datos de la librera, es notificado en caso de que el cliente no tenga autorizacin para la compra o tenga embargos que traben la operacin comercial. El administrador podr informar al cliente que no tiene autorizacin para su compra. No obstante, este mecanismo de informes y seguimientos son totalmente virtuales. Por tanto, la responsabilidad de que el sistema opere seguro tanto para los clientes, como para el acreedor y los vendedores, depender en grado de la fidelidad del sistema del carrito pero tambin del sistema de acreditacin y su interaccin. Por tanto, es un tema delicado y debe ser estudiado muy detalladamente. A continuacin muestro una esquematizacin basada en el lenguaje UML (Unified Modeling Language) que resulta en un estndar internacional. UML permite desarrollar todo tipo de proyectos con amplias cualidades de diseo e interaccin. En ingeniera del software resulta ser muy til y verstil, de hecho, permite la preconstruccin de clases que permiten facilitar los pasos para el desarrollo de las futuras aplicaciones e, incluso, la documentacin del software de forma eficiente y eficaz.

Diagramacin de Caso de Uso con UML Estndar del Sistema de Carro de Compras

65

mailxmail - Cursos para compartir lo que sabes

15. Soluciones para la Construccin de Carros de Compra


La moderna tecnologa proporciona varias alternativas para desarrollar sistemas de carros de compras. Algunas soluciones propietarias se preconstruyen sobre un modelo que luego sirve como una plantilla que puede aplicarse a determinados rubros comerciales y con la posibilidad de escalar. Algunos desarrollos poseen objetos tales como grillas e interfaces grficas ms sofisticados que pueden ser utilizados para la construccin de interfaces ms ricas y con cierto grado de sofisticacin funcional. Tambin, el software estndar permite la construccin de soluciones, quiz no muy vistosas, pero que universalmente resultan ser econmicas y altamente funcionales. Cada una de estas alternativas tiene sus pros y sus contras. En el caso de las interfaces ricas, su valor agregado de detalle grfico, interaccin, facilidad de construccin y desarrollo resultan en soluciones que requieren el uso de licenciamientos y de un lenguaje o software especial para su desarrollo y, quiz tambin, la distribucin hacia los clientes de sus libreras para su correcto funcionamiento. Todo ello no solamente resulta ser costoso, sino que adems, requiere de un modelo de distribucin de libreras de soporte que pueden no alinearse correctamente dentro de los estndares del software y aumentar as los riesgos crticos de soporte de software de sistemas. Tales capas de desarrollos y de distribucin merecen un estudio tanto en materia de costes como en materia de sistemas. Microsoft Corporation TM, ha desarrollado ASP con tecnologa de lenguajes embebidos en el cdigo HTML. Ms tarde y con la llegada de la arquitectura NET Framework, Microsoft Corporation TM ha desarrollado ASP.NET que es un acrnimo de ASP pero que opera con un sistema de lado de cdigo llamado Code-Behind. El cdigo no se embebe en el cdigo HTML, sino ms bien, se gestiona por separado pero se sincronizan entre ambos para que operen como si fueran uno. El uso de los mismos requiere de libreras compiladas las cuales deben ser distribuidas para su correcto funcionamiento. Este tipo de desarrollos pueden ser construidos con Visual Basic NET o con Visual C#, entre otros lenguaje que se basan en la arquitectura Framework NET. En el caso de desarrollos altamente estandarizados, quiz no encontremos una interfaz enriquecida, pero por otro lado tendremos un alineamiento ms cercano al estndar del software que nos brindar un servicio funcional sin la necesidad de pensar en software de libreras y soporte de otras caractersticas e ndole. Adems, el coste de desarrollo y de su distribucin, puede resultar significativamente ms econmico, lo que en cierto modo puede beneficiar soluciones ms econmicas y funcionales. El beneficio del cdigo libre facilita estas particulares formas de distribucin y desarrollo de sistemas. Bajo este lineamiento, he construido un carro de compras que en breve, tendr la oportunidad de ensamblar. No obstante, el software estndar permite el desarrollo y la inclusin de partes enriquecidas. La alta integracin permite componer interfaces ms enriquecidas y un nivel de interaccin ms sofisticada y sutil muy similar a las soluciones de infraestructura enriquecidas, tal como mencione al comienzo de esta discusin. Esta tcnica de inclusin no es una novedad del mundo del software estndar. Algunas firmas han incursionado en ests reas de integracin. Por ejemplo, la firma Adobe ha integrado tres de sus productos de desarrollos de sistemas para componer

66

mailxmail - Cursos para compartir lo que sabes


soluciones unificadas. La suma de Flash, Dreamweaver y Coldfusion han creado Flex, as mismo, la antigua y tradicional no hasta hace poco firma Sun Microsystem actualmente adquirida por Oracle, ha integrado las soluciones Java Face, Java Page con otras soluciones de interfaces creando Java Flex. Una solucin de integracin e inclusin de sistemas en uno. Mezclando Varios Tipos de Soluciones Sutilmente, a nuestro cdigo y con un poco de ingenio, se le puede integrar etapas preconstruidas con otras soluciones y mezclarlas en e nuestro proyecto. Por ejemplo, podemos utilizar una grilla construida en Flash para mostrar en pantalla la captura de datos desde una base de datos. La solucin Flash, por si misma, no es capaz de conectarse a tipos de gestores de bases de datos, salvo y con marcadas limitaciones, sobre la solucin propietaria de Adobe que es Coldfusion. Otra solucin viable y posible para mejorar los aspectos grficos y de interaccin, resulta ser el uso de Applets para clientes en Java. La integracin de Java con soluciones sobre PHP, resultan ser interesantes puesto que la alta integracin de estas plataformas permiten extender los conceptos, no solamente en valores grficos sino en valores de interaccin. Java utiliza Applet para clientes y Servlets para servidores mediante una tecnologa de vinculacin utilizando componentes. Los componentes JavaBeans permiten desarrollos y soluciones de integracin cliente-servidor a travs de JavaFace u otras soluciones para conectar bases de datos con servicios muy similares al que he construido aqu, es decir, el carrito de compras. Java puede utilizar MySQL de forma satisfactoria. Sin embargo, el uso ms corriente es GlassFish como gestor de base de datos. No obstante, esto demuestra el grado de integracin que posee Java. El lenguaje Java permite altas prestaciones y resulta ser el ms utilizado por su robustez. Tambin puede resultar importante desarrollar interfaces ricas en valores grficos y utilizar la integracin de estas ricas cscaras grficas con el soporte de PHP sobre las plataformas de base de datos como puentes utilizando XML como Bridges puentes o el propio PHP a travs del mecanismo Postback. Este tipo de Soluciones, plantea un desarrollo meritorio y es un tema que escapa de nuestro curso, aunque entiendo que resulta muy importante sealar que es til y que suele ser utilizado muy corrientemente dentro de este enorme ocano del desarrollo del software. Software Incluido en Nuestro Carro de Compras Dado que hemos aprendido hasta ahora el uso de herramientas estandarizadas, he incluido el uso de Javascript, PHP, HTML y MySQL para las bases de datos. El uso de todas estas soluciones tiene su lado ventajoso y su lado no tan ventajoso. Yendo por partes, puedo decirle que una de las grandes ventajas erradica en que las herramientas son estandarizadas, carecen de licenciamientos, no requiere de distribucin de libreras propietarias, utiliza el CGI clsico, las API y otras arquitecturas estndares que nos permite el uso intensivo bajo cualquier escenario estandarizado. Dentro de todas ests buenas virtudes hay que incluir la agilidad de proceso y la disponibilidad amplia del cdigo libre y sus beneficios. La parte ms negativa de todo esta propuesta se sujeta quiz a la maraa que implica el cdigo embebido cuya complejidad puede ir en aumento a medida que el diseo del sistema requiere de mayores refinamientos y mayores grados de sofisticaciones. No obstante, este aspecto negativo puede compensarse de varias formas, aunque en gran medida, habr que trabajar quiz ms. Lo importante de esto es que basndonos en un marco altamente estandarizado, seguramente, tendremos la batalla ganada. Por tanto, lo insto a que desarrolle su software bajo un marco de

67

mailxmail - Cursos para compartir lo que sabes


normalizaciones. Los beneficios siempre estarn a su alcance muy prontamente.

68

mailxmail - Cursos para compartir lo que sabes

16. Organizacin del Embebido. Reutilizacin de Cdigo


Para facilitar el desarrollo y optimizar el cdigo, el proyecto en si, utiliza un archivo de dependencia que integra todas las funciones para todas las pginas de la aplicacin. De otro modo, se tendra que haber escrito el cdigo de Javascript, es decir, las secuencias de comandos en cada una de las pginas creadas, lo que en cierto modo implica mayor trabajo, aumenta considerablemente el tamao los archivos HTML y PHP, incluso, aumenta tambin la complejidad. El archivo externo contiene todas las funciones que la aplicacin necesita. Por lo tanto, en cada uno de los archivos de las pginas HTML o PHP tan solo se cuenta con una lnea de script para JavaScript. Dentro de todas estas ventajas, suponga que Ud., necesitara una determinada funcin para ms de una de las pginas de su aplicacin. Sin esta tcnica, debiera repetir la misma funcin para cada pgina interviniente. Lo peor que pudiere ocurrir es la necesidad de tener que corregir algn algoritmo de su cdigo. Si esto sucediera, tendra que hacer la correccin en cada uno de los archivos donde haya incluido esta funcin. Esta modalidad no resultara del todo agradable y quiz sera propensa a crear todo tipo de errores. Por tanto, no resulta profesional. En cambio, al contar con un archivo centralizado, la modificacin se hace tan solo una vez. Esta es la ventaja de la reutilizacin del cdigo del software. As mismo, las hojas de estilos que dan formato a toda la aplicacin se encuentran centralizadas a igual que las secuencias de comandos de Javascript. Aqu vemos otra aplicacin de reutilizacin de cdigo. Entre otras estandarizaciones que justifiquen la reutilizacin de cdigo, debo mencionar la clase de datos que he construido para hacer funcional la pgina del catlogo. Dentro de esta clase, se encuentran una serie de funciones especficas y que pueden ser reutilizadas para cualquier pgina que un proyecto solicite como til. De hecho, esta clase podra ser extendida y, mediante una herencia de clases o de interfaces, podra construir otro tipo de clases abocada a filtros especficos, ABM o todo el soporte para manipulacin y gestin de tipos de datos de su proyecto. Por tanto, la reutilizacin del cdigo resulta una vez ms en un paso gigante a la estandarizacin del desarrollo del software. A continuacin, dejo el esquema en UML de la clase de datos que he utilizado en este proyecto para que la analice y estudie. El diagrama de clase est hecho con ArgoUML.

Diagramacin de Clases con UML Desarrollo de un Clase para Base de Datos 69

mailxmail - Cursos para compartir lo que sabes


Algunas Consideraciones de Ampliacin de este Proyecto Este proyecto no est completo como seale al inicio de esta discusin. En materia de ampliacin, el proyecto podra requerir el uso de una base de datos para almacenar las rdenes solicitadas por los clientes remotos virtuales que han realizado las operaciones comerciales de compra. El proyecto contempla esta inclusin posible para administrar la gestin de rdenes. Un administrador accedera a la tabla de rdenes y podra o, bien, despachar dichas compras personalmente o automatizarlo. Tambin, podra controlar el stock de la librera en caso de reposicin de nuevos libros, actualizaciones diversas de dichos productos, discontinuidades, etc. El seguimiento de facturas, de embarques de envos, etc., pueden ser objeto de inclusin a este proyecto. El administrador puede despachar las rdenes, controlar los saldos bancarios de los clientes, etc. La escala del proyecto es grande y solamente resta encontrar las necesidades pertinentes e imaginar los mdulos o elementos para incorporarlos a dicha aplicacin. Es por ello que lo invito a que experimente con posibles ampliaciones de este proyecto, le incorpore etapas segn sus necesidades y, por qu no, mejore esta aplicacin en su totalidad. Deseo librarlo a su imaginacin. Buena suerte.

70

mailxmail - Cursos para compartir lo que sabes

17. Aplicaciones para la Publicacin de Sitios Web


Si bien cada proveedor de dominios o hosting Web pueden proveer herramientas propietarias, tales como aplicaciones basados en el sistema FTP (File Transfer Protocol) o (Protocolo de Transferencia de Archivos) con algunas caractersticas especficas para la publicacin de los desarrollos Web en el sitio, existen otras soluciones que pueden cumplir la misma funcin, sin la necesidad de depender de estas herramientas especficas. En el caso de Dreamweaver, contamos con un administrador para la publicacin de sitios Web. Sin embargo, existen gestores para servicios FTP que pueden ser tiles tales como CuteFTP, entre otros, como mtodos alternativos. No obstante, en el mercado existen otras soluciones similares a Dreamweaver o que, por otra parte, siguen el lineamiento de los sistemas basados en el servicio FTP. En nuestro caso particular, conoceremos los detalles que ataen a Dreamweaver, dado que es el entorno de desarrollo de pginas Web que hemos venido utilizando hasta el momento. Tambin har un detalle del servicio FTP bsico y cmo este funciona. Cabe sealar que entre versiones pasadas de Dreamweaver hasta la actual, que es la versin CS4 y casi a la postre de lanzarse la versin CS5, Dreamweaver no ha sufrido muchos cambios pero si el agregado de herramientas y un asistente dinmico en su aplicacin. Otra cosa que deseo puntualizar tambin es que, en muchos sitios de hosting donde publicamos el material Web, suelen operar con determinadas herramientas y, a veces, nos recomiendan el uso de Dreamweaver o el uso de sus propias aplicaciones para la publicacin del material Web. Cmo Funciona el Servicio FTP Por empezar, el servicio FTP es muy utilizado para la transferencia de todo tipo de archivos y recursos en esta y otras aplicaciones. En nuestro caso particular, el servicio FTP puede tener un uso tan bsico y quiz avanzado segn sea la necesidad. Eso depender en grado del tipo de aplicacin que estemos utilizando. En ambos casos, el sistema utiliza el mismo mecanismo de transferencia.

71

mailxmail - Cursos para compartir lo que sabes

Esquema del Sistema para el Servicio FTP (Transferencia de Archivos) Cortesa Wikilearning
Sin embargo, la transferencia de los recursos o archivos, no soluciona la reubicacin correcta de cada uno de los recursos en el sitio Web como corresponde. En su lugar, debemos realizarlo de forma manual o a travs de un utilitario complementario que permita crear la distribucin adecuada de nuestros recursos. El servicio de transferencia de archivos FTP solo permite transferir archivos, lo cual y en sntesis, no incluye la transferencia de carpetas y su ruta original ms su estructura estratgica distribuida en nuestro proyecto. En conclusiones, antes de distribuir nuestros recursos y publicarlos al sitio Web, deberemos crear primero la estructura de distribucin estratgica del sitio para poder reubicar todos nuestros recursos del proyecto en el sitio Web. Resulta importante sealar que existen aplicaciones especiales que utilizan los servicios FTP para la transferencia de de datos y, que a su vez, se encargan de crear las carpetas en el sitio de forma automtica sin la intervencin manual del usuario para determinadas reas especficas. Esto supone cierta ventaja operativa de FTP. El uso de las herramientas de FTP es utilizado bajo consola. Por ejemplo, MS-DOS de la firma Microsoft, UNIX o la familia de sistemas operativos como LINUX o SOLARIS de la ex firma Sun Microsystem, actualmente Oracle CorporationTM. El servicio FTP utiliza diversos tipos de comandos y parmetros para su uso. Gran parte de estos comandos son muy utilizados en sistemas operativos como UNIX. Por tanto, la procedencia de dichos comandos en el servicio FTP deriva de UNIX. El uso de dichos comandos ms sus parmetros, requiere de ciertas habilidades por parte del operador y un cierto conocimiento de sistemas operativos bajo consola. A continuacin, muestro una captura bajo consola de los comandos y parmetros del servicio FTP para el sistema operativo Microsoft MS-DOS.

72

mailxmail - Cursos para compartir lo que sabes


C:\>ftp /? Transfiere archivos a y desde un equipo que ejecute un servicio de servidor de FTP o Daemon (a veces conocido como demonio). FTP se puede usar interactivamente. FTP [-v] [-d] [-i] [-n] [-g] [-s:archivo] [-a] [-A] [-x:bfer_envo] [-r:bfer_recep] [-b:bfers_asnc] [-w:tam_ventana] [host] -v Suprime la presentacin de las respuestas del servidor remoto. -n Suprime el inicio de sesin automtico cuando se establece la conexin inicial. -i Desactiva la intervencin interactiva del usuario cuando se transfieren varios archivos. -d -g Activa la depuracin. Desactiva el uso de comodines en nombres de archivo (ver GLOB). -s:archivo Especifica un archivo de texto con comandos de FTP; los comandos se ejecutarn automticamente cuando FTP se inicie. -a Usa cualquier interfaz local para vincular una conexin de datos. -A Inicio de sesin annimo.

-x:bfer_envio Invalida el tamao de SO_SNDBUF predeterminado (8192). -r:bfer_recep Invalida el tamao de SO_RCVBUF predeterminado (8192). -b:cuenta async Invalida la cuenta asncrona de 3 -w:tam_ventana Invalida el tamao del bfer de transferencia

predeterminado (65535). host Especifica el nombre del host o la direccin IP del host remoto al que se conecta. Notas: 73

mailxmail - Cursos para compartir lo que sabes


- Los comandos mget and mput aceptan s/n/c para s/no/cancelar. - Use Control-C para cancelar comandos.
El uso del servicio FTP requiere del uso de inicio de sesin dado que debe tener acceso y privilegios para proceder con la transferencia de archivos hacia el servidor. Por tanto, el servicio FTP puede ser FTP Cliente o FTP Servidor. El comportamiento del FTP Cliente resulta ser sencillo. Solo requiere especificar el nombre de usuario, la contrasea, el nombre del servidor y el archivo o recurso que es requerido para dicha transferencia. La transferencia, podra tratarse de carga (Upload) o descarga (Download) de los archivos. El nombre del servidor puede tratarse del nombre DNS (dominio o nombre cannico) o de una direccin IP. Tambin cabe sealar que se requiere asignar los puertos de usos 20 y 21 respectivamente. El puerto 21 es por defecto dado que se trata del puerto de negociacin para el control y la transferencia, mientras que el puerto 20, se encarga de la trasferencia del recurso, o sea, la carga y descarga de todos los archivos. Si Ud., posee un firewall, deber habilitar ambos puertos para su uso. El servicio FTP Servidor utiliza las mismas herramientas que el Cliente pero est dotado para atender muchas demandas, tanto de bajadas de datos (Downloads) como de subidas de datos (Uploads). El servicio FTP Cliente puede operar de dos modos distintos. Un modo es conocido como Activo y el otro como Pasivo. La diferencia entre ambos estriba en las formas en cmo negocian los paquetes de datos de la transferencia y el intercambio de puerto entre el Cliente y el Servidor. El modo Activo permite dejar paso de control al servidor a que utilice cualquier recurso virtual para la transferencia y el cliente debe admitir el enlace que se le asigne de turno. Esto tiene dos lecturas, por un lado la ventaja de garantizar la conexin y la negociacin entre el cliente y el servidor y, por el otro lado, una mala que es la inseguridad y ms en un ambiente como la Internet. Es por ello que para evitar esto se ha desarrollado el modo Pasivo que evita estas situaciones de inseguridad debido a que es el Cliente quien pide el recurso al Servidor y este le proporciona dicho espacio. La desventaja quiz que pudiera surgir de esta propuesta es, en este caso, el consumo de ancho de banda por sucesivas peticiones. Por tanto, es un tema que ha de analizarse con detalles.

74

mailxmail - Cursos para compartir lo que sabes

18. Alternativas de Publicacin de Pginas Web con Dreamweaver


Si bien las versiones ms antiguas de Dreamweaver carecan de ciertas herramientas para la publicacin de pginas Web o resultaban no del todo efectivas, en la versin CS4 podemos encontrarnos con una serie de herramientas bastante interesantes. Con Dreamweaver podemos utilizar dos servicios para la publicacin que es el servicio clsico FTP, el que describ recientemente y, otro mtodo propietario de Dreamweaver. A continuacin describo dichos mtodos. Publicacin Mediante FTP o RDS

Figura 1 Ventana para Configurar el Servidor Remoto


Este mecanismo de publicacin utiliza los servicios de FTP o de RDS. El sistema RDS (Remote Desktop Server), se trata de un servicio que permite ejecutar aplicaciones directamente en el servidor remoto. La ventaja de este sistema es que requiere de poca cantidad de herramientas en el cliente debido a que en el servidor contamos con las aplicaciones ms importantes y de soporte. Adems, el servidor podra desconectarse y las aplicaciones podran an seguir funcionando. Tambin es posible lograr el efecto contrario, salvo claro est, el objetivo de control de los mismos. Como puede apreciar en la imagen de la figura 1, se trata de un tipo de modalidad para configurar su publicador Web. Resulta ser una suerte de conectoide que el usuario puede configurar de diversas formas y almacenarlas en su computadora local con distintos tipos de nombres. La personalizacin de dichas configuraciones le permite al cliente poder obtener un proceso de control y configuracin ms granular y refinado. Esto es ideal para equipos clientes que utilizan diversos tipos de proveedores y que cada uno de ellos tiene diversos factores de ajustes y controles especficos. Por tanto, segn las configuraciones que imponen su servidor o hosting, cada una de sus conexiones, podrn tener distintos nombres para su identificacin.

75

mailxmail - Cursos para compartir lo que sabes


Dichos nombres son colocados en donde dice Nombre; etiqueta del primer campo de la ventana Configurar servidor. Donde dice Tipo de acceso, Ud., puede especificar si va a utilizar el servicio de FTP o el servicio de RDS. En donde dice Servidor FTP, se debe escribir el nombre y la ruta de origen del servidor donde se encuentra disponible el servicio FTP. La ruta podra ser por ejemplo ftp.dominio.com, donde se publicarn los archivos. En donde dice Directorio del Servidor, se coloca el nombre de la carpeta en el servidor del Host donde se publicarn los archivos para el sitio Web. Estas carpetas pueden variar segn el tipo de servidor de Host. Por ejemplo, la carpeta podra ser/http_pubs/ o /httpdocs/, etc. Normalmente, el servidor o proveedor del Host nos sugerirn cules son las carpetas que deberemos utilizar en el sitio Web. En los siguientes campos Usuario y Contrasea, son los elementos para la identificacin y el inicio de sesin. Tambin, Ud., puede guardar el uso del usuario y la contrasea. Ms abajo, podemos ver varias opciones que son para tipos de conexiones ms especficas. Ver que la primera opcin, permite establecer una conexin que aproveche las utilidades de la modalidad Pasiva. Tambin tiene una opcin para utilizar el moderno protocolo IPv6 que tiene muchas mejoras respecto a su antecesor IPv4. Tambin podemos ver optimizaciones para los Firewall el uso de FTP seguros. El sistema FTP seguro o SFTP (Secure File Transfer Protocol) utiliza pginas de seguridad y tiene la ventaja de garantizar las transferencias de datos de forma ms segura que el FTP tradicional puesto que evita que los datos estn tan expuestos en sitios tales como la Internet. Aprovecha la tecnologa del protocolo de seguridad SHH (Secure Shell) entre otros. El botn Compatibilidad de Servidores es utilizado para mejorar las comunicaciones entre el cliente y el servidor remoto. Solo es utilizado en casos especiales y salvo indicacin del propio hosting o proveedor del servicio de servidor remoto. Por ltimo, donde dice Prefijo URL es utilizado para colocar o bien el sitio Web directo desde la Internet o el servidor local, que generalmente puede ser localhost. Publicacin Mediante el Asistente de Dreamweaver

76

mailxmail - Cursos para compartir lo que sabes


Figura 2 Primer Ventana del Asistente de Dreamweaver Datos Locales
En la ventana de la figura 2 podemos ver que en el rea de la ventana Nombre del Sitio, puede tratarse de un nombre vlido y que permitir identificar el nombre del tipo de conexin para la publicacin del sitio Web. En la ventana Carpeta raz local, es el lugar de los archivos de origen donde se desarrolla el sitio Web. Por ejemplo, la carpeta podra ser C:\proyectos\missitios\banco. Luego existen dos opciones, llamada Vnculos relativos, para determinar si el vnculo de los archivos se realiza desde el sistema local, carpetas locales o, bien, se realiza directamente en el sitio Web propio. Lo normal es la primera opcin puesto que los desarrollos suelen hacerse mayormente en sistemas locales. Ms abajo, la ventana donde dice Direccin HTTP se suele colocar o, bien, el sitio Web donde se publicarn las pginas Web o el sitio del servidor virtual local. Para el caso de un sitio Web podra ser http://www.midominio.com/ o en caso de ser local podra ser como http://localhost/. Las ltimas dos opciones, resultan interesantes. La primera opcin hace nfasis en el uso de maysculas y minsculas. Cuando la casilla es tildada, el motor de verificacin se activa y permite analizar si se procede a distinguir el uso de maysculas y minsculas. Lo normal es que esta opcin no se utilice y, de hecho, le recomiendo que no lo haga. Esta opcin es utilizada para casos muy especiales. La ltima opcin debe ser tildada para mejorar todos los movimientos que haremos con Dreamweaver durante el proceso de uso del entorno ms las actualizaciones constantes que haremos sobre nuestro proyecto actual en tiempo de diseo. Suele ser marcada por defecto. Sin embargo, puede que para algunos casos, tengamos que desactivarla. Eso sucede en equipos que tiene poca memoria en el sistema o recursos muy limitados. Por tanto, deber estudiarse su uso o no de Cach para esos casos tan particulares.

77

mailxmail - Cursos para compartir lo que sabes


Figura 3 Ventana del Asistente de Dreamweaver Datos Remotos
Esta seccin o ventana del asistente tiene mucha semejanza con la pantalla que podemos observar en la figura 1, es decir, con el mtodo de conexin a travs del sistema FTP. Las opciones son exactamente las mismas que describ en el primer caso. Por favor, remtase a la descripcin para el primer caso de modo de comprender esta pantalla actual que observa en la figura 3 respectivamente.

Figura 4 Tipos de Accesos


Cabe sealar un detalle muy importante. El tipo de Acceso le permite seleccionar el modelo de publicacin, ver figura 4. Como podr observar en el despliegue del cuadro combinado, Ud., cuenta con una serie de modalidades muy interesantes. Ya hemos hablado de una de ellas, me refiero a FTP y hemos mencionado una tecnologa ms llamada RDS. Ahora bien, existen ms opciones o modelos de publicacin. La firma Adobe, hace nfasis en el uso del sistema WebDAV que permite un mecanismo de publicacin ms segura y efectiva. Si bien ha sido propuesto por el consorcio W3C ( ord Wide Web Consortiun) y por IETF (Internet W Engineering Task Force), Adobe siempre recomienda el uso de este modelo para la publicacin Web. Resulta ser sencillo de configurar y eficiente. Sin embargo, no todos los servidores son compatibles con la modalidad WebDAV y por tanto, su uso depender en mayor grado de las caractersticas tcnicas de su proveedor de servicio Web. La opcin Local/red tiene uso exclusivo en redes Intranet corporativas donde el contenido es distribuido y explotado en una red local LAN. Generalmente, es de uso interno. Por ltimo, una herramienta que proporciona la firma Microsoft llamada Visual SourceSafe. Esta herramienta debe ser instalada aparte dado que el propio Dreamweaver no la incluye de fbrica. La herramienta cuenta con la posibilidad de operar con el Framework de las tecnologas NET dado que Dreamweaver puede operar perfectamente con pginas Web basadas en ASP y ASP.NET respectivamente. La tecnologa de Visual SourceSafe est orientada al uso exclusivo del Framework .NET. Para ir cerrando, con las opciones que ofrecen Dreamweaver y su asistente, desde la seccin Categora, podremos observar una serie de opciones ms abajo y una que dice Servidor de prueba. Esta opcin no suele ser muy utilizada por los usuarios de Dreamweaver, sin embargo, podra ser til como un mecanismo de prueba del servidor de manera de constatar su perfecto funcionamiento. Lo normal es no utilizarlo y le recomiendo que lo utilice en casos donde la conexin con su servidor Web suele ser crtica. Las formas de cmo configurarlo no difieren mucho de las opciones de la seccin del asistente de Dreamweaver, llamada Datos Remotos. El resto de las opciones de la seccin Categora, hacen referencia a las opciones del entorno, la limitacin del tamao o rea de la pgina a desarrollar, etc.

78

mailxmail - Cursos para compartir lo que sabes

19. Transacciones. Fundamentos


Una transaccin se trata de un proceso de acciones duales que permite crear un proceso que sucede en dos sentidos y, que a su vez, ambos sentidos deben ejecutarse de forma correcta para que la operacin resulte exitosa. Por ejemplo, un caso de transaccin muy comn se produce durante un proceso de una venta comercial. Veamos la siguiente figura 1 para analizar este concepto.

Figura 1 Ejemplo Bsico de una Transaccin Comercial - Venta


El cliente cumple la accin de pagar() y el vendedor cumple la accin de entregar(). Ambos procesos deben ser correctos. Por un lado, el cliente mediante la accin pagar() pagar(), el dinero debe cumplir ciertas reglas. Por ejemplo, que la cantidad sea la correcta, que el dinero resulte legtimo, que el pago se efecte de forma presencial, etc. Por otro lado, el vendedor mediante la accin entregar(), debe tambin cumplir ciertos requisitos, como por ejemplo, entrega de la mercadera en tiempo y forma, el producto debe presentarse de una manera especial, debe estar intacto, etc. Ahora bien, para que la transaccin se cumpla de forma satisfactoria, ambas reglas de juego para cada accin, deben ejecutarse de forma correcta y libre de errores o ambigedades. Si se produce algn tipo de error en dichas acciones, en una de ellas o en ambas, se dice que la transaccin no es satisfactoria. En efecto, eso sucede a menudo cuando hay errores u otros tipos de desviaciones. Los fallos, en el caso comercial, se pueden dar por defectos de reglas, anomalas diversas, errores de sistemas o por malicia. Sea cual fuere el motivo, ante una situacin de insatisfaccin de la transaccin, la operacin debe abortarse cuanto antes. En el caso de transferencia bancaria de dinero o valores, se produce un proceso de doble comprobacin de saldo. Por un lado, se registra el dinero que pasa de una entidad a otra y, por el otro lado, se registra el movimiento. Esta doble verificacin permite determinar si ambos procesos fueron satisfactorios. Es por ello que en contabilidad, se registran los movimientos contables como salidas o como entradas, mediante el debe y el haber. En caso de error, el proceso es abortado inmediatamente. Eso mismo ocurre en los sistemas durante la transferencia de datos de un punto a otro, tal es el caso de valores o datos en pantallas que son cargados para ser almacenados en una base de datos. Analicemos la figura 2.

79

mailxmail - Cursos para compartir lo que sabes

Figura 2 Registros Contables de cada Entidad y el Saldo como Comprobacin de la Operacin


Si observa el extracto de registros contables de cada ente comercial del ejemplo, notar que ambos registran un proceso de entrada y un proceso de salida. En el caso del Vendedor, se registra como salida el producto y como entrada el dinero. En el caso del Cliente, la situacin es totalmente al revs, es decir, se registra como entrada el producto adquirido y como salida el dinero pagado. Pese a los puntos de vistas de las entidades, en ambos casos, el saldo es igual a cero pesos puesto que el proceso de la venta se cumpli satisfactoriamente. El saldo se obtiene como se muestra en la figura 3.

Saldo = Debe - Haber


El saldo puede ser negativo, positivo o neutro. Se dice que es negativo cuando juega en contra de la entidad, puesto que no es beneficiada. Esta falta de beneficio en un balance anual se registra como prdidas. Las prdidas puede darse por muchas razones, falta de cobro o cliente que no abonan desde hace tiempo morosos o dinero que fue hurtado, mal gastado o que gir en descubierto pagar una deuda repentina o una reparacin a ltimo momento, etc. Ver que existe un vasto listado de ejemplos contables. Se dice que el saldo es positivo cuando juega a favor de la entidad y en los balances se registra como ganancias. Una ganancia es un beneficio que puede originarse por una venta oportuna jugosa, por un buen negocio o por tener excedente de ventas, en el caso de una entidad que vende productos. En el caso de un cliente, podra darse por comprar productos o pagar por ellos un costo menor de contado, acceso a promociones, etc. Por ltimo, se dice que el saldo es neutro cuando las cuentas equilibran o tienden a cero. Aqu no hay ni ganancias y ni prdidas. Existe un equilibrio comercial y es lo que persigue todo ejercicio contable en una empresa como requisitos mnimos e indispensables. Lo ms importante siempre sern las ganancias, aunque a veces y segn la situacin financiera de una empresa, puede que el equilibrio de sus cuentas impliquen un giro positivo en su ejercicio contable. En sntesis, depende del caso en cuestin. Para ir cerrando, en el caso de sistemas orientado a transacciones directas hacia una base de datos, durante un proceso de transaccin, se tomara el saldo neutral para

80

mailxmail - Cursos para compartir lo que sabes


base de datos, durante un proceso de transaccin, se tomara el saldo neutral para verificar la doble comprobacin en un proceso bilateral. En efecto, eso mismo hace el sistema cuando ejecuta un proceso orientado a una tarea que requiere de supervisacin en tiempo real. Transacciones en Sistemas de Gestin La supervisacin de procesos en un sistema de gestin donde se almacenan datos en una base de datos, requiere de un proceso de verificacin dual. Si Ud., est dando una orden de guardar un dato, el dato debe guardarse y Ud., debe darse por enterado. Es decir, en dicho proceso, debe haber una suerte de interaccin entre ambos puntos de negocio para que la comprobacin y la accin sean efectivas. Adems, ser tambin interesante poder detener o abortar un proceso en caso de que suceda algn error. Los procesos de transacciones los podremos utilizar desde el pase de sus valores a una variable y mediante la funcin mysqli_connect(). Esta funcin nos proporciona tres mtodos y un conjunto de tres eventos relacionados entre s. Los mtodos son los siguientes:

Este mtodo inicia un proceso de transaccin. El inicio de la transaccin implica la activacin en cierta forma de un escenario de supervisacin, gestin de niveles de procesos y profundidad de aislacin, en el caso de que existan transacciones anidadas. MySQL propone un proceso de control de transacciones que pueden operar de forma supervisada o no. Si no se supervisa, AutoCommit las transacciones son directas y no pueden ser supervisadas para ser controladas por procesos exteriores. En cambio, cuando se activan las transacciones, la supervisin es gestionada de modo tal que pueden ser controladas exteriormente a travs de los mtodos Commit y Rollback respectivamente. Ambos mtodos permitirn aceptar o cancelar todos los procesos dentro de escenarios de transacciones. Commit Este mtodo es utilizado para confirmar un proceso de supervisin y aceptar todas las reglas o procesos que sucedieron luego del comienzo de la transaccin. Este mtodo es utilizado para descartar o abortar todo proceso desencadenado a partir de la supervisacin o inicio de un proceso de transaccin.

Rollback

Nivel de Aislacin IsolationLevel Las transacciones pueden ser simples o complejas. Cuando son simples son directas puesto que solo se trata de una supervisin sencilla de los procesos transactivos. Sin embargo, puede que sea necesario realizar ms de un proceso de supervisin y, por tanto, entran en escena las transacciones complejas o anidadas. En el caso de las transacciones complejas, para poder llevar un control y una gestin

81

mailxmail - Cursos para compartir lo que sabes


En el caso de las transacciones complejas, para poder llevar un control y una gestin de todos los procesos de supervisacin, se requiere de organizar todo este conjunto de transacciones en niveles. Estos niveles tienen cierto marco de prioridad por sobre las tareas de supervisin de cada uno de los procesos dados. Los niveles son conocidos con el nombre de aislaciones o (isolates en voz inglesa). Como sealaba recientemente, los niveles de aislacin tienen prioridades. Las prioridades permiten gestionar los niveles de aislaciones entre cada uno de los procesos de modo seguro y ordenado. De esta forma, se garantiza que cada proceso interno sea ejecutado de forma correcta y ordenada. Por ejemplo, si se tiene tres niveles de profundidad de transacciones, es decir, una transaccin contenida en otra, se debern ir resolviendo de forma escalonada cada una de ellas y en el orden de prioridades marcadas por la jerarqua de dichos niveles. Veamos un ejemplo para que se comprenda bien este concepto, ver figura 3.

Figura 4 Niveles de Aislacin de las Transacciones


Para que expresamente comprendido este concepto, si el software debe resolver los problemas en cada capa o nivel, estos debern resolverse desde el ltimo nivel de aislacin hasta el primero. Es decir, para resolver el nivel 1, primero debe resolverse el nivel 2 y para resolverse el nivel 2, debe resolverse el nivel 3. En consecuencia, hasta que el nivel 3 no se resuelva, no se podrn resolver los siguientes. Analizar el Cdigo de una Transaccin con PHP para MySQL El siguiente ejemplo de cdigo analizaremos cmo se implementan transacciones operativas en sistemas con PHP orientadas a MySQL. Debajo del cdigo, ampliar los detalles del mismo.

82

mailxmail - Cursos para compartir lo que sabes


<?php /** * @author Wagner, Ariel Alejandro * Enterprise Job Systems Solutions * @copyright 28/11/2010 */ /** Conectarse a la base de datos */ $dbh = mysqli_connect($host, $user, $pass, $db); /** * Se procede a activar las transacciones para que puedan ser * controladas por mtodos de procesos externos, tales como * Commit y RollBack respectivamente. * */ mysqli_autocommit($dbh, FALSE); /** Se procede a desencadenar varios comandos de prueba. */ /** Comando 1 */ $result = mysqli_query($dbh, $query1); /** * Se procede a verificar si existen errores en los subsiguientes * procesos de gestin para el comando declarado. */ if ($result !== TRUE) { mysqli_rollback($dbh); // if error, roll back transaction } /** Comando 2 */ $result = mysqli_query($dbh, $query2); /** * Se procede a verificar si existen errores en los subsiguientes 83

mailxmail - Cursos para compartir lo que sabes


* procesos de gestin para el comando declarado. */ if ($result !== TRUE) { mysqli_rollback($dbh); // if error, roll back transaction } /** * Llegado a este punto de los procesos, si las funciones de Rollback * han omitido los procesos, se supone entonces, que no ha habido errores * o que no se han interrumpido por alguna razn y, supone entonces, * que los datos estn listo para ser efectivos en las base de datos. * * Por tanto, con la funcin Commit se asume que todos los cambios y los * datos son aceptados, por tanto se procede a ejecutar la funcin Commit. */ mysqli_commit($dbh); /** Por ltimo, se procede a cerrar la base de datos. */ mysqli_close($dbh); ?>
El cdigo empieza creando una instancia de la funcin mysqli_connect(). Esta funcin contiene una serie de parmetros que son utilizados para establecer el nombre del servidor, el nombre de usuario, la contrasea y el nombre de la base de datos. La funcin pasa el valor objeto a una variable que, ms tarde en el cdigo, es utilizada para manipular el resto de las acciones directas hacia la base de datos y sus consultas dinmicas. La variable de conexin llamada $dbh, es utilizada como parte del parmetro de la funcin mysqli_query(), cuya funcin, que es utilizada para establecer el comando en cuestin. Este comando podra tratarse de una insercin, una actualizacin o una eliminacin de datos. En el cdigo, se enumera a modo de ejemplo dos comandos. La cantidad de comandos que se utilicen puede resultar en infinitas, al menos, en teora claro est. Ahora bien, cada comando pasar un valor tipo booleano a una variable que, ms tarde, se utilizar para determinar si el proceso de actualizacin o cambio ha tenido o no lugar en la base de datos. La variable$resultes comparada en una estructura de decisin para determinar si el

84

mailxmail - Cursos para compartir lo que sabes


valor resultante es verdadero o falso. En caso de que la variable tenga el valor Verdadero o True, el proceso de actualizacin o cambio en la base de datos ser descartado dado que la estructura de decisin forzar a que se utilice la funcin mysqli_rollback()que se encargar de deshacer todos los cambios que se hayan producido hasta el momento. En caso contrario, si la variable equivale a Falso o False, supone entonces que los cambios deben ser aceptados. En efecto, esto mismo suceder cuando luego de pasar por el resto de las estructuras del cdigo se llegue al punto donde se encuentra la funcin llamada mysqli_commit(). Esta funcin se encargar de confirmar todos los cambios realizados hasta el momento y ejecutarlos en el sistema para que estos se concluyan definitivamente. Por ltimo y para ir cerrando esta descripcin final del cdigo, la funcin mysqli_close(), se encarga de cerrar la conexin hacia la base de datos y la liberacin de los recursos del sistema.

85

mailxmail - Cursos para compartir lo que sabes

20. Libreras mysqli


Generalmente cuando se desarrolla software para manipular bases de datos en MySQL se suele utilizar las libreras clsicas de MySQL, es decir, las llamadas mysql. No obstante, desde hace tiempo, la empresa MySQL y junto a personas que desarrollan software de ingeniera en el GNU y otras organizaciones, han incluido una serie de mejoras en estas y otras libreras. Sin embargo, la extensin ms avanzada y con optimizaciones, se han incluido en las modernas libreras llamadas mysqli. Actualmente estn disponibles a partir desde las versiones 4.1 de MySQL en adelante como libreras ms avanzadas y optimizadas. En la actualidad, se hace nfasis en ellas y se recomiendan en gran parte de la mayora de los cdigos modernos o, por ejemplo, donde se requiera de transacciones operativas y la obtencin de un cdigo ms robusto, seguro operacional y funcionalmente. De todo el abanico de avances de ingeniera de estas libreras, hay partes donde los cambios fueron significativos y en otros aspectos, dichos cambios, han resultado prcticamente radicales. De todo ese compendio, se han centrado al menos, en tres partes donde los cambios son muy significativos y que a continuacin detallo. Conexiones Seguras Se han desarrollado una serie de funciones especficas. Por ejemplo, la funcin llamadamysqli_ssl_set(), que es utilizada para acceder a base de datos mediante pginas seguras que utilizan el protocolo SSL (Security Socket Layer). Multiples Querys Permite una performance para la ejecucin de mltiples consultas simultneas en el cdigo orientado a bases de datos. Interface Orientada a Objetos Una intensiva serie de mejoras y correcciones que permiten a los desarrolladores o diseadores de software mejorar los procesos de depuracin y deteccin de errores, ampliar an ms el margen de herencias, mejorando la construccin del cdigo de forma ms robusta entre otras caractersticas significativas. Entre las mejoras para la deteccin de errores, cabe sealar la deteccin y depuracin de consultas mal desarrolladas o formadas en el cdigo, etc. Para mayores detalles acerca de estas modernas libreras de MySQL llamada msqli, puede consultar en el sitio Web de PHP cuya direccin URL es http://us2.php.net/mysqli/ http://us2.php.net/mysqli/ En este sitio, podr encontrar detalles ms suntuosos acerca de estas libreras y las recomendaciones ms convenientes para sus desarrollos.

86

mailxmail - Cursos para compartir lo que sabes

21. Fundamento a la Arquitectura RIA


Para lograr obtener una mayor riqueza en grficos e interaccin sistmica, se ha desarrollado un modelo complementario de ingeniera basado en la arquitectura RIA (Rich Internet Application). Esta arquitectura propone un modelo de interaccin grfica enriquecida que permite potenciar los modelos de sistemas Web basados, como por ejemplo PHP, JSP, etc., en un modelo de interaccin rica de controles grficos enriquecidos y de comandos potenciados. Debido a que el lenguaje PHP se trata en un ciento por ciento un lenguaje poderoso de comandos, orientado a objetos y otras tantas cualidades maravillosas, tiene algunas carencias en materia grfica. Si bien se pueden realizar cosas interesantes con su prototipo de interfaz, en el fondo, adolece de ciertas cualidades estticas que no ayudan para determinados casos. Tal es el ejemplo donde se requiere una exigente esttica visual como eje central. Por ejemplo, la gran mayora de los sitios Web requieren, no solamente de un dinamismo efectivo tal como propone el lenguaje PHP, sino que adems de todo ello, requiere cierto porte majestuoso para proponer interfaz ms ricas en grficos. Siendo conscientes los desarrolladores y colaboradores del lenguaje PHP de todas estas contiendas negativas del lenguaje, se ha decido incluir entonces, la posibilidad de poder combinar partes de otros desarrollos en su propio entorno para poder potenciar sus cualidades. Gracias a esta cualidad que propone la arquitectura RIA, es posible agregar mdulos para hacer esttica sin perder el dinamismo y seguridad que propone el lenguaje PHP. Por ejemplo, es posible desarrollar determinadas interfaces grficas con Adobe Flash, Microsoft Silverlight, Java Solutions, etc., para luego embeberlas en el lenguaje de comandos de PHP y hacer una combinacin interesante y poderosa. En teora, el lenguaje ha sido diseado bajo un concepto bien definido a estos desafos, por tanto, es posible lograr una combinacin tan amplia que le permitir a los desarrolladores crear potentsimas interfaces grficas combinando el dinamismo del lenguaje PHP y lo ms poderoso de los software grficos del mercado actual. Soluciones con Flash de la Firma Adobe

Adobe Flash
El entorno de desarrollo Flash combina dos aspectos interesantes. Por un lado, tenemos un potente entorno que permite construir grficos interactivos muy amplios que abarcan sonido, movimientos, interpolaciones, etc., tpicos para crear elementos con movimientos, pelculas, etc. Por otro lado, se tiene un potente lenguaje de desarrollo propietario llamado AS ActionScript) para dicho entorno que ( permite, no solamente potenciar sus cualidades, sino la posibilidad de proporcionar recursos externos para compartirlos con otros entornos operativos, tal es el caso de PHP entre otros. Dado que Adobe Flash carece absolutamente de un mecanismo de interaccin con diversos tipos de proveedores de bases de datos, excepto la solucin propietaria de Adobe Coldfusion, esta combinacin entre PHP y Adobe Flash se convierte en ms que interesante.

87

mailxmail - Cursos para compartir lo que sabes


Flash se convierte en ms que interesante. Adobe Flash proporciona una clase especial para proveer servicios de datos llamada DataProvider. Combinando sus atributos y con el uso de XML, bajo el entorno de Flash, se pueden desarrollar todo tipo de soluciones muy sofisticadas de conexin a base de datos y, lo ms interesante de todo, con acciones interactivas, con movimientos y sonido, entre otros. El modo en cmo interacta Adobe Flash con PHP es mediante el uso de parmetros. El entorno de Adobe Flash, pasa los elementos a travs de un parmetro y, mediante este proceso, los datos son traslados hacia PHP. Luego, el lenguaje PHP podr disponer de estos datos y hacer lo que se requiera. As mismo, el proceso puede darse de forma inversa, es decir, que el lenguaje PHP le pase valores a Adobe Flash utilizando la parametrizacin como recurso de comunicacin entre ambos entornos. De esta manera, se establece una interaccin entre ambos entornos potenciando las cualidades grficas y de comandos. Soluciones con Silverlight de la Firma Microsoft

Microsoft Silverlight
El entorno Silverlight recientemente creado por la firma Microsoft ofrece una serie de servicios de control de grficos y comandos excepcionales. Si bien Microsoft Silverlight opera satisfactoriamente en lenguajes de comandos tales como ASP.NET, de la misma firma Microsoft, Silverlight ha sido optimizado para poder operar en otros entornos operativos de comandos. Casi muy parecido como ocurre con Adobe Flash, Silverlight tiene ciertas cualidades operativas en materia grfica y de comandos. Con su propio entorno que puede proporcionar muchos recursos operativos quiz ms amplios en materia de acceso a base de datos que Adobe Flash, lo que en cierto modo, lo hacen muy interesantes para determinadas soluciones de sistemas. En efecto, ese es el espritu de Silverlight, aunque se trata de una alternativa ms dado que podr optar por gestionar todo desde Silverlight o parte utilizando a PHP como soporte de comandos. Este ltimo mtodo alternativo suele ser el ms utilizado por los desarrolladores, pero insisto, no es el nico mtodo disponible. El modo en cmo Silverligth interacta con el lenguaje PHP, resulta de forma similar al que describ durante el detalle que hice sobre Adobe Flash. Utilizando parametrizacin se pueden establecer mecanismos de comunicacin entre ambos entornos operativos. Soluciones con JAVA de Oracle Corporation ex Sun Microsystems

Java 88

mailxmail - Cursos para compartir lo que sabes


Otro gran competidor en las arenas de la Web es el indiscutido lenguaje de desarrollo llamado Java. Si bien este entorno tiene sus propias soluciones, tal es el caso que tiene su propio lenguaje de comandos llamados JSP o JSF, tambin tiene la propiedad de interactuar con los lenguajes de comandos del mercado, tal es nuestro el lenguaje PHP. El lenguaje Java proporciona dos tipos interfaces muy interesantes. Una es conocida como Java Applet que es utilizada en las computadoras clientes y la otra es Java Servlet que es utilizado del lado del servidor. Ambos componentes, se combinan para establecer un mecanismo de comunicacin e interaccin necesarias para entornos basados de control y gestin de tipos de bases de datos, etc. Adems de ello, tambin se han desarrollado una serie de componentes adicionales que potencian estos mecanismos y los convierten en ms robustos y seguros. Dichos componentes ayudan a desacoplar la capa del negocio y optimizar mejor los enlaces de comunicacin entre los componentes. Estos componentes son conocidos con el nombre de Java Beans. Los Java Beans permiten establecer un proceso de negocio entre las capas superiores e inferiores de la arquitectura del software que beneficia a los sistemas proporcionndoles mayores gestiones operativas, seguridad, etc., entre otras caractersticas significativas. Generalmente, cuando se utiliza un Java Applet para interactuar con los comandos clsicos de PHP, se utilizan tambin parmetros. Si hay algo que caracteriza la versatilidad y la potencialidad de Java son los parmetros. El uso de parmetros desde Java proporcionar ms que una simple interaccin de comunicacin entre Java y PHP. El uso de parmetros Java, permite potenciar a PHP y convertir a ambos entornos en altamente combinables, rpidos, eficientes y seguros, obviamente, comparado con el resto de las soluciones embebidas. Por tanto, no es de extraarse de que las empresas cuando requieren seguridad, bajo coste y garantas de transacciones y comunicaciones, acudan al uso de Java Solutions. A mi juicio, puede resultar en una de las mejores elecciones, claro est, dependiendo de las necesidades requeridas. En Qu Consisten los Parmetros Como recordar, durante el curso de PHP, ha aprendido que los datos o valores que se pasan entre pginas, se pueden pasar por dos mtodos posibles. Uno es por el mtodo GET y el otro mtodo es POST. La diferencia erradica en las formas en cmo es preparada y enviada la informacin de un punto a otro. El mtodo GET adjunta todos los datos enviados al servidor en la propia URL de la pgina de envo que hace la solicitud hacia el servidor, mientras que el mtodo POST, encapsula la informacin en el encabezado del archivo de envo hacia el servidor en su cabecera principal. Ambos mtodos tienen sus ventajas y sus desventajas. Ahora bien, para que un mdulo tales como Adobe Flash, Microsoft Silverlight, etc., puedan enviar datos desde su entorno hacia PHP, deben hacerlo a travs de un parmetro. El parmetro se encarga trasladar los datos hacia el entorno externo. Ahora bien, segn la solucin que estemos utilizando, la creacin de parmetros puede diferir en cierto modo. Resea Histrica de Flash

89

mailxmail - Cursos para compartir lo que sabes

FutureSplash Versin 1 - 1996


El desarrollo de Flash fue creado por una vieja compaa llamada Authoring con fines experimentales all por 1996. El nombre en un principio fue SmartSketch, luego paso a llamarse ms tarde FutureSplash. El objetivo era lograr dinamismo a las primigenias pginas Web de aquellos entonces. Si bien la compaa haba logrado algunos avances significativos, no tuvo mucho eco en el mercado por varias razones tcnicas y de costes. Debido a este inconveniente, la compaa sumada a otros problemas econmicos, decidi unirse a otra empresa llamada MindDirector y desarrollar en conjunto, una serie de soluciones para el reciente mercado de la multimedia de Internet. Esta fusin no pudo lograr sus objetivos y al cabo de un tiempo, se convoco a una rueda de acreedores. La empresa Macromedia, que haba hecho trabajos especficos para Hollywood y algunas productoras importantes en USA, se intereso mucho por este producto novedoso y decidi comprarlo. En realidad, la idea de Macromedia era inyectar este producto, no solamente en el mercado de la Internet, sino en la propia Hollywood. Para poder adaptar el producto a tales fines, decidi cambiar el nombre del producto por Flash 1, debido a que FutureSplash, haba cambiado su aspecto en un 80%. Lo lgico era darle un nombre nuevo, lanzarlo al mercado y evitar quiz, diversos problemas en generales. A partir de la versin Flash 1, Macromedia comenz a dotar al producto de herramientas hasta llevarlo a un nivel profesional de alta escala en el mercado de la industria de Internet y de otros medios. La evolucin de Flash fue avanzando entre cada versin y Macromedia comenz a desarrollar un lenguaje exclusivo para este producto con el fin de potenciar sus virtudes. Este lenguaje se lo llamo ActionScript. Este lenguaje en un principio, solo estaba concebido para potenciar al entorno. Con el paso del tiempo, Macromedia fue creciendo hasta que tuvo un problema financiero serio y tuvo que empezar a vender parte de sus derechos de autor de algunos de sus productos. Mientras tanto, Macromedia apostaba a Flash y desarrolla su segunda evolucin de lenguaje de ActionScript y lo orienta a objetos. A partir de este momento, Macromedia desarrolla ActionScript 1 con sus famosas libreras MX. Luego, Macromedia pasara a una situacin financiera catica y, al poco tiempo, pasa a declararse en bancarrota. Ante un colapso abrupto de un posible cierre definitivo de la empresa y lo inminente de dejar a millones de clientes sin servicio, la corte norteamericana decide hacer una licitacin. La empresa joven Adobe decide comprar el producto y lo compra con algunas condiciones especficas. La empresa Macromedia an segua teniendo los derechos de sus libreras y por lo tanto, la versin MX result muy mezclada de propuestas de Adobe y de Macromedia. Eso se respeto hasta que Adobe por cuestiones legales, toma todo el control de la empresa y Macromedia pierde los derechos de autor, pasando Macromedia a su disolucin y desaparicin del mercado actual.

90

mailxmail - Cursos para compartir lo que sabes


Ante esta situacin, Adobe toma las riendas del producto y decide reescribir todo el cdigo nuevamente para evitar dos cosas importantes. Primero, futuras y potenciales demandas judiciales y dos, para mejorar el producto de Flash, brindndole as ms potencialidades y orientndolo fuertemente a objetos, etc., entre otras mejoras. Durante este proceso, las actualizaciones de ActionScript 2 a ActionScript 3 se sucedieron casi de una versin del producto a otra de forma directa y abismal. Estos cambios tan radicalizados, fueron objeto de severas crticas por parte de los desarrolladores y consumidores del producto. Ante toda la comunidad de desarrolladores enojados ms los clientes que apoyaban a los desarrolladores, Adobe prometi no hacer ms esto y continuar un proceso de escala manteniendo la compatibilidad de sus productos sin alterar los conceptos de forma tan radicalizada como lo haban hecho en el pasado. Actualmente, las ltimas actualizaciones de Adobe, han mantenido el software bajo un delineamiento coherente, por lo que supone que estos temidos cambios realizados por Adobe, han pasado a ser simples ancdotas de la historia de Flash. Analizando un Caso con Adobe Flash En el caso de utilizar Adobe Flash, la forma en cmo crear el parmetro difiere de las versiones de ActionScript dado que Adobe ha desarrollado hasta la actualidad tres versiones para ActionScript. Segn la versin que utilicemos, es probable que parte del cdigo difiera bastante. Sin embargo, a nivel funcional, el objetivo final de la parametrizacin es prcticamente similar. A continuacin, mostrar un simple ejemplo de parametrizacin que permite pasar datos desde una aplicacin creada con Flash hacia el lenguaje de comandos PHP. Al desarrollar la aplicacin de Flash, dentro de esta misma, hay que incorporar una serie de variables que sern las que se utilizarn para pasar los datos al exterior mediante el efecto de parametrizacin. Adems de las variables, hay que especificar el nombre del archivo PHP que se encargar de capturar estos datos y luego procesarlos. Ahora bien, las variables deberan coincidir con las variables que sern levantadas en PHP tal cual como han sido estas declaradas en la aplicacin Flash. Por tanto, del lado de PHP, se utilizan las rdenes GET o POST respectivamente. Recurdese que es aconsejable que utilice el mtodo POST por cuestiones de seguridad. Veamos un extracto de ejemplo de ambos lados.

... frlv = new LoadVars(); frlv.nombre = nombre_txt.text; frlv.mail = email_txt.text; frlv.mensaje = mensaje_txt.text; frlv.titulo = titulo_txt.text; frlv.sendAndLoad("http://www.misitio.com/send.php", frlv, "POST"); ... 91

mailxmail - Cursos para compartir lo que sabes


Extracto de Cdigo de Flash para ActionScript 2 <?php if(isset($_POST["nombre"]) && isset($_POST["titulo"]) isset($_POST["email"]) isset($_POST["mensaje"])) { $fecha = date("d-M-y H:i"); $mymail = "tuCorreo@tuServidor.com"; $subject = "Desde el Sitio.. =)"; $contenido = $nombre." Escribio :\n"; $contenido .= $mensaje."\n\n"; $contenido .= "el mensaje se escribio el ".$fecha; $header = "From:".$mail."\nReply-To:".$mail."\n"; $header .= "X-Mailer:PHP/".phpversion()."\n"; $header .= "Mime-Version: 1.0\n"; $header .= "Content-Type: text/plain"; mail($mymail, $subject, utf8_decode($contenido) ,$header); echo "&estatus=ok&"; } ?> Parte del Cdigo PHP con sus Parmetros
El ejemplo muestra una aplicacin que nos permite enviar correo hacia un punto especfico de la Web. De lado de la aplicacin de Flash, tenemos toda la estructura grfica y parte del cdigo para soportarla. De todo ello, he extrado la parte del cdigo ms interesante para esta explicacin. Si observa el cdigo notar que existe una variable llamada frlv. Esta variable hace referencia al escenario donde se han dibujado los controles interactivos de dicha aplicacin. Supone que los controles presentes son un par de cuadro de textos y una serie de botones para el control de esta aplicacin. En Flash, no existe el trmino formularios. El trmino correcto es fotograma para un escenario. Por tanto, si se menciona la palabra formulario, aunque mal aplicada para Flash, es que se hace referencia a dicho fotograma de la aplicacin principal. Ahora bien, cada uno de esos controles, posee un nombre propio para identificarlos y utilizarlos. Mientras tanto, existen una serie de variables que estn tambin contenidas dentro del fotograma y que son utilizadas para ser cargadas desde los controles del fotograma. Luego, dichas variables, son utilizadas durante el proceso de envo de la parametrizacin. Por ltimo, las variables que han sido cargadas de datos, son contenidas en el fotograma que, as u vez, es pasado como gran parmetro hacia un mtodo llamado sendAndLoad(), que se encarga de enviar los datos parametrizados a un archivo del servidor. Si observa el cdigo, este mtodo, tiene como parmetros la pgina a donde se requiere enviar, la variable de fotograma que contiene al resto de las variables y al resto de la estructura de la aplicacin y, por ltimo, el mtodo de envo que se utilizar. Aqu en este caso se trata del mtodo POST. En el lado del lenguaje de comandos de PHP tenemos un cdigo donde se procede a capturar los datos parametrizados utilizando el mtodo POST y utilizando a la vez, el nombre de cada una de las variables respectivas que fueron declaradas dentro de la aplicacin de Flash. Si observa el cdigo de PHP, se utiliza una estructura ms otras funciones para determinar el estado de las variables, es decir, si estas traen datos tiles o valores intiles, tales como espacios vacos, nulos, etc. Estos valores son comprobados mediante la funcin isset(). Obsrvese que cada variable declarada en la aplicacin de Flash se encuentra detallada a la perfeccin en PHP. Para ello se utiliza POST que es el mtodo elegido desde la aplicacin de Flash. Por tanto, si todo marcha bien, los datos que son enviados desde la aplicacin de Flash, pasan por parmetros, luego PHP los recoge y los procesa para enviar un correo mediante la funcin mail() como puede ver casi al final del cdigo de PHP.

92

mailxmail - Cursos para compartir lo que sabes

93

mailxmail - Cursos para compartir lo que sabes

22. Analizando un Caso con Java Applet


De esta manera y de forma similar, el resto de las aplicaciones, utilizan la misma tcnica para pasar informacin o datos desde un punto a otro. En el caso de Java, el desarrollador, puede utilizar las tcnicas de Applet-Servlet de modo de potenciar las aplicaciones. Eso s, se requiere conocer muy bien las formas en cmo desarrollar en Java y la forma ms conveniente para mezclar PHP con Java, cuando realmente, el lenguaje potente creado para s es JSP o JSF respectivamente. Por tanto y bajo estos escenarios, ha de estudiarse profundamente. Veamos los siguientes cdigos y luego analizaremos.

public boolean postResults(int pid, int ver) throws MalformedURLException, IOException { boolean success = false; String parametersAsString = "PID=" + pid + "&VER=" + ver; byte[] parameterAsBytes = parametersAsString.getBytes(); URL url = this.getCodeBase(); url = new URL(url + "updateDD.php"); URLConnection con = url.openConnection(); ((HttpURLConnection) con).setRequestMethod("POST"); con.setDoOutput(true); con.setDoInput(true); con.setUseCaches(false); OutputStream oStream = con.getOutputStream(); oStream.write(parameterAsBytes); oStream.flush(); BufferedReader iStream = new BufferedReader( new InputStreamReader( con.getInputStream())); String aLine = iStream.readLine(); while(aLine != null) { if(aLine.contains("success")) success = true; 94

mailxmail - Cursos para compartir lo que sabes


if(aLine.equals("")) break; aLine = iStream.readLine(); } iStream.close(); oStream.close(); return success; } Extracto de Cdigo Java Applet <?php $arr = array(); // Aqu se recolectan las variables enviadas como consulta $arr[0] = $_POST["PID"]; $arr[1] = $_POST["VER"]; /** * Conectarse a la base de datos * Supone la carga de todos los parmetros normales */ $host="localhost"; $db_user="USER_OF_DATABASE_VARIABLE"; $db_password="USER_OF_DATABASE_VARIABLE_PASSWORD"; $database="NAME_OF_DATABASE"; $db = mysql_connect($host, $db_user, $db_password); if (!($db)) { // En caso de fallo de respuesta del Applet, maestro esto echo "SQL ERROR: Connection failed: "; die('SQL ERROR: Connection failed: ' . mysql_error($db)); } $dbSelected = mysql_select_db($database,$db); if(!$dbSelected) { 95

mailxmail - Cursos para compartir lo que sabes


echo "SQL ERROR: Selection Failed "; die("Can\'t use ".$database." ".mysql_error()); } $sql = "insert into Game1 values (".$arr[0].",".$arr[1].")"; if (!($db2 = mysql_query($sql, $db))) { echo "SQL INSERT "; die('SQL INSERT ERROR: '. mysql_error() . " - Query was: {$sql}"); } echo "success"; //Respuesta - Satisfactorio } ?> Extracto de Cdigo PHP
El cdigo para Applet es un extracto de lo que ms interesa para esta explicacin. Adems, supone que el Applet es una clase compilada y embebida en el cdigo HTML para ser procesada y ejecutada por las secuencias de comando de los navegadores clientes. Bien, concentrndonos en el cdigo, podemos reconocer algunos aspectos importantes. Quiz y el ms evidente, son las variables que sern utilizadas para el traslado de los datos del Applet hacia la pgina PHP. Las variablespid pid verson las que nos interesan por el momento. Ambas variables son utilizadas y dentro del Applet para procesar datos pero que sern utilizadas como parmetros para pasrselos al archivo de PHP y que el servidor los procese. Si sigue mirando el cdigo, se crea una variable tipo Byte para ensamblar el parmetro e incorporar ambas variables. Ms tarde, el parmetro ser enviado por completo al servidor. Avanzando de a poco por las lneas del cdigo, podemos ver el archivo al que es destinado la parametrizacin y el resto de la variable urlutilizando la Clase URL. Luego, se utiliza la clase URLConnection para establecer la conexin con el servidor, lo cual en sntesis, especifica qu tipo de envo se har, es decir, si ser un POST o un GET. Para ir cerrando y por ltimo, el algoritmo utiliza otras funciones para controlar los siguientes subprocesos para el procedimiento de envo hacia el servidor. En la seccin del archivo PHP, vemos como la variable de entorno POST utiliza las variables parametrizadas pidy verdesde el Applet. Estas mismas le pasan los valores al archivo de secuencias de comandos PHP para su gestin. El resto de los procesos son ms que evidentes. Verificaciones de los procesos y sucesos exitosos si los mismos si resultaron efectivos o no.

96

Das könnte Ihnen auch gefallen