mailxmail - Cursos para compartir lo que sabes

Curso de MySQL con PHP
Autor: Ariel Alejandro Wagner

1

mailxmail - Cursos para compartir lo que sabes

Presentación 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 gestión, 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 estándar SQL adopta el modelo ANSI, basado en una normalización norteamericana. En estos momentos, se está desarrollando una nueva tecnología en base de datos llamada OODBMS (Object Oriented Database Managment System). Esta novedosa tecnología incluye la orientación a objetos como mecanismo de desarrollo de sistemas de base de datos. Este curso de informática ha sido el ganador del concurso de cursos de mailxmail.

2

mailxmail - Cursos para compartir lo que sabes

1. Introducción 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 gestión, 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 estándar SQL adopta el modelo ANSI, basado en una normalización norteamericana. En estos momentos, se está desarrollando una nueva tecnología en base de datos llamada OODBMS (Object Oriented Database Managment System). Esta novedosa tecnología incluye la orientación 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 gestión de base de datos mediante tecnología puramente orientada a objetos. Por ejemplo, una de las características más importantes es el sistema de persistencia de datos muy utilizado en ambientes de datos donde se requiere seguridad operativa, entre otras características funcionales.

Dr. Edgar Frank Codd
El lenguaje SQL universal utilizado para la gestión de base de datos, fue desarrollado por el Dr. Edgar Frank Codd basándose en un trabajo desarrollado para la firma IBM Corporation. La compañía IBM Corporation, en un principio, ignoró este trabajo y el Dr. Edgar Frank Codd, decidió abandonar las tareas. Más tarde, fue experimentado por la actual compañía Oracle haciéndole un pedido al Dr. Edgar Frank Codd, es decir, su colaboración en su experimento, quién 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 compañía nuevamente para continuar con el desarrollo. El Dr. Edgar Frank Codd regresa y finaliza sus trabajos con IBM Corporation. Más tarde, tanto la compañía 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 mayoría de los gestores de bases de datos modernos. El Dr. Frank Codd también realizo otra serie de investigaciones en materia de datos, tal es el caso de los desarrollos OLAP (On-Line Analytical Processing) basados en

3

entre otros. Actualmente. por ejemplo. el modelo OLAP ha ido evolucionando en modelos más complejos.mailxmail . ROLAP. un modelo de datos multidimensionales. es decir.Cursos para compartir lo que sabes cubos de datos. Un modelo de almacenamiento y manipulación de datos mediante un modelo tridimensional. es un Cubo OLAP. tales como MOLAP. HOLAP. 4 .

Por ejemplo. Viéndolo de otra forma. crear un patrón organizativo para gestionar sus datos albergados en dicha tabla. Ud. Véase la figura siguiente. podemos representar un punto en dicho plano. podría organizar sus datos de modo estructurado y cuyo acceso resultaría directo hacia esos conceptos. un nombre o cualquier tipo de información. Al obtener ambos valores y ubicarlos en el plano cartesiano. De esta forma. 5 . una tabla puede ser representada por una matriz de dos dimensiones. en una base de datos.mailxmail . incluso. Una tabla se compone de dos componentes importantes. La relación que existe entre el atributo y sus túplas obedece a un mecanismo de agrupación lógica de coordenadas. un valor para la coordenada del eje X (abscisas) y un valor para la coordenada del eje Y (ordenadas). para determinar un punto en un plano. Véase la siguiente figura.Cursos para compartir lo que sabes 2. se requiere de dos cánones como mínimos.. por lo tanto. podría utilizar los índices de dicha tabla para recorrer su matriz de forma deseada. Así mismo. el Atributo está ligado con sus Túplas en una relación de uno a uno o de uno a varios elementos de las filas. Las columnas se encuentran relacionadas con las filas. Los atributos forman parte de los campos que tienen una relación con sus registros o filas. más precisamente en una tabla. ese punto resultante podría tratarse de un valor. Un componente es conocido con el nombre técnico de Atributos y podemos considerarlos a modo de ejemplo como si se tratara de las columnas de una tabla. en matemáticas. El otro componente es conocido con el nombre de Túplas o Túplos y podríamos compararlos con las filas de una tabla. Este sistema representativo de datos resulta ser bidimensional dado que utiliza dos componentes para su construcción que son las columnas y las filas. es decir. ¿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.

Un área es a través de un lenguaje anfitrión 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 características relacionadas con el lenguaje de comunicación y manipulación de datos externos. utilizan un mecanismo de almacenamiento estandarizado que garantiza proceso de lecturas rápidas y procesos de escritura aceptablemente seguras. bloqueos más robustos y protección de datos más redundancia de datos. Generalmente en la capa de datos. el gestor complejo de datos. Los modernos gestores que se encuentran ubicados dentro del entorno que gestiona la base de datos y sus tablas. filtrados. etc. Una sección 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. tiene una precisa información del posicionamiento de las coordenadas de cada dato y su relación entre atributos y túplas. se encarga de estas trivialidades mencionadas recientemente. indizados. SQL Gupta de IBM. poseen toda la estructura lógica que se encarga de estas trivialidades como la de realizar búsquedas. La tecnología MyISAM o su antecesor ISAM. en dos secciones fundamentales. No obstante. el lenguaje competente se trata de SQL universal. MySQL Server. el control general de esta arquitectura de gestión de datos se centra en “movimientos” para los índices y en “proceso escritura-lectura” para los datos. Microsoft SQL Server. utilizan un modelo de compactación. etc. etc. capacidades. brinde aspectos de sofisticación o de estandarizado para abaratar costes. 6 . las bases de datos puramente binarias y destinadas para servidores de alto porte. Las bases de datos tales como MySQL que operan en servidores Web. 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. Por tanto. Los datos tan solo se sujetan a dos procesos.. el motor de base de datos se encarga de estas gestiones. Por lo tanto. que estas mismas sean más rápidas que las gestiones de altas. entre otras características operativas. bajas y modificaciones. análisis. El lenguaje SQL universal hace una abstracción del modelo de diseño y solo se aboca a su administración a través de su lenguaje SQL estándar. En este caso. escritura o lectura. Estos procesos son controlados por dos áreas. Esto justamente es lo que hace el motor de base de datos al administrar el gestor de cursores. podría gobernar su matriz de forma directa y eficaz. determina no solamente la tecnología y la confiabilidad. bajas o modificaciones. recursos. todo bajo un entorno de sofisticados cálculos matemáticos. Cuando el cursor se mueve entre los registros lo hace a través de los índices. Resulta importante señalar que el mecanismo de almacenamiento y el proceso de gestión de los datos en una base de datos. sino que además. es decir.mailxmail . Por un lado. transacciones y disparadores de eventos seguros. tal como MySQL Server. están optimizadas para tener altos márgenes de lectura.Cursos para compartir lo que sabes Mediante la manipulación de los índices. Con él. a modo groso. El desarrollador no tiene acceso a este nivel. el nivel de gestión de la capa de datos se divide. Los datos son obtenidos a través de esta relación-gobierno de los índices. altas. de hecho.

etc. las cuales permiten la creación. eliminación o modificación de tablas en la base de datos. eliminación o modificación de los mismos. DELETE. Las consultas proponían un simple modelo de consulta hasta modelos más complejos. CREATE. Existe un cuarto factor que es el “truncado” que resulta en un cuarto tipo de proceso en función a los tres recientemente mencionados. etc. El modelo DML también propone un modelo basado en ABM para la mayoría de los procesos de manipulación que incluyen como mencione recientemente. muy utilizados en los servidores centrales para automatizar tareas de manipulación tales como copias de seguridad.. bajas y modificaciones. procesos de lotes. etc.mailxmail . etc. este modelo DDL define las estructuras de las tablas en las bases de datos. 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 Definición de Datos La definición de datos hace referencia a un modelo de escenario donde se formalizan tablas o consultas. depuraciones programadas. vistas. basados en procesos de filtrado de datos. DML (Data Manipulation Languaje) – Lenguaje de Manipulación de Datos La manipulación 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. UPDATE. Podremos utilizar comandos tales como ALTER. Características más significativas de SQL El lenguaje SQL ha sido creado en un principio como un mecanismo optimizado para la obtención de forma rápida y eficiente diversos tipos de obtención o extracción de datos. En síntesis. La manipulación de datos resulta ser un proceso más sensible operativo de la información. para el sustento y manipulación de datos. el DDL propone un modelo basado en ABM (Altas Bajas o Modificaciones). En el caso de las tablas. Ahora bien. A esto habrá que agregarle las copias muy útiles para las copias de respaldo o seguridad. altas. DROP y TRUNCATE entre otros para operar estos procesos de definiciones de datos.Cursos para compartir lo que sabes 3. El Lenguaje SQL Universal Profesor Conrado Böhm 7 . Este modelo propone comandos operativos tales como INSERT. Una característica interesante resultan ser los llamados Triggers o (Disparadores).

Era evidente que las críticas estaban más que justificadas. Todo proceso genera cambios y altera los datos en las bases de datos y en sus tablas que han sido foco para el cambio. Se dice que son estructuradas dado que tienen un proceso de construcción basado en comandos. se cuenta con un administrador visual que se puede operar desde cualquier tipo de navegador Web. eliminación de dato o tablas. tablas. Eliminación de datos – Baja de datos. ha recobrado cierto interés. tal es el caso de contadores o de procesos que requieren tareas repetitivas. Se sujeta al estándar ANSI que establece una serie de protocolos para el mismo. Los primeros servidores MySQL. puesto que el profesor tuvo colaboración del profesor Giuseppe Jacopini. consultas.Cursos para compartir lo que sabes El lenguaje SQL universal se basa en consultas estructuradas. El teorema Böhm-Jacopini. según el estándar ANSI SQL establece que el lenguaje SQL se divide en dos globales tipos de consultas y ellas son: Consultas Estáticas Vistas Parciales – Filtro de datos. etc. listados o catálogos. Operar Consultas con el Entorno de Web Server MySQL El entorno del servidor Web MySQL utiliza el lenguaje SQL para poder operar el diseño y la construcción de base de datos. Vistas Totales – Similar al anterior pero incluye todos los datos Consultas Dinámicas Ingreso de datos nuevos – Ingresar datos nuevos o tablas nuevas Actualización de datos – Cambiar datos viejos por datos nuevos. El profesor puso de manifiesto el uso del lenguaje procedural que no utiliza recursión forzada o rebuscada. Las consultas estáticas tan solo procesan los datos de orígenes desde las tablas de las bases de datos y no aplican ningún tipo de cambio a las mismas. tablas. Simplemente. explica que un lenguaje estructurado obedece a tres conceptos fundamentales y ellos son los siguientes: Secuencia Instrucción Incondicional Iteración (Instrucciones de bucles) Generalmente y volviendo al tema. El uso de las tan cuestionadas “etiquetas” eran todo un desafía para muchos y todo un dolor de cabeza para otros. etc. tal como pasa en lenguajes que utilizan etiquetas o ciertos artilugios para repetir estructuras de códigos. El término de lenguajes estructurados y no estructurados. por ejemplo. Resulta cómodo el uso 8 . utilizaban el símbolo de sistema para crear y operar la administración de las bases de datos como del propio servidor. etc. Cabe recordar que el uso del lenguaje Assemble enmarañaba mucho los procesos y más si estos eran recursivos. etc.mailxmail . se trata de una vieja pelea de algunos expertos en desarrollo de software en el pasado y que en la actualidad. parámetros y predicados. El primero en acuñar este concepto en el camino del fascinante mundo del desarrollo del software fue el profesor Conrado Böhm. En las últimas versiones que vienen con el servidor Apache. Mientras que las consultas dinámicas se comportan de forma contraria a las estáticas. se trata de una radiografía parcial o total de los datos que no genera ningún tipo de alteración a los datos vigentes.

dado que de esta forma. dado que como desarrollador. cubrir un curso de esta característica implica un temario aparte y que. Entre otras cosas. Ud. les permite ahorrar recursos. el Shell de UNIX resulta más poderoso desde su consola. además. la administración visual puede que no esté disponible. en el caso de algunos sistemas operativos. Recuérdese que un servidor UNIX. sencilla. 9 . deberá comprenderlos puesto que los utilizará en sus futuros desarrollos de sus páginas Web. A modo de consejo. también resulta importantísimo conocer los comandos de consola del servidor MySQL. no estaría mal.mailxmail . Sin embargo. Tal es el caso del servidor UNIX si este no cuenta con navegadores Web. resulta importante saber operar también la consola dado que. aprender algunos comandos básicos del Shell de UNIX.Cursos para compartir lo que sabes de este tipo de interfaces dado que permite una gestión más intuitiva. tiene tres modos operativos. No obstante. Por general. Dos modos son de consola y un tercero modo llamado XWindows que es gráfico. fácil de comprender y operar.. Los entornos UNIX suelen ser configurados para uso en modo de consola. escapa del objetivo de este actual curso de MySQL y PHP que está realizando.

Conociendo el Entorno Gráfico 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. Ud. Luego. debería colocar como usuario root por defecto y la contraseña es la que Ud. deberá escribir en la línea de comandos Ejecutar en Windows la orden http://localhost/ y luego presione la tecla Enter. Haga clic allí y abrirá la consola de interfaz para la gestión de base de datos. Luego. uso un navegador Mozilla Firefox) Conociendo el Entorno No Gráfico de Web Server MySQL Para poder conocer el entorno de consola. vaya al símbolo de sistema o. Esto lo trasladará a la carpeta donde se aloja el servidor 10 . presione la tecla Enter. debería leer una opción que dice más o menos así phpMyAdmin Database Manager Version xxx. si lo prefiere. Ud. debería ingresar a la interfaz del gestor de datos sin dificultades y ver lo que se muestra en la siguiente figura... Si todo marcha bien. debemos utilizar la sección del símbolo de sistema para sistemas operativos Windows. introdujo cuando instaló su servidor. (En el ejemplo. Operaciones Básicas para Web Server MySQL Existen dos modos operativos para el uso del gestor Web Server MySQL y a continuación pasaremos a describirlos. se basan en la familia de sistemas operativos Windows..Cursos para compartir lo que sabes 4.mailxmail . Para ello. Es probable que le pida un nombre de usuario y una contraseña. Si su gestor Apache Server está en español. escriba enEjecutar la orden cmd /k cd c:\appserv\mysql. haga clic en el botón Aceptar. Nota: Los comandos y las formas operativas de este curso.

Es importante también recordar que. Si Ud. bastara con que escriba el parámetro \ q y luego presione la tecla Enter. si escribe la orden exit y presiona la tecla Enter. debería estar viendo en pantalla la siguiente figura. cmd /k edit c:\appserv\mysql\opmysql. Ud.Cursos para compartir lo que sabes MySQL. 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. Notará que en las ayudas. abra el menú Ejecutar de Windows y escriba la siguiente orden. podrá acceder al Help “ayudas” de la consola. Cada uno de ellos cumple una función y es probable que puedan combinarse entre sí de modo de activar determinadas fases o herramientas.. En el modo consola. para poder activar comandos o realizar determinadas tareas. para evitar tener que escribir todas estas órdenes quizá algo complejo o intricado..mailxmail . escribirlos de forma acertada a los efectos de poder ejecutar las aplicaciones de forma correcta. habrá que conocer los comandos. desde el símbolo de sistema. escriba la siguiente línea de comando en la sección Ejecutar de Windows. Si este es su caso.. escriba la orden mysql y luego presione la tecla Enter. A continuación. si Ud. presione la tecla Enter. A continuación. Ahora.bat 11 . escribe en el prompt “cursor” de su pantalla la orden \ h o \ ? luego presiona la tecla Enter. prefiera en su lugar construir un archivo por lotes. desea salir del modo de consola de MySQL. También puede poner en práctica los comandos de consola avanzados para acceder a la carpeta del servidor Apache y el gestor de base de datos MySQL. Permaneciendo en esta ventana. Para ello. se especifica más de un parámetro. Si todo marcha bien. cerrará la ventana de símbolo de sistema en su computadora.

bat. cmd /k cd c:\appserv\mysql A continuación y dentro del prompt “cursor” del servidor escriba la siguiente orden. presione Enter y escriba las órdenes que siguen. Esto hará que el archivo se almacene con todas las órdenes que ha escrito en l archivo opmysql.. 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. escrita estas órdenes y luego guarde el archivo y salga de dicha aplicación. deberá presionar la combinación de teclas CTR + Z y una vez que la consola escriba los caracteres ^Z presione la tecla Enter. No es necesario escribir la extensión bat. debería escribir las siguientes órdenes en forma secuencial. Finalmente. c:\appserv\mysql\copy con opmysql. no cuenta con el editor de textos del símbolo de sistema. @echo off cls mysql Luego en la línea de comandos o del símbolo de sistema.bat Luego. @echo off cls mysql Para terminar y salvar el archivo. puede utilizar el editor de consola residente llamado copy con..Cursos para compartir lo que sabes Con esta orden Ud. dentro del modo consola. pruebe a su archivo por lotes simplemente escribiéndolo en el símbolo de sistema y presionado la tecla Enter.mailxmail . utilizará el editor de la consola de Windows MS-DOS para construir su archivo por lotes llamado opmysql.bat. 12 . @echo off cls mysql ^z Presione la tecla Enter para finalizar. Una vez dentro del editor. Para ello. pruebe su archivo por lotes escribiendo la orden en el prompt y luego ejecutándolo mediante la tecla Enter. C:\appserv\mysql\opmysql Si Ud.

carpetas de bases de datos creadas por Ud. por supuesto. Por tanto. Ello dependerá en grado de qué cambios específicos le apliquemos a nuestras tablas. El gestor de base de datos MySQL por consola no culmina aquí.. ideales entonces. 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 gráficas. es decir sus archivos. los comandos por lotes son muy bastos. De hecho. se tratan de una serie de archivos específicos que son albergados dentro de dicha carpeta contenedora. Ud. Recuérdese. Es muy probable que se creen más archivos asociados. Por tanto. 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.Cursos para compartir lo que sabes Los procesos o archivos por lotes. Esto mismo. otro permite la configuración 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. Advertencia: Bajo ninguna circunstancia. se interpreta como una base de datos. Ud. 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. cada carpeta dentro de la carpeta Data se trata de una base de datos. Una vez dentro del gestor MySQL.mailxmail . se los utiliza para gobernar el sistema del gestor de bases de datos.. Una tabla se compone de al menos tres archivos para su construcción. no debe tocarlas en absoluto. El resto de las carpetas que allí se encuentran. Todas sus tablas.. Un archivo colecciona los datos. debería eliminar el resto de las carpetas que se encuentran alojadas dentro de la carpeta Data. mientras que las tablas. Podría crear un sinfín de usos como herramientas complementarias y que le pueden ahorrar mucho trabajo de escritura y. estas carpetas contienen información para la administración de su gestor de datos. encontrará que deberá conocer más comandos concernientes al gestor propio de MySQL. que no desea utilizar más. Los tres o más archivos deben permanecer siempre juntos para que puedan operar de forma correcta. dentro de cada carpeta creada en la carpeta Data. notará que el servidor cuenta con algunos archivos en su directorio.. para entornos donde la interfaz gráfica no puede ser aprovecha útilmente. Las bases de datos se declaran con la creación de una carpeta dentro de la ruta del servidor MySQL. podrá construir archivos por lotes para hacer copias de seguridad o para cualquier actividad de mantenimiento de sus directorios si así lo prefiere. En este pequeño apartado tan solo he mencionado los comandos que sirven para iniciar el entorno operativo del gestor. Cualquier destrucción o alteración de las mismas. Esta arquitectura de organización de carpetas y archivos para bases de datos y 13 . En un sentido amplio. se encontrarán dentro de la carpeta contenedora. potenciales errores operativos. podría alterar el funcionamiento de su servidor de bases de datos Web. excepto claro está. r Entre otros. puede resultar muy útiles. Ud.

desea que estos tan solo puedan ver los datos y que no los puedan cambiar. Por tanto. Una restricción semejante. Por ejemplo. resulta posible refinar el proceso de control de acceso al medio. Ud. no desee que ciertos usuarios puedan acceder a determinadas tablas y sus datos o. Este proceso de control es llamado generalmente como “política granular” dado que se aplican restricciones más refinadas o específicas. Esta política actuaria como “solo lectura” . tendrá un determinado permiso o control de los recursos. en el modo de Acceso. tan solo debe hacer un upload “subir archivos” en el servidor central. Ud. se asegura que nadie puede alterar o destruir los datos vigentes.. resulta probable que Ud. Cada uno de los usuarios. “ 14 . según sea aplicada la política de administración.. Es quien se encarga de gestionar al gestor de datos de forma absoluta y totalitaria. existe un usuario que gestiona estos permisos y otros usuarios que hacen uso del recurso pero que no pueden administrarlo. Ud. es conocido con el nombre de administrador. Por otro lado. podría permitirles a determinados usuarios acceder a una tabla con sus datos. entran los privilegios. Por tanto. los tipos de usuarios se dividen en dos grandes grupos y ellos son: Administradores – Poseen los máximos privilegios y administran el recurso en forma total Usuarios – Poseen los recursos mínimos o regulados y solo explotan los recursos permitidos La política de privilegios se centra en dos grandes rasgos de acciones y estas son las siguientes: Política de Acceso – Le permite al usuario acceder al recurso y explotarlo Política de Denegación – No le permite al usuario acceder al recurso y no podrá explotarlo Dentro de todo el compendio de políticas detalladas.mailxmail . pero por otro lado. la copia de estas carpetas se hace de forma muy sencilla. Si su servidor se encuentra en un Hosting remoto. si desea realizar copias de seguridad de sus bases de datos y sus tablas. Por ejemplo. facilita enormemente la distribución de las bases de datos y sus tablas. Un privilegio especifica una política de comportamiento del usuario que declara que cosas puede o no puede hacer. puede justificar varias razones. dado que de esta forma. El usuario que posee el mayor de los privilegios. restringir el mecanismo de cambios o actualizaciones. En este concepto. Usuarios y Privilegios El gestor de bases de datos MySQL requiere de usuarios para que estos puedan operar y explotar los recursos del entorno. que le permite operar el gestor de datos con todas sus herramientas. suelen consumir menos recursos. en todo caso.. La más evidente resulta ser la seguridad.. dado que los recursos en modalidad de s olo lectura”. incluso. optimiza los recursos del sistema.Cursos para compartir lo que sabes tablas.

De esta forma.Cursos para compartir lo que sabes Esto se ve reflejado en la velocidad de acceso y proceso al medio. es decir.mailxmail . bien. resulta crucial contar con unos mecanismos de copias de seguridad y de restauración. Ante potenciales amenazas de pérdidas de datos o fatalidades. ha incorporado dos comandos de seguridad operativa que cumplen la función deImportar o Exportar los datos. todas las bases de datos suelen contener cierta información sensible. exportadas para su seguridad y salvaguarda de datos. Los datos podrían destruirse. las tablas puede ser o. copiadas en otro destino de almacenamiento o. bien. Copias de Seguridad ~ Exportar e Importar Todos los datos que se alojan y manipulan desde el servidor de datos. 15 . perderse o corromperse por diversas circunstancias. El servidor que administra MySQL para el gestor Web.

Cursos para compartir lo que sabes 5. o cualquier otro modelo que requiera gestión de datos. Abra su gestor de base de datos de MySQL Server Web. El nombre de usuario es normalmente admin y no suele colocarse contraseñas cuando se instala el gestor por primera vez. nosotros operaremos el modo de interfaz gráfica en lugar del entorno de consola. comercio. es mucho más complejo y menos intuitivo. Uno es a través de los comandos de consola bajo el símbolo de sistema y la otra forma es a través de la interfaz gráfica del gestor. debería ingresar a su gestor normalmente. observe en el lado derecho. Aquí asumiremos que estamos creando un modelo de base de datos estratégicamente diseñado y listo para implementar. El entorno de consola. Crear una Base de Datos Antes de empezar con la gestión de datos. El cuadro pegado a este. etc. 5 . cuenta con una estrategia de diseño previo de su futura base de datos. es utilizado para determinar el tipo de idioma local para la base de datos. 4 . 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 gestión. deberá seguir los siguientes pasos: 1 . luego haga clic en el botón Aceptar o presione la tecla Enter de su teclado. Si Ud. Para ello. Resulta mucho más cómodo y ágil el uso del entorno gráfico dado que es más práctico e intuitivo. por ejemplo. luego y más tarde. Para comenzar a crear la base de datos. Ud. Notará quizá que un número aparece entre paréntesis. no altero los datos en la sección de privilegios. donde figura por defecto la opción Cotejamiento. A continuación... recuerde hacer lo siguiente. debería entrar como administrador por defecto a través de la siguiente sesión.. 2 . Se supone que Ud. cree. Esto abrirá el gestor de bases de datos y le pedirá que inicie una sesión. El siguiente paso es colocar el nombre de usuario y la contraseña para poder abrir el gestor. Vaya a Ejecutar de Windows y escriba la siguiente orden http://localhost/.10. No se preocupe por este detalle. esta opción optara por la 16 .. Operando el Entorno Gráfico de MySQL Server Web I El servidor Web de MySQL puede ser gestionado de dos modos. 3 . de un negocio.mailxmail . haga clic donde dice phpMyAdmin Database Manager Version 2. Por tanto. Una vez salvado estos defectos.. Una vez que haya creado su base de datos. Esto le resultará útil más tarde. En este curso. aparecerán allí. determine el nombre de usuario y contraseña para poder operar la base de datos. debe crear una base de datos. Una vez dentro del gestor. Resulta especial para aquellos que poseen conocimientos avanzados y de comandos Shell del sistema operativo. Se recomienda entonces dejar la opción Cotejamiento dado que automáticamente asignará el idioma por defecto. Resulta importante que observe la barra del lado izquierdo para que encuentre un cuadro combinado. Ese valor le indica la cantidad de tablas que posee dicha base de datos. Para crear una base de datos nueva. un cuadro de textos donde podrá colocar el nombre de su futura base de datos. primeramente. procederá a crear su primera base de datos. dado que las bases de datos que Ud.

elija la opción Stock(0). una tras otra. Aparecerá una ventana anunciándole de la incorporación de dicha base de datos. escriba el nombre de la tabla la cual llamaremos como Deposito. esto también hará que en el sector derecho se abra una sección para crear tablas. para crear la base de datos. incluso. El paso siguiente será el de ajustar los tipos de atributos para dichos campos. Para ello. Dentro de la sección derecha del gestor MySQL. Felicitaciones.. Si se ha creado bien. observemos el lado de la barra izquierda y abramos el cuadro combinado. 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. debemos colocar la cantidad de campos que se requieren para dicha tabla. vamos a verificar si la base de datos se ha creado correctamente. Atención: Téngase cuidado cuando crea tablas con vocales que utilizan acentos o 17 . Si todo marcha bien. diga Cotejamiento. a continuación haga clic en el botón Continuar. ya que lo que deseo es que Ud. acaba de crear su primera base de datos en el gestor de MySQL Server Web. Si todo va bien. se habitúe al entorno del gestor de base de datos de MySQL Server Web. En el cuadro de texto citado escriba la palabra Stock. O bien. 1 . verifique que la opción que está a su lado derecho. gestor de datos. Ahora. Sección donde se coloca el nombre de la futura Base de Datos. haga clic donde dice Servidor:localhost Servidor:localhost Esto hará que el entorno regrese a la página inicial del . Esto nos permitirá elegir la base de datos para poder empezar a crear sus tablas. haga clic en el botón Crear. esto hará que se cree la estructura de la tabla. En el cuadro de texto de al lado. Aquí tiene dos opciones. coloque el número 4 dado que crearemos cuatro campos para esta tabla. A su vez. Una vez que haya escrito el nombre de su tabla y la cantidad de campos. 2 . Por favor. 2 . 1 . estamos habilitados para empezar a crear las tablas para nuestra base de datos. Ahora.Cursos para compartir lo que sabes mejor que se adapte al idioma. 3 . Finalmente. Véase figura de arriba. Por tanto.mailxmail . o bien. veremos la palabra Stock(0) en el componente. En esta área trabajaremos a continuación. en el cuadro de texto. podrá crearlas más tarde que será nuestro caso. un detalle en lenguaje SQL. Diríjase hacia la sección izquierda de su pantalla dentro del gestor de MySQL y en el cuadro combinado. A partir de estos instantes. procederemos a crear nuestra primera tabla para nuestra base de datos llamada Stock. empieza a crearlas directamente. deberá crear la base de datos. luego.

Esto es útil para los casos donde deseamos que los valores se coloquen automáticamente. En Nulo. leer la sección amarillenta remarcada que aparece en la pantalla durante la creación de los campos y sus atributos para evitar posibles problemas más tarde. que en este caso es un máximo de 9999. Entre otros detalles. Para COSTO colocaremos en TipoDECIMAL. En nuestro caso. ARTICULO. Por último. Esta opción nos permitirá evitar que los valores resulten duplicados en nuestra tabla Deposito. En Longitud/Valores Longitud/Valores coloque el número 4 . Le recomiendo antes de empezar a operar con los campos.Cursos para compartir lo que sabes diéresis. En el Predetermina Predeterminadocolocaremos 0 . Si Ud. colocaremos la opción Null. En Longitud/Valores colocaremos 1 0 0. En Extrano colocaremos nada. Vale la pena aclarar que Extra tiene una opción llamada auto_increment. Este resulta en un número mucho más grande que DECIMAL. Para cálculos de ingeniería o donde se requiere de máxima precisión. une las dos palabras sin espacio o. las omitiremos directamente. tiene dos opciones. Sin embargo. Obsérvese que los nombres de los campos los he colocado en mayúsculas. omitimos sus detalles. desea crear un nombre semejante. lo importante es que evite usar espacios entre sus nombres de tablas. O bien. Coloque los nombres de arriba hacia abajo en los primeros cuadros combinados más a la izquierda como sigue en esta seguidilla: I D. Ahora. Los valores resultan ser obligatorios. lo insto a que utilice palabras que omitan estos detalles para evitar potenciales problemas más tarde. evítese dar nombres a sus tablas con espacios entre palabras como por ejemplo Deposito Argento. Este formato permite utilizar valores numéricos para la economía o la contabilidad.. Tanto los acentos como las diéresis pueden resultar problemáticas a la hora de desarrollar las consultas y otras tareas relacionadas. Por lo tanto. Esto le permite limitar la cantidad de número enteros. iremos colocándole a nuestra tabla los respectivos nombres de campos y sus atributos específicos. 3 . marcaremos la opción Único cuyo icono es una ventanita con una letra u en rojo. Recuérdese que el gestor SQL utiliza la norma americana ANSI ’94 que se basa en el lenguaje inglés que no contempla determinados vocablos hispanos. se recomienda utilizar DOUBLE DOUBLE. COSTO y CANTIDAD. 2 . Para ARTICULO colocaremos en TipoTEXT. El siguiente paso es ajustar los tipos de atributos para cada uno de los campos. En Predeterminado no colocamos nada. El resto de las opciones. bien y como otra alternativa quizá más prolija. Empezaremos con el campo I D. Esto evita que no se coloquen valores en este campo. separe ambas palabras mediante un guión bajo. La minúscula es aceptado por el sistema pero está fuera de norma. pero puede que su artículo no tenga un nombre definido y podría transitoriamente no tener nombre hasta nuevo aviso. se coloque automáticamente por defecto el valor cero en dicha 18 . existe un cuadro de texto llamado Comentario. En síntesis. busque y seleccione la opción INT. 4 . Tanto en Cotejamiento como en Atributos. 1 . Esto representa un campo de tipo de texto. se recomienda para los casos donde se debe documentar la base de datos y puede resultar como una excelente “guía memoria” para el desarrollador. Esto nos permitirá dejar en blanco nuestro campo. seleccionaremos la opción Not Null. Es como se recomienda y le recomiendo que los coloque en mayúsculas siempre. este detalle lo omitimos. No resulta obligatorio colocar alguna descripción allí. Recuérdese que el tiempo es tirano y amnésico. Esto declara un campo de tipo entero. Esto limitará al campo a una cantidad de cien caracteres incluido los espacios vacíos. Ahora. Es evidente que esto no es normal. Esto hará que cuando se cree un registro en nuestra tabla. En la sección Tipo. En Nulo.mailxmail .

acaba de crear su primera tabla en el gestor MySQL Server Web. Para CANTIDAD colocaremos en TipoINT. Para finalizar. Luego para Longitud/Valores el número 4 .mailxmail . Ahora. Esto le indica que su base de datos posee una tabla. incluso. Para finalizar con esta primera práctica de creación de base de datos y una tabla ejemplo. verá que la tabla Deposito aparece debajo de esta descripción. Felicitaciones. 19 . notará que su base de datos Stock acusará la siguiente frase en el sector izquierdo Stock(1) Stock(1). 5 . Este es el resultado final de crear su nueva tabla llamada Deposito para su base de datos Stock.Cursos para compartir lo que sabes sección. su tabla se habrá creado satisfactoriamente y debería estar viendo en pantalla un resumen de la creación de la tabla MySQL y un detalle en lenguaje SQL de la creación de su tabla reciente. Si todo marcha bien. haga clic en el botón Grabar. haga clic en Servidor:localhost para regresar a la pantalla principal. En el Predeterminado colocaremos 0 . 6 .

está vacía dado que supone aún no hemos colocado datos en ella. incluso. Una vez hecho esto. Antes de empezar. eliminando las tablas o modificándolas. Conociendo la Herramienta Gestión de Tablas .Estructura 20 . que de por cierto. Operando el Entorno Gráfico de MySQL Server Web II En la práctica anterior aprendimos a crear una nueva base de datos y una tabla. La primera solapa Examinar Examinar. es probable que durante la administración de la base de datos. A continuación hago una breve descripción de esta sección de la herramienta de tablas Estructura. la solapa que se abre por defecto y que es la que se utiliza frecuentemente es Estructura.mailxmail . se tenga que alterar el contenido de sus tablas o. Sin embargo. es necesario conocer algunas herramientas adicionales más. se deberá operar con algunas herramientas específicas de este entorno. bien. Recuérdese que debe seleccionar la base de datos Stock y luego seleccionar la tabla Deposito. donde se divisan solapas. se pueden ver una serie de herramientas para la gestión de la tabla Deposito. Ver figura siguiente. Sin embargo. asegúrese de seleccionar la tabla Deposito de la base de datos llamada Stock. conoceremos algunas de estas herramientas y veremos un uso práctico de las mismas. En la sección de arriba. lo que en cierto modo. se muestra un resumen de estructura en SQL como consulta de la tabla. También resulta probable que se tenga que trabajar con datos para dichas tablas. Por tanto. En esta clase práctica. por favor. Herramientas para la Gestión de Tablas Antes de proceder con el reconocimiento de las herramientas para su uso. simplemente muestra la estructura de la tabla. vamos hacer revista de algunas de las herramientas más importantes.Cursos para compartir lo que sabes 6. le recomiendo llegar a la pantalla que se muestra aquí a continuación en su gestor de MySQL Server Web.

El ícono en forma de llavecita y un formulario de fondo le permite a Ud. Casualmente esta sección es llamada como Acción. Generalmente. Exceptuando el primer icono. Dichos cambios permiten editar sobre los atributos de dicho campo y permiten establecer nuevas reglas sobre el mismo. El icono en forma de lapicito nos permite cambiar las propiedades del campo al que hace referencia. lo que en síntesis. hemos declarado el campo ID de unicidad para evitar que un operador ingrese dos o más códigos iguales. es decir. Más adelante daré algunos consejos estratégicos acerca de posibles cambios que rocen el modelo de atributos sobre el formato de los datos. Si la activa accidentalmente. el ícono en forma de rayito y un formulario de fondo es para establecer el índice.. No se confíe de este tipo de alertas. No siempre las cosas terminan del todo bien. Así mismo.. Más tarde. podrá construir tipos de consultas estáticas basadas en el uso del comando clásico SELECT entre otros comandos operativos del lenguaje SQL. evita que se puedan registrar valores repetidos o duplicados. el uso depende de los objetivos a los que se desee desarrollar incluso sus 21 . ambos podría cumplir los mismos objetivos. bien podría utilizar SQL como un elemento de búsqueda y. podrá probar filtrando u obteniendo listados de los datos contenidos dentro de la tabla mediante consultas estáticas. proceda con su actualización. Un excelente tablero de pruebas para el desarrollador y. Esto podría representar un potencial peligro por muchas razones. Un artículo podría tener el mismo valor de identificación. Sin embargo. por supuesto.. como verá en la siguiente figura. el gestor hará dicha advertencia antes de que Ud. Téngase cuidado con el uso de la misma. el resto resultan los frecuentemente usados. Por último. el icono en forma de equis coloradita nos permite eliminar este campo de la tabla. Quizá sea recomendable estudiar otra estrategia antes de aventurarse a un cambio que implique cambios por sobre los atributos de los datos almacenados. téngase cuidado. en síntesis. establecer la clave primaria para dicho campo. Ud. Por tanto. Bien. En el caso de nuestro ejemplo. resulta en un área exclusiva para búsqueda de datos en dicha tabla.. el icono con una U coloradita y un formulario de fondo es utilizado para declarar la unicidad del campo. una herramienta estratégica para obtener determinados datos en pantalla. no tendrá forma de recuperar su campo y ni sus datos que hubiere vigentes anteriormente contenidos en dicho campo. esta misma. Si dichos cambios inciden en el formato con el peligro de truncar valores en los campos. Conociendo la Herramienta Gestión de Tablas – SQL y Buscar En la sección SQL Ud. De todos modos. continuando entonces. no podría hacerse referencia precisa de cada uno de los artículos. eliminará su campo de su tabla más el contenido que existiere en ella. podrá encontrar una serie de íconos al extremo derecho final de cada uno de los campos vigentes de la tabla. Con respecto a la herramienta Buscar.Cursos para compartir lo que sabes En la sección donde aparecen los campos de la tabla Deposito.mailxmail .

22 . se unen a través de un punto. aunque muchos prefieren realizar una consulta dinámica 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. podrá ir agregando registros a su tabla. I D ARTÍCULO 1 Escoba 2 Balde 3 Secador 5 Palita 6 Escobilla 7 Franela COSTO CANTIDAD 18 25 13 9. escriba en la ventanilla del script de SQL en la sección SQL las siguientes órdenes. Dentro de esta sección.Cursos para compartir lo que sabes preferencias personales. Para ello. Finalice su lote con un carácter punto y coma. Como práctica. Operando la Herramienta Gestión de Tablas – Insertar En esta área Ud. Los registros se deben agregar de a uno. todos los registros que acaba de insertar en su tabla. puede insertar más de un registro a la vez. A continuación. uno por uno. Utilice el acento francés para encerrar el nombre de la base de datos y su tabla respectiva. Importante: Téngase especial cuidado con la sintaxis del lenguaje SQL. Ambas. como se muestran debajo de este párrafo.. Más tarde la utilizaremos para probarla mediante SQL y filtros diversos. debe construir un proceso de consulta dinámica por lotes. deberá utilizar el comando de SQL INSERT INTO.50 12 9 100 150 80 500 50 90 100 50 4 Trapo de Piso 5 8 Brilla Metales 2 1 Operando la Herramienta Gestión de Tablas – SQL Resulta interesante saber que Ud. En el caso de que desee realizar esta operatoria.. deberá ingresar estos registros. elimínelos y proceda luego a insertarlos nuevamente con esta técnica de inserción por lotes. Para ello tendrá que utilizar la sección SQL. Respete los espacios entre las órdenes y caracteres. para llenar su tabla.mailxmail .

haga clic en la solapa de la sección Buscar para recargar la sección nuevamente. En la secciónBuscar. Ud. simplemente. A continuación. podremos obtener todo tipo de datos si aprendemos a combinar estratégicamente los comodines. Pruebe con cada uno de los valores para el campo ID. no podrá recuperar sus datos. Creando Consultas Complejas Ahora. podíamos obtener un registro a la vez. Le recomiendo hacer una copia de seguridad antes de aventurarse al uso de esta herramienta. utilizaremos primeramente la secciónBuscar para aprender algunos conceptos básicos.Cursos para compartir lo que sabes Operando la Herramienta Gestión 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. Comenzaremos ejecutando una consulta sencilla y luego aplicaremos una consulta algo más compleja para comparar resultados. accidentalmente elimina todos sus datos de su tabla. diríjase a la sección donde dice O Hacer una consulta (comodín: "%") dentro de la sección Buscar. En breve. En este caso y mediante el uso del predicado LIKE. Sin embargo. ahora mismo. Si Ud. en este caso se trata de Balde. se nos facilita una serie de herramientas previamente confeccionadas que resultan muy útiles. Verifique en la sección Operador se encuentre el carácter = “igual”.mailxmail .. haremos 23 . en pantalla debería observar los datos que referencian a dicho artículo. Si todo marcha bien. A continuación. vamos a proceder a realizar una consulta algo más compleja que la anterior. parte de ellas podrían ser utilizadas también en la sección SQL. En el caso anterior. por lo tanto. Luego en la ventanilla donde dice Valor escriba el número 2 y haga clic en el botón Continuar. más tarde.. Atención: Por favor. Estas herramientas se fundamente en el lenguaje SQL y. sitúese dentro del campo ID. Creando Consultas Sencillas Por favor. Para retornar a una nueva consulta. veremos estos detalles. Operando la Herramienta Gestión de Tablas – Buscar En esta sección podremos buscar todo tipo de datos en nuestra tabla de la base de datos. téngase cuidado con el uso de esta herramienta. tan solo.

deberá obtener en forma de lista todos aquellos artículos que comienzan con 24 . Por tanto. diríjase a la sección donde dice Ejecutar la(s) consulta(s) SQL en la base de datos stock: en la sección SQL. Por favor. podrá hallar todo tipo de operadores. a continuación escriba en la ventanilla de script la siguiente orden. Creando Consultas Sencillas Por favor. escriba la siguiente orden en su script. luego verifique que en la sección Operador se encuentre la opción LIKE. En este caso. Le recomiendo que pruebe con todos los valores de la tabla y los que se le ocurran. debería ver en pantalla el artículo que hace referencia al valor 2 del campo ID. para aumentar su experiencia en este experimento. Ahora bien. Observación: Puede omitir el uso del carácter punto y coma al final del script. en la ventanilla de la sección Valor escriba esto E% y a continuación haga clic en el botón Continuar.mailxmail . comenzaremos utilizando el ejemplo pasado que hemos experimentado en la sección Buscar. Dentro de esa ventanilla enorme (nuestro script) escribiremos nuestras consultas en lenguaje SQL. Operando la Herramienta Gestión de Tablas – SQL En la sección SQL probaremos el uso de consultas estáticas utilizando las mismas herramientas que utilizamos en la sección Buscar. haremos la siguiente experiencia. A continuación. le recomiendo escribirlo siempre por muchas razones. Sin embargo. podrá obtener todo tipo de filtro específico para el hallazgo de datos en su tabla. obviamente siempre valores numéricos. una vez que haya optado por LIKE. Ud. Notará que si abre ese cuadro combinado. Recuérdese que si intercambia de posición el comodín %. en otras oportunidades.Cursos para compartir lo que sabes aprendemos a combinar estratégicamente los comodines. repetiremos esa experiencia pero desarrollando toda la consulta mediante el lenguaje SQL. Le recomiendo que experimente con todas las posibilidades que se le ocurra para verificar la potencialidad de estos comandos. en pantalla debería ver todos los artículos que empiezan con la letra E en forma de listado. la cual puede acarrearnos dificultades cuando utilizamos el lenguaje SQL en otros entornos o situaciones. ahora es un buen momento para aprender a desarrollar consultas estáticas que. Si todo marcha bien. Quizá y la más evidente es la “costumbre”. Creando Consultas Complejas En esta oportunidad utilizaremos algunas cláusulas más complejas mediante el uso del predicado LIKE. Empezaremos con una consulta estática sencilla. tendremos que escribir en el script de la sección SQL toda la consulta entera. Comenzaremos ejecutando una consulta sencilla y luego aplicaremos una consulta algo más compleja para comparar resultados. Para ello. Si todo marcha bien. Si todo marcha bien. Entonces.. Por favor. En la sección donde dice O Hacer una consulta (comodín: "%") dentro de la sección Buscar. podrá aplicar en futuros desarrollos de sistemas de base de datos durante el desarrollo de aplicaciones Web o de Escritorio. diríjase al campo ARTICULO. Luego haga clic en el botón Continuar.

El gestor de base de datos de MySQL. El lenguaje SQL resulta ser muy vasto. al menos en teoría. nos da una idea de que tan potente resultan ser estos comandos a través del uso de predicados. En breve conoceremos algunos detalles de las mismas.mailxmail . combinado los comodines % de manera de obtener y confeccionar criterios más amplios y complejos. Operando la Herramienta Gestión de Tablas – Exportar e Importar Una de las herramientas más importantes que todo gestor de datos debe tener. La cantidad de combinaciones y disponibilidades de las mismas permiten desarrollar variedades de estructuras de consultas dependiendo de las necesidades más diligentes que requieren los clientes. También es deseable a su vez. cuenta con un sistema de migración que permite operar copias de seguridad. eficaz y sencilla en caso de que se produjeren fatalidades en el sistema. usuarios o desarrolladores del entorno de gestión de datos. es la forma de hacer copia de seguridad de sus datos. le recomiendo que pruebe más tarde con otras letras. incluso. obtener la recuperación de datos de forma directa. 25 . Resumen Tanto las consultas dinámicas como las estáticas son. casi ilimitadas. pero que en este caso. Pruebe este filtro algo quizá atípico en materia de gestión de un Stock. Se trata de una herramienta extremadamente sencilla y muy eficaz.Cursos para compartir lo que sabes la letra E.

hago mención de un proceso de “Copia y Recuperación de Seguridad” . Existen distintos tipos de sistemas. Por tanto. existen otros formatos que si tienen. Esta tercera variante está asociada con la arquitectura SOAP. por citar algún ejemplo. está haciendo actualmente. podremos observar una serie de marcos donde podremos aplicar nuestra exportación de datos con diversos tipos de formatos. este tipo de definiciones resulta muy crítica. De esta forma. esta forma de exportación solo obedece a un objetivo en un sentido y no está pensado para poder ser recuperado más tarde mediante el uso de la herramienta importar. hago mención de un proceso de “ Informe” mientras que en este último caso. 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. de MySQL se pasa a un proceso que crea un archivo XML y luego el archivo XML es leído e interpretado por ColdFusion. cabe señalar que todo ello surge una tercera variante. interpretar y compensar. La única forma de lograr migrar datos entre ambos es utilizar un proceso intermedio de “traducción” que permita certificar dicho proceso. En algunos casos. Es decir. Resulta importante señalar que durante un proceso de migración de datos entre 26 . A continuación. Es más. un archivo Proxy es una suerte de mezcla de librería. Pasar datos. Como verá. Para ello se utiliza un formato universal llamado XML que consiste en un lenguaje de marcas y etiquetas. Sin embargo. En el primer caso descrito.. debemos conocer de antemano algunos detalles acerca de cada uno de ellos. más bien. Por tanto. Comentario: Para ser preciso. 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. Pongamos un ejemplo. un doble sentido puesto que están pensados para poder ser exportados o importados en cualquier momento.Cursos para compartir lo que sabes 7. Algunos expertos suelen llamar a este contexto de tipo de archivo con el nombre de archivos Proxy. hago un comentario acerca de ello. No se trata precisamente de traducir. en cierto modo. Sin embargo. traducir. los cuales pueden no llegar a ser compatibles entre sí. A modo de ejemplo. aplicación e intercambiador de datos. algo muy específico y complejo de movida. suponga que exporta los datos de su tabla con el formato PDF o Microsoft Word. En consecuencia. En consecuencia. Copia de seguridad con la herramienta Exportar Situándonos en la solapa Exportar. por lo que a mi juicio. No obstante. el formato puede tener tan solo un sentido. creo que tratar esto demandaría otro apartado y escaparía totalmente a los objetivos de este curso que Ud. sistemas tan distintos como MySQL y ColdFusion de la firma Adobe. un archivo Proxy cumple una serie de requisitos más amplios y complejos. Normalmente. un archivo Proxy tiene un proceso más complejo que comportarse como un puente entre sistemas. un archivo Proxy cumpliría más o menos una serie de requisitos. a este proceso se lo conoce como Bridge “puente”. Por último. Si deseamos migrar datos de MySQL a ColdFusión de forma directa resulta imposible puesto que ambos sistemas son totalmente incompatibles. sus datos se formalizarán en un tipo de contexto que no podrán ser recuperados más tarde mediante el uso de importar.mailxmail . En este caso estamos hablando de otro tipo de objetivo. de adaptar los tipos de datos para que estos sean interpretados por el gestor destino.

Por tanto. Ud. tal es el caso de la planilla de cálculos de Excel y las bases de datos de MySQL Server Web. cabe la posibilidad de la pérdida de algunas características específicas de los tipos de formatos. que es un formato estándar basado en tabulaciones o delimitadores creado en sus principios por IBM Corporation para sus sistemas de migración de sus 27 .. si lo desea. Creando un Proceso de Exportación Exportaremos en un principio a tres formatos. O bien. las etiquetas se agrupan en forma arborescente.Cursos para compartir lo que sabes sistemas. si es necesario. Exportar a Datos CSV Ahora. Verá que su formato se exporta en forma de tabla con formatos de color y con los formatos de tipos de datos correctos. es un tema que merece todo un tratamiento aparte de este curso. 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 tecnología informática. Sin embargo. haga clic en el botón Continuar. Es por ello que siempre se recomienda el uso de tipos de formatos estándares. Luego y a continuación. gracias a la Internet y la inclusión como estándar en el modelo SOAP (Simple Object Access Protocol). Por tanto. quizá Ud. El Primer paso para exportar es seleccionar el formato necesario y luego ajustar ciertos valores específicos para su refinamiento. la arquitectura moderna del software.. pueda que tenga dificultades más tarde durante los subsiguientes procesos. Esta acción abrirá un cuadro de diálogos del navegador indicándole dos opciones posibles.mailxmail . Si Ud. Comenzaremos exportando nuestros datos a formato XML.. Téngase en cuenta estos detalles. Exportar a XML El formato de los archivo XML se basada en un modelo estructurado de etiquetas. luego utilizaremos el formato Datos CSV y. Podrá probar su archivo de exportación utilizando para ello Excel. deberá elegir la opción guardar en su disco. Elíjase el Escritorio de Windows para hacer más fácil el trabajo y luego presione el botón Aceptar del cuadro de diálogos. yo le recomiendo que no haga esto. Quizá este es el punto más crítico entre las migraciones de datos entre sistemas que resultan totalmente incompatibles. Sin embargo. Aquí simplemente. entre otros tantos ejemplos abundantes. al formato SQL. El primer paso es seleccionar la opción XML dentro del marco Exportar. haremos el mismo trabajo pero esta vez exportaremos un archivo de tipo Datos CSV. nos dedicaremos a proceder con una la exportación generalizada o estándar omitiendo estos detalles por una cuestión pedagógica. Si todo marcha bien. puede cambiarlo. 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. Es probable que algunos formatos. el exportador de MySQL migrará todos los datos y lo almacenará en un archivo de formato XML colocándole el nombre de su tabla al archivo formato XML. Ahora bien. no permitan refinar los procesos finales para los datos. tiene pensado importar datos desde el origen mediante este archivo XML puente. más precisamente. es decir. Se trata de un modelo de tipo de base de datos muy generalizado y popular en esta época. por último. obviamente. desea abrir ese archivo de exportación o si desea guardarlo en su sistema actual. no es un tema menor y debiera ser tratado con cierta delicadeza.. Excel interpreta los archivos XML a la perfección y resultan muy útiles como sistemas de migración entre sistemas tan desiguales. Importante: El nombre del archivo XML Ud.

Las primeras base de datos eran desarrolladas bajo una plataforma basada en texto plano y con un punto de referencia específico para separar los distintos tipos de datos y sus campos correspondientes llamados delimitadores. no se trata de un formato de archivo de base de datos. en sí. seleccione Dato CSV. La capa Competente[1]. son insertos estratégicamente. parámetros. abra su Bloc de Notas de Windows. espacios. etiquetados o estructura binaria compleja. los caracteres especiales de separación. en nuestra tabla de turno. pero que en este caso. trataba de excluir de la porción de datos dichos delimitadores. no cambie este nombre original. tan sola. 28 . el entorno de MySQL ofrece un proceso de intercambio y personalización de caracteres para este propósito. haga clic en el botón Continuar. tendrá que intercambiar y probar distintos tipos de caracteres para obtener su archivo de forma correcto. luego durante el proceso de lectura. El primer método de separación consistía en el agregado final de cada dato. son interpretados por la capa de datos y de negocio como un delimitador. Un archivo script se trata de un archivo que almacena órdenes específicas de comando. En algunas oportunidades. comentarios. Sea cual fuere el separador. al menos a nivel de archivos. Proceda entonces a abrir este archivo cambiando el filtro de tipo de archivos a todos los archivos en el Bloc de Notas. datos. en el cuadro texto Campos encerrados por deje la celda en blanco. Para comenzar con nuestra práctica.mailxmail . obtener los datos reales de la base de datos. Por favor. Por tanto y a diferencia de otros formatos clásicos. Para comenzar con nuestra práctica. A continuación. haga clic en el botón Continuar. Una vez finalizado. Guarde el archivo y sin cambiarle el nombre en su Escritorio de Windows. si no le cambió el nombre. etc. luego en el marco de Opciones CSV Opciones CSV. una base de datos y sus tablas se compone de una estructura basada en delimitaciones. Ahora bien. debo explicar algunos detalles acerca de este proceso.Cursos para compartir lo que sabes creado en sus principios por IBM Corporation para sus sistemas de migración de sus MainFrame AS/400 y otras tecnologías pasadas de los ‘70. un archivo SQL se trata de un script de datos que alberga tanto comandos como datos en un solo cuerpo. etc. En el siguiente paso es abrir el archivo que acaba de exportar y que. Por otro lado. A continuación. Ahora. En consecuencia. Verá entonces en el marco Opciones CSV una serie de alternativas de control para dicho proceso. los caracteres especiales podían tratarse de punto y coma. Exportar a Formato SQL Analizando el contexto acerca de este formato. seleccione la opción SQL. seleccione un destino para su archivo cuyo nombre es por defecto el mismo que el de su tabla. pruebe importando este archivo al formato de Excel. de un archivo tipo script. el uso de un carácter especial que delimitada el fin y el comienzo de los campos y sus datos. A continuación. Puesto que el formato CSV presenta un sinfín de variantes de tipos de limitaciones y sus caracteres. antes de continuar con esta pequeña práctica. más precisamente. tabulaciones marcadas. muy parecido a un archivo fuente de cualquier lenguaje de desarrollo. incluye todos los datos que deseamos introducir en nuestra base de datos. Esto tan solo se obtiene por prueba y experimentación. para luego así. sino más bien. Bien.. Durante el proceso de confección del archivo. He señalado con anterioridad este detalle y aquí repita las mismas instrucciones. por favor. Es así como funciona este formato llamado CSV que es prácticamente un estándar en nuestros tiempos. un archivo script se compone de una serie de comandos. en el marco donde dice Exportar.

Muchos expertos. Es por ello que la definición específica de la capa para esto casos resulta compleja de definir puesto que no se encontraba estandarizada. [1]Capa Competente ~ Esta capa no existe. Por una cuestión práctica. El archivo script de exportación crea un archivo script que será útil para el proceso de importación.Cursos para compartir lo que sabes debería ser el nombre de su tabla con extensión sql. esta arquitectura no estaba bien definida. le he colocado el nombre de Competente como una forma de poder interpretar el concepto. ábralo con el Bloc de Notas y saque sus conclusiones. En la época de las bases de datos primitivas. dado que no había un estándar adecuado. no alterar su contenido a menos que sepa lo que está haciendo. Debo aclarar que la arquitectura del software tradicional cuenta con tres capas. la capa de negocio y la capa de usuario o interfaz. de modo que de esta manera. conoce bastante del lenguaje SQL. personalizan el archivo script para controlar e ejecutar tareas específicas. podrá editar dicho archivo script y podría manipularlo de forma deseada. por lo que se recomienda.mailxmail . La capa de datos. 29 .. pueda personalizar dichos procesos en un modelo deseado final. Por favor. Si Ud.

el administrador de la base de datos tiene el control y gestión de forma segura. los privilegios adecuados y garantizando a los usuarios el acceso de forma granular. Para el caso de un control de privilegio parcializado. Para mayores lineamientos de seguridad de usuarios. precisa y libre de todo tipo de discordias o 30 . se puede establecer una serie de reglas en particular que controlen eficientemente estos puntos. se permite todo y si deniega. se basara en valores absolutos de controles. se lo conoce con el nombre de cuenta o perfil de usuario. es decir. existe un sinfín de combinaciones posibles para establecer hard roles “políticas de seguridad duras”. la garantía de acceso al medio bajo estas condiciones. Cualquier usuario no autorizado podría violar el espacio de datos y generar todo tipo de daño. Si bien existe una diferencia muy substancial entre una cuenta de usuario y un perfil. Según el grado de sensibilidad de los datos y los usuarios de la base de datos. el comportamiento de su política sería drástico. existe un valor intermedio al que podríamos llamarlo privilegio parcial. podría existir la posibilidad de controlar el acceso a una tabla. la rigidez de la seguridad se organiza en niveles operativos que van desde las políticas básicas hasta las políticas más complejas y duras. El gestor de base de datos MySQL Server y MySQL Server Web. prevé un modelo de políticas de seguridad granular. En síntesis. de modo de referirnos a los usuarios de las bases de datos. Sin embargo. suelen codificarse con algún algoritmo de seguridad. Si Ud. De esta forma.Cursos para compartir lo que sabes 8. Cada usuario tiene su espacio exclusivo. no se permite nada. lo que a su vez. Este valor intermedio resulta ser el más granular. No puede existir otro usuario duplicado. otorga confiabilidad al resto de los usuarios de la base de datos. pueden poner de manifiesto ciertas debilidades de seguridad del sistema. A continuación veremos estos detalles. podría garantizar una política más fuerte y una modalidad de seguridad más robusta. aquel que conoce sus datos. este proceso de seguridad refinada. Un perfil es una cuenta de usuario pero con mayores detalles. En los manuales especializados de seguridad y según los estándares de seguridad. Mecanismo de Privilegios El mecanismo de privilegio parte en gran medida de dos controles principales que son el acceso y la denegación de los recursos. Los perfiles no entran en este contexto de estudio. quizá sea preferible que utilicemos el término de cuenta de usuario.mailxmail . Esto facilita la gestión de la base de datos y sus recursos. Permisos de usuarios El acceso y la explotación de un a base de datos a sus consultas y tablas sin dificultades y de forma eficiente. Si accede. otorgando así. He aquí la gran diferencia. Mecanismo de Identificación El mecanismo de identificación se basa en el estándar llamado comúnmente Identificación por Identificación por Desafío y que consiste en la identificación de un usuario mediante un nombre y una contraseña. Este espacio de identificación. Esta identificación es única y exclusiva de un usuario en particular.. los datos de los mismos. generalmente. concediendo acceso de solo lectura. suele ser el gran objetivo exitoso que todo desarrollador persigue. Sin embargo y por otro lado. Para controlar el acceso y explotación ha dicho recursos.

se hace mención al equipo al que se tiene acceso. recuerde siempre de colocar los niveles de contraseña adecuadas para cada instancia de acceso. Resulta recomendable siempre que el usuario tenga contraseñas por una cuestión de seguridad. Esto evitará potenciales problemas de inseguridad. puede utilizar direcciones IP o nombres de Host tal como localhost que hace referencia al equipo local. Si observa la tabla. El comportamiento de la política granular consiste en determinar qué recursos deben estar o no disponibles para el usuario. se trata del Host. podrá ver un listado de usuarios globales. hace referencia al acceso de explotación del recurso. Ud. que en este caso.. verá en detalles que cada uno de ellos tiene un atributo específico según la definición para su política competente. podrá determinar con precisión los límites que son fijados a dicho usuario y su entorno operativo. Más precisamente. La cuenta de usuario se compone de un nombre de usuario y de una contraseña. El valor % “porcentual” es utilizado para representar cualquier tipo de acceso. interesa la columna donde se enmarca el tipo de privilegio llamada Privilegios globales. Además de ello. El Host o la columna Servidor.mailxmail . el administrador del gestor de datos. Si por alguna razón desea utilizar más de un medio de acceso al recurso.Cursos para compartir lo que sabes potenciales peligros. se plantea un proceso refinado de controles que normalmente se le suele llamar granular. En la lista podrá observar que la primera columna enlista a los usuarios. El resto de las columnas hacen referencia al atributo que a este usuario se le aplica. Analizando la Granularidad de las Políticas de Control Cuando crea a un nuevo usuario en el gestor de base de datos. De esta forma. A continuación se muestra una captura de imagen para el caso de la creación de un nuevo usuario para la gestión de datos. Analizando las Cuentas de Usuarios En la siguiente figura Ud. Se debe tener especial cuidado cuando se asignan accesos al recurso. la segunda el Host de acceso y la tercera columna nos indica si dicho usuario posee contraseña en su cuenta o no. 31 ..

Cursos para compartir lo que sabes Parte Superior de la Pantalla Parte Inferior de la Pantalla 32 .mailxmail .

A continuación en la siguiente tabla se describe cada uno de estos atributos. Por ejemplo. Permite ver las consultas completas en la lista de procesos. Permite la conexión. Evidentemente. Da el derecho de usuario para preguntar donde están los clientes.. aquí hay una falla de integridad. debe primar el sentido común.mailxmail .Cursos para compartir lo que sabes Resulta importante analizar la segunda captura. Así mismo. Permite desconectar el servidor. falta de sentido común. Concede acceso a la lista completa de bases de datos. Es por ello que Ud. debiera contar con algún plan antes de aventurarse a cambiar las políticas al azar. Necesario para la mayor parte de operaciones administrativas tales como montar parámetros de variables globales o matar procesos de otros usuarios. En el marco Datos puede ver los comandos más importantes del lenguaje SQL. En el marco Administración se determina el tipo de privilegio que se desea obtener para el usuario. Si bien Ud. Aquí tiene un concepto amplio de lo que representa una política granular aplicada al recurso del gestor de datos. es decir. Necesario para las copias de salvas de seguridad. Los permisos se asignan marcando la casilla correspondiente. Según se marque en cada una de las casillas. el usuario tendrá o no disponibilidad a dichos comandos. se supone que debe tener cierto criterio. SUPER PROCESS RELOAD SHUTDOWN SHOW DATABASES LOCK TABLES REFERENCES REPLICATION CLIENT REPLICATION SAVE 33 . No tiene efecto en esta versión de MySQL. esto produce una política de gestión que permite agregar datos y no permite consultarlos. si Ud.. Si no marca la casilla. incluso si el número máximo de conexiones ha sido alcanzado. Resulta interesante aclarar de ante mano que cuando se establece la política para el usuario. Permite a volver a cargar los parámetros del servidor y depurar los caché del servidor. en el marco Estructura se cuenta con los mismos comandos pensados para la creación y administración en general de tablas. Permite poner candados a las tablas para el proceso actual.. asigna la política conceder uso para INSERT y denegar SELECT. la política entiende que dicho valor o atributo será denegado. puede marcar al azar. Administración Atributo GRANT Descripción Permite añadir usuarios y privilegios sin conectarse nuevamente a la tabla de privilegios. si bien el sistema funciona a la perfección.

ilimitadas en funcionalidades y objetivos.mailxmail . desde consultar la existencia y el coste de un libro. la cantidad de conexiones medidas en cantidad de usuarios y en tiempo. la salud y los recursos gubernamentales han ganado utilidad estos últimos años. Mediante una página dinámica. Acceso a las Bases de Datos de MySQL Mediante Páginas Web Dinámicas El proceso de transferencia de información entre la arquitectura cliente-servidor. 34 . el pago de impuestos y otros tantos modelos comerciales vigentes. El valor cero implica omitir estas restricciones. por ejemplo. Gran parte de los negocios modernos utilizan este principio y entre otros campos como la industria. cuando se desea preservar el ancho de banda o limitar las operaciones transactivas del usuario que apuntan al recurso de base de datos. eliminar y cambiar el nombre de las cuentas de usuarios. Quizá la seguridad y el ancho de banda son los principales motivos para su gestión y cuidado. resulta posible establecer un proceso de comunicación entre la máquina cliente y un servidor Web. permite desarrollar todo tipo de mecanismos de comunicación que resultan útil en campo de la industria. el acceso a un catálogo comercial. la cantidad máxima de consultas que el usuario puede realizar durante la sesión. Si observa al final del pie de esta captura de pantalla imagen. las páginas dinámicas nos permiten crear entornos de desarrollo de consultas ilimitadas. Aquí podrá controlar.Cursos para compartir lo que sabes CREATE USER Permite crear. como por ejemplo. así también. la educación. el acceso a la información de normalizaciones en la industria. la cantidad de actualizaciones. Esta política resulta ideal para ciertos escenarios. En síntesis. obtener datos de un paciente hasta poder obtener el saldo de una cuenta bancaria. Citando ejemplos. el comercio y la mayoría de las actividades humanas. podrá observar una serie de campos de textos donde por defecto se ha colocado el valor cero.

Dichos paquetes se trata de las transacciones comunes que suceden entre una computadora Cliente y una computadora Servidor. Esta computadora es generalmente llamada Cliente. Resultan finalmente en un medio para garantizar las funcionalidades de este sistema.. Cliente Servidor Procesos de la Comunicación El proceso de comunicación resulta muy sencillo. el uso de cookies. por ejemplo. habrá que depender de varios mecanismos de sustento. Las transacciones portan información que pueden ser de proceso (petición) y de información (respuesta). Ello significa que si no se garantiza un proceso de soporte ideal de la información. Las páginas transferidas hacia la computadora Cliente. se establece un formulario de acción con el propósito de poder enviar una petición a la computadora Servidor. Esta computadora es llamada Servidor. esta misma se pierde. Por tanto. Este proceso de envió en doble sentido es conocido con el nombre de Postback. De allí el hecho del uso de copias de archivos locales en los sistemas. 35 . y otros tantos mecanismos de sustento de la información. Esto sucede cuando un usuario visita el sitio Web de un portal. En alguna sección de dicha página. tenemos una computadora más potente que se encarga de recibir dichas peticiones y procesarlas para luego devolver los datos procesados a la computadora que ha solicitado peticiones. Recuérdese que este sistema de comunicaciones se basa en un modelo no conectado. que haga clic en un botón Enviar con el objeto de que se envíe la solicitud deseada. Arquitectura de 2 Capas. resultan totalmente estáticas y en formato HTML. credenciales.mailxmail . El formulario se encuentra en espera y reaccionará cuando el usuario accione algún mecanismo. la computadora Cliente solamente utiliza la página estática en formato HTML para proceder con dicha comunicación y petición con el Servidor. Por un lado tenemos una computadora que solicita información la cual genera una serie de peticiones. Los paquetes de información se envían de un extremo a otro y pueden darse entre idas y vueltas. etc. Detalles de los Procesos de la Comunicación Ahora bien. Es por ello que para garantizar que el sistema funcione correctamente.Cursos para compartir lo que sabes 9. Por otro lado. la computadora Cliente tan solo recibe una copia de las páginas para la consulta y las almacena temporalmente en su sistema con el objeto de re utilizarlas.

esta es dirigida al servidor y es analizada y procesada por la capa de negocio. son devueltos de regreso a la computadora cliente.mailxmail . En el siguiente ejercicio práctico que hará más tarde. desviará la petición hacia la capa Legacy o hacia la computadora cliente nuevamente. que en nuestro caso se trata de MySQL Server Web. Luego de que la capa de negocio finalice su proceso. Por ejemplo. La página estática es generada de forma dinámica por el proceso de páginas dinámicas desde la computadora Servidor. consultar acerca de la existencia de un libro en un catálogo virtual que posee una librería virtual que opera en la Internet. La computadora Servidor. Operación entre la Capa de Negocio Por ejemplo. también cuenta con otros tipos de recursos tales como bases de datos o archivos de soporte. Este resultado de envío se trata de otra página estática en formato HTML que es recibida y copiada en el sistema local de la computadora Cliente para que luego pueda ser leída en pantalla. Si la consulta estriba en el proceso de verificar datos en una base de datos para que la computadora Cliente pueda obtener información peticionada. por tanto. La otra capa interna es llamada Legacy. empezaremos describiendo las partes que operan en esta solución y sus detalles operativos. Los datos eran procesados y calculados por el mismo gestor de PHP. nos encontramos con el gestor de base de datos. se encarga de operar en este caso un gestor de base de datos. Ambos mecanismos. Cuando un cliente realiza una petición. la computadora Servidor procesará la información enviando de regreso a la computadora Cliente el resultado de la búsqueda solicitada. Según el proceso. Una capa interna es llamada Negocio dado que opera con el código en conjunto de los procesos de servicios Web. el Servidor reaccionara de varias formas.. La gestión de la capa de Negocio se monta sobre el lenguaje PHP que nos permite operar al servidor junto a un software de gestión que se comporta en caridad de servicios Web llamado Apache. Además de los archivos dinámicos. Al procesar la petición enviada por la computadora Cliente y según como esté desarrollado el sistema de proceso para las consultas. si una petición no consiste en consultar la base de datos. en la capa interna Legacy. la computadora Servidor contiene todos los archivos dinámicos que son capaces de realizar procesos específicos. entonces. etc.Cursos para compartir lo que sabes Arquitectura de 2 Capas ~ Cliente / Servidor Mientras tanto. Operación entre la Capa de Negocio y la Capa Legacy A veces la consulta o petición del cliente podría ser dirigida hacia una base de datos. nos permiten establecer la comunicación entre el Cliente y el Servidor y establecer negociaciones para procesar todo tipo de peticiones y datos. 36 . A continuación. recibe la petición de la computadora Cliente e inmediatamente la procesa. Por tanto. Por otro lado. En la sección Servidor. Ud. Un ejemplo de ello podría ser una aplicación que realiza cálculos financieros sin la necesidad de consultar datos en una base de datos. el proceso se realizaba en su totalidad dentro de la capa de Negocio. los datos. analizaremos un caso de consultas Online. Durante el curso. ha confeccionado en una de las prácticas una calculadora financiera que le permitía calcular la rentabilidad de un plazo fijo. tendrá la oportunidad de construir este ejemplo que analizaremos en este apartado. el proceso se reduce a procesar dicha petición y luego devolver al cliente los datos. encontramos a grandes rasgos dos capas más internas de proceso en la capa Servidor.

procede a ejecutar la consulta haciendo clic en el botón Buscar.p 37 . puede ser encriptado para mayor seguridad operativa. Por un lado determina el método de envío y. es enviada hacia el servidor en forma de un archivo específico. Los datos de solicitud enviados desde la computadora cliente. como por ejemplo. El método POST es el que se recomienda por defecto. La capa de negocio y en conjunto con el gestor del lenguaje PHP. un delincuente informático. Cuando el envío es a través del método GET. Este archivo se copia en la memoria del servidor y es procesado por el mismo. se almacenan en un archivo temporal en el servidor. que en este caso se trata del archivo resultados. Una vez que sucede esto. el servidor inmediatamente lo elimina de la memoria y si el proceso es útil. cuyo archivo es llamado resultados. Si el proceso falla. hace uso de este archivo para manipular las variables de datos que contienen la información que han sido envidas desde la computadora cliente. El envió de la solicitud y todos sus datos pueden realizarse mediante dos métodos distintos llamados POST y GET. incluso. el método POST resulta ser más seguro dado que la solicitud más los datos es incorporado en el encabezado de la petición.mailxmail . el llamado al archivo de proceso en la capa de Negocio en la sección de la capa del Servidor. el gestor PHP procede a utilizarlas durante la ejecución del archivo de procesos de destino. los gráficos.php. archivos de estilos si los hubiere.html. contiene el soporte para el formulario de acción que se utilizado para realizar las consultas Online y el resto de los recursos para estructurar y embellecer la interfaz gráfica. etc. comienza a rellenar los campos de búsqueda y selecciona el tipo de búsqueda que desea dependiendo de las opciones ofrecidas por dicho recurso. el formulario de acción tiene una característica de envío específica.Cursos para compartir lo que sabes Procesos Operativos de un Sitio Web con Consultas Online Comenzando la descripción.html y el resto de los archivos de recursos. De esta forma. no podría capturar los paquetes de envío y le resultaría en más difícil de hacerlo. Una vez transferido todos los archivos. la petición es enviada directamente al servidor Web. como dijimos. Una vez que completa correctamente todos los requisitos básicos de dicho formulario. lo utiliza hasta culminar con el proceso de ejecución en la capa de Negocio.. por lo que resulta en un método seguro puesto que se anexa sobre el encabezado del archivo de petición. pero es inseguro dado que los datos pueden ser observados y capturados fácilmente por algún delincuente informático. muy recomendado en casos de donde se opera con información crítica y sensible. imaginaremos que un usuario con su computadora personal visita el sitio Web de la librería. que se encuentran en el servidor. El ciclo de vida de este archivo temporal en el servidor. la solicitud de envío en conjunto con los datos son anexados a la dirección del espacio de direccionamiento URL que hace referencia al sitio Web. Para ello. el motor de lenguaje PHP hace uso disponible de las variables que son transferidas y manipuladas desde el momento que se envía la solicitud hasta su culminación en los procesos en la capa de Negocio en el Servidor. lo cual y por razones de seguridad. De esta forma. la página HTML llamada librería. Sin embargo. En cambio. por el otro. depende del resultado de los procesos en la capa de Negocio. La solicitud y según el método utilizado. son transferidos y copiados en el sistema local de la computadora Cliente. Este archivo en formato HTML llamado librería. Gracias a este sustento temporal. A partir de este instante. La diferencia entre ambos métodos de envío erradica en la forma en cómo es enviado la solicitud y sus datos. el usuario podrá disponer del uso interactivo que esta página Web le ofrece. Este método es el más sencillo y el que garantiza más velocidad.

Por ejemplo. Puede que el usuario escriba los datos en el campo de texto y haya dejado espacios vacíos por delante o por detrás de sus escritos. se agrega una contra barra. de reenviar la solicitud de respuesta al cliente o de procesar el dato y luego reenviar los resultados finales a la computadora cliente. analizaremos muy detenidamente el proceso que sucede en el archivo resultados. para hacer que los valores ingresados sean los correctos de modo que sean fácilmente interpretados por el sistema o aplicación para proceder con la consulta sobre la base de datos.mailxmail . A continuación. Una fase es la de verificar si los datos que han sido enviados desde la computadora cliente estén libres de errores tipográficos o semánticos. Luego de haber sido procesado dicho archivo. La función stripslashes realiza el proceso a la inversa. la capa de Negocio transfiere la información al gestor de PHP y este se encarga o. Luego. Funciones Específicas para Tratar Cadenas La verificación de los datos que han sido enviado por la computadora cliente deben ser verificados para evitar errores de excepción. A grandes rasgos. 38 . una fase donde se determina si la base de datos está disponible. El uso de addslashes tiene como objeto evitar potenciales errores en el proceso de consultas.php que se encuentra en el servidor y en el directorio raíz del sitio Web. el archivo se puede analizar y partir al menos en tres grandes fases. El uso de la función trim es para quitar los posibles espacios vacíos por delante o por detrás de los datos escritos en el formulario del cliente. tan solo se trata de una serie de extractos del código real completo. el carácter (') apóstrofe suele ser un gran generador de errores cuando se lo utiliza durante la gestión de base de datos. El error se debe a que este carácter suele ser utilizado por el motor SQL como un carácter especial. En nuestro caso. y por último. Véase los siguientes códigos para mayores detalles. Para subsanar el problema. Se han tomado pequeñas partes para analizar su comportamiento. una fase que nos permite realizar la consulta en la base de datos.php se encargará de realizar varios subprocesos que describiré en detalles a continuación. Procesos Operativos en la Capa de Negocio y en la Capa Legacy El archivo llamado resultados. encontrará el uso de dos funciones llamadas addslashes y stripslashes y al principio el uso de una función llamada trim.Cursos para compartir lo que sabes resultados.php. Ud. además también. La funcióntrim nos garantiza que estos espacios no pasen directamente al código dado que podrían incidir en los resultados de las consultas finales. Importante: Caber señalar de antemano que esta descripción que sigue luego de este párrafo. bien. se suele utilizar un carácter específico para salvar el error..

que la capa Legacy. la variable $ d b asume el valor nulo. en este caso PHP. La función requiere pasar como parámetros la ubicación de la base de datos. La capa de Negocio accede a la base de datos a través de la capa Legacy. Si existe algún error durante la conexión el valor es nulo y. En la siguiente línea del código se anuncia al usuario del problema en caso de que no sea posible conectarse a la base de datos. La función mysql_pconnect(server. se encargará de ejecutar de forma personal. 39 . Utiliza cuatro parámetros formales. Ahora bien. si la conexión resulta exitosa. A continuación. Todo lo que ocurre dentro del gestor de MySQL y cómo se proceden a realizar diversos procesos específicos en la base de datos.Cursos para compartir lo que sabes Funciones Específicas para Tratar Acceso a Base de Datos Para poder acceder al a base de datos y poder manipular consultas. password. Dicho valor tiene dos resultados finales. user. La capa Legacy se encarga de administrar estos procesos. se muestra en pantalla el mensaje contenido en el código.mailxmail . los procesos continuarán y este mensaje será omitido. se requiere de un serie de funciones que se encuentran dentro de una librería en el propio proveedor de bases de datos. el nombre de usuario y la contraseña. En síntesis. el valor será distinto de nulo. El cuarto parámetro formal resulta ser opcional y se lo utiliza para casos especiales. se puedan acceder y manipular los recursos de las bases de datos. por lo tanto. La variable $ d b $ d b carga el valor que le pasa la función mysql_pconnect(). ya sean estas estáticas o dinámicas. analizaremos las funciones más importantes de este ejemplo de consultas Online. Por tanto. MySQL posee una serie de librerías y ofrece una serie de funciones específicas para que a través de los lenguajes de desarrollo. La capa Legacy es independiente de la capa de Negocio. A continuación se muestra un extracto del código para establecer una conexión a una base de datos. la capa de Negocio delega y depende de los procesos internos que realice la capa Legacy. [flags]) es utilizada para establecer la conexión de datos. El carácter inicial (@) arroba es utilizado para indicarle al procesador que se espera el resultado de algún tipo de lectura para capturar y manipular errores. Tan solo desde la capa de Negocio se pueden pasar mensajes o directivas. Dado que la variable $ d b asume como nulo y la negación de nulo resulta en un valor verdadero. son totalmente ajenos a la capa de Negocio. de lo contrario.

mailxmail . El resultado de esta función es asignado a la variable$num_resultados. La variable llamada $consulta es asignada al parámetro formal de la función llamada mysql_query().Cursos para compartir lo que sabes La función mysql_select_db(base_de_datos) es utilizada para abrir una base de datos y asignarla para su posterior uso. se utiliza una serie de funciones que tienen el propósito de manipulación y obtención de los datos en pantalla. la variable llamada $terminbusqued $terminbusqueda es la que inserta las palabras que ha escrito el usuario en el formulario para luego su posterior envío. puede contar con más de una base de datos. se ha encerrado entre signos porcentuales (%). A partir del resto del código. Para potenciar los métodos de búsqueda. Esta función se encarga de ejecutar la consulta. En consecuencia. Esta última función permite determinar la cantidad de registros que posee la tabla en la base de datos. Si observa bien. pueden ser formateados para su presentación final en la pantalla. es recomendable que seleccione la tabla que corresponde. El valor de la variable $resultado es utilizado dentro del parámetro formal de la función llamada mysql_num_row(). Empecemos describiendo dichas funciones. La variable $consulta alberga la cadena en formato SQL para construir la consulta estática.. El resultado de la consulta o de la función realizada es asignado a la variable llamada $resultado $resultado. 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. Estos caracteres junto al predicado LIKE se los utiliza para hacer que la búsqueda 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. Recuérdese que en el gestor de MySQL Ud. los cuales. Esta variable última es utilizada 40 . Notará que hemos utilizado el predicado LIKE para poder realizar consultas de rango amplio.

Las columnas o campos se encuentran indexados. Resulta importante aclarar un detalle. Recuérdese que la función 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.. El bucle sabe cuántos registros posee la consulta y procederá a contar hasta el valor asignado.mailxmail . Por último. Todo ello se realiza mediante la variable de objeto$row[campo]. el motor del lenguaje PHP a través de este archivo fuente prepara un informe de datos de envío hacia la computadora cliente. la cual. si el campo se ubica en la tercera columna. su campo podría escribirlo como $row[2] dado que la primera columna tiene el valor 0. 41 . el cliente tendrá toda la información consultada en pantalla y se habrá culminado con el proceso de consulta. Es probable que al escribir el campo como $row[“title”] suele no no funcionar. se escribe el código pertinente que hace referencia al campo y el valor que figura en dicho campo. Ud. es decir. Al finalizar y para cada campo de la tabla de la base de datos. la función llamada mysql_fetch_array() en conjunto con su parámetro formal llamado $resultado. Una vez hecha la copia. es utilizada para asignar la matriz vector a una variable de filas utilizadas para representar los valores obtenidos en función a la fila y la columna de dicha tabla. Para ir finalizando. es recibida por la computadora cliente y copiada localmente en dicha máquina. puede sustituir la expresión literal por el índice de valor de campo. una vez que la consulta es realizada y se determina la cantidad de registros existentes. Para subsanar este problema.Cursos para compartir lo que sabes dentro de un bucle for(). El envío se hace a través de otra página estática en formato HTML.

mailxmail - Cursos para compartir lo que sabes

10. Acceso a las Bases de Datos de MySQL Mediante Páginas Web Dinámicas
En la clase pasada vimos el método de acceder a una librería virtual a través de una página que se utilizaba para consultar una base de datos. Este tipo de consultas se realiza de forma estática por sobre la base de datos debido a que no existen alteraciones en los datos y estos mismos son objetos de exhibición. 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 algún modo en la base de dato y, por ende, el proceso pase a calificarse como dinámico. Durante esta clase veremos el código utilizado para realizar actualizaciones, anexado y eliminación 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 específicos del lenguaje SQL más unas funciones específicas del lenguaje PHP. Estos operan en conjunto y nos permiten manipular los procesos de forma conveniente. A continuación, dejo un trozo de código para analizar.

// Conectarse a la base de datos... @ $db = mysql_pconnect("localhost", "root", "contraseña"); if (!$db) { echo ""; ... mensaje de errores ... exit; } // Cargar la base de datos... mysql_select_db("libreria"); // Sección 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 código es muy sencillo. En partes se repite para la mayoría de los tipos de consultas, tanto en la conexión de base de datos, en establecer la tabla y la función para pasar la consulta dada. La funciónmysql_query() permite ser utilizada tanto para consultas estáticas como para consultas dinámicas. La pieza clave en este proceso, se encuentra en cómo es ensamblada la estructura de la consulta según muestra el trozo de código ejemplo. En estos casos, es necesario señalar algunas recomendaciones para obtener el mejor aprovechamiento de esta técnica. Si observa el código, notará que todos las variables pasadas como datos o valores para cada uno de los campos de la tabla, están rodeados de apostrofes. Esto denota que los campos a insertar son de tipo texto. Sin embargo, podríamos tener inconvenientes si insertamos caracteres que entran en conflicto con la estructura interna del código, 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, téngase en cuenta estos detalles. Los valores numéricos no requieren ser encerrados entre apóstrofes. Sin embargo, tendrá que observar el uso del punto como carácter flotante y no la coma. Ello es debido a que SQL solo entiende el formato americano dado que se basa en el estándar ANSI ’94. Para el caso de fechas, deberá encerrar los valores entre signos numerales. Otra observación con respecto a las fechas, es la posición correcta entre el valor del día y el valor del mes expresado en números enteros. Si Ud., coloca al revés estos campos, puede que tenga inconvenientes. Por ejemplo, para la fecha 12/1/2005 el sistema ANSI ’94 se hace mención del mes de diciembre del día uno del corriente año mes. Si lo leemos con el formato argentino, la fecha haría mención a día 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 año, mes y día. Por tanto, si queremos presentar la fecha 12/01/2005, para MySQL la fecha se compondría 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 construcción de funciones que permitan crear una adaptación de formatos adecuada. Analicemos la siguiente función que incluye una función 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 día es adecuado... if($miFecha[3] > 31 || $miFecha[3] < 0) { $msj="Error de Fecha - Día 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 función toma la fecha ingresada a través del parámetro 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 posición del año por el día y el día por el año respectivamente. La función ereg() se trata de un evaluador de expresiones regulares. La función verifica los valores que son ingresados y los compara mediante un patrón. Si los valores ingresados coinciden con el patrón, estos valores son aceptados por la función y posteriormente procesados. En cambio, si los valores no coinciden con el patrón, estos mismos, son rechazados e ignorados por la función, lo que significa, que no son procesados. El evaluador junto con el patrón, tan solo acepta el ingreso de caracteres numéricos más el guión que es utilizado para separar los términos 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 patrón es representado como la cadena "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})" . El patrón evalúa que las fechas ingresadas sean valores numéricos y que dichos valores estén 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, sería un error. El patrón mediante la sección ([0-9]{1,2}), permite establecer el ingreso de número de dos dígitos. El resto de los procesos dentro de la función evalúan estos límites de rangos mediante el uso de condicionales básicos. Eliminar Datos a una Tabla para una Base de Datos Para eliminar datos de una tabla en una base de datos utilizaremos el siguiente código que se muestra a continuación.

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

siempre resulta conveniente analizar qué tipo de eliminación requerimos..".. } // Cargar la base de datos. if ($result){ echo "Dato eliminado correctamente. "contraseña"). Por ejemplo.. exit. mysql_select_db("libreria"). 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 código que se muestra a continuación.Cursos para compartir lo que sabes ... $result = mysql_query($query). El comando eliminar puede tener un comportamiento muy distinto al utilizarlo de una u otra manera. // Sección para eliminar datos… $query = "delete libros where autor = '". el registro seleccionado será eliminado de forma correcta y será el único al que estará afectado a esta operación. "root". // Resumen final del proceso de anexado... if (!$db) { echo "". opta por un tipo de campo no indexado y que no posee clave principal. Ello es debido a que los registros que coincidan con el valor introducido en el parámetro de búsqueda.mailxmail . la eliminación de los registros pueden ser más de uno. Ahora bien.. si Ud.. ... // Conectarse a la base de datos. @ $db = mysql_pconnect("localhost". } // Cargar la base de datos. 45 .. si Ud..$autor.. Por favor. exit. téngase en cuenta estos conceptos.. mensaje de errores ."'". } Para eliminar registros.. borra utilizando como búsqueda o referencia un campo indexado con clave única.. será afectadas por esta directiva.. mensaje de errores .

$autor."'."'". los cambios se verán reflejados sobre este y otros tipos de registros cuyos datos coincidan con el criterio inicial de referencia para el cambio. Si se elije un dato por clave principal la actualización se hará sobre ese exclusivo registro. } La modificación o actualización de datos sufre un efecto casi parecido con el que comenté en eliminar datos respecto a los datos que serán afectados."'.."'.$titulo. // Resumen final del proceso de anexado. si se hace sobre un campo donde no existe indexación o unicidad de datos. precio = '".. titulo = '". // Sección para actualizar o modificar datos… $query = "update libros set isbn = '".$precio. No obstante.$isbn."' where autor = '".Cursos para compartir lo que sabes mysql_select_db("libreria"). $result = mysql_query($query).$autor.mailxmail . 46 . autor = '". if ($result){ echo "Dato actualizado correctamente.".

En efecto. Mecanismo de Autenticación y Sesiones En lecciones pasadas. en esta oportunidad. Ambos gestores nos permitirán potenciar las funcionalidades y ofrecen un proceso de seguridad. Entre otras consecuencias negativas es que a través del sistema que ofrece el servidor Apache en materia de seguridad. El sistema más común y generalizado es mediante el uso de un nombre y una contraseña. escala y flexibilidad ilimitadas. Funcionalidad Operativa de Autenticación y Sesiones El mecanismo consiste en dos áreas específicas de control. resulta necesario depender de un mecanismo de reconocimiento. gestionar y garantizar el uso de las sesiones de los usuarios identificados en el recurso Web. ambos en este caso. En su oportunidad. No hay manera de controlar el uso y los movimientos que el usuario realiza durante la explotación del servicio Web. son almacenados en una base de datos protegida y segura del gestor de administración de bases de datos. Sin embargo. Si no existen coincidencia o los datos no son apropiados. A continuación. estudiaremos un gestor mucho más robusto y eficiente en materia de seguridad y calidad operativa. Para dar mayor margen operativo de seguridad. se supone entonces que dicho usuario no tiene autorización y por lo tanto “no se puede asegurar si es quien dice ser” . no se puede controlar. Señalamos en su oportunidad estas debilidades y la necesidad del uso de un sistema más eficiente para casos donde se requiere un control más sensible y estricto de los recursos en lo que concierne en materia de seguridad. Notaremos que este sistema resulta mucho más flexible. Ambos campos de información.mailxmail . hemos propuesto un modelo de identificación para controlar la autenticación de usuarios mediante un sistema de control llamado “identificación por desafío”. hemos visto que el uso de los mismos se sujetaba a limitaciones funcionales y operativas. detallaremos en parte dichas funcionalidades operativas. Para ello. hemos utilizado un proceso de gestión y control a través de unos archivos especiales que el servidor Apache en conjunto proporciona. el sistema resulta ineficiente en materia de seguridad operativa del sistema. Este modelo consiste en determinar si el usuario que pretende ser autenticado se encuentra sus datos almacenados en la base de datos. Este reconocimiento puede utilizar muchas alternativas. en su oportunidad.Cursos para compartir lo que sabes 11. Por tanto. El acceso a este recurso tiene como fin la de gestionar el modelo de autenticación. combinaremos el uso robusto de funciones que proporciona el lenguaje PHP más los recursos que proporciona el gestor de base de datos MySQL. Nos permitirá extender sus posibilidades y garantizar a la vez un margen operativo y de seguridad a escala. Autenticación e Identificación Gestión de Sesiones Autenticación e Identificación de los Usuarios Para poder identificar al usuario. dado que las contraseñas pueden 47 . coinciden perfectamente se supone que el usuario es autorizado dado que “es quien dice ser”. El uso de sesiones permite y garantiza operatividad robusta en el manejo del control de operaciones con los usuarios. Si sus datos.

Por ejemplo. no pueden ser descifradas. por lo tanto. como por ejemplo. quizá resulte más adecuado un modelo más robusto. 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 negociación entre el usuario y el sistema. la información de las contraseñas se suelen encriptar “codificar” mediante un código de cifrado específico. tienen un control más refinado y seguro que los que proporcionan los archivos . Dado que el sistema se basa en un modelo “no conectado”. no existe forma de controlar los estados operativos del sistema y del usuario. Si esto sucede. Los valores de información se almacenan en una base de datos protegidas. aunque son casos aislados. en materia de sensibilidad. las cuales. el servidor que ofrece el sistema y la aplicación. comúnmente llamado “stateless”. el gestor de base de datos permite determinar quién puede controlar la tabla o base de datos y otorgar a su vez privilegios totalitarios. SHA y sus versiones. estos mismos se convierten en consistentes y. Al registrar dichos procesos. Los cifrados realizados por la función PASSWORD son más vulnerables y hay un historial de crackeos. se recomienda utilizar MD5 o SHA y algunas de sus versiones. Se puede utilizar MD5. La única forma de garantizar la permanencia de dichos estados es a través de un mecanismo de sesiones que permita registrar estos procesos. La sesión evita que el usuario.Cursos para compartir lo que sabes ser objeto de vulnerabilidades operativas. es un tema a estudiar profundamente. por alguna u otra razón. por tanto. Este sistema de cifrado es básico pero bastante eficiente. se podrían plantear varios problemas de inconsistencia. Para garantizar un mayor modelo de seguridad. parcializados o restringidos. El lenguaje PHP y el gestor MySQL utilizan modelo de cifrado llamado PASSWORD.htaccess del servidor Apache.mailxmail . Por tanto. Esto permite garantizar seguridad. Tanto MD5 como SHA y sus versiones. Por otro lado. Además de ello. no tendría control de lo que ocurre y podría estar otorgando un espacio de trabajo a un usuario no autorizado o podría estar restringiendo el uso de dicho recurso al usuario. las compras o una transferencia bancaria. 48 . El manejo de la sesión del usuario permite controlar que se opere de forma correcta y segura los recursos. El usuario podría perder el control de lo que está haciendo. pase de una página a otra y pierda la información o tenga el impedimento de continuar realizando las negociaciones online. Tal es el caso de un control totalitario por parte de un administrador. podrán ser gestionados correctamente. El salto de una página a otra implica la pérdida de datos debido a que el modelo es estático y no preserva los estados de las mismas. si el usuario está realizando alguna gestión online.

A través de este pequeño archivo que genera una Cookie. Luego. 49 . los datos se anexan en el encabezado de la solicitud de envío que es dirigida al recurso apuntado. Por medio de la URL se pasan las variables o los datos de un punto a otro mediante dos técnicas GET o POST. El SID es un número que es asignado desde el servidor de forma aleatoria y es utilizado para gestionar la negociación. el servidor envía hacia el cliente un código único de identificación y gestión de sesión llamado SID. Mientras que en el lado del servidor. Una por URL y otra mediante Cookies. los datos se anexan a la dirección que apunta al recurso o si se utiliza POST. Mecanismo de Control y Gestión de Sesiones Para poder establecer una sesión entre una computadora servidor y una computadora cliente. Estos últimos parámetros resultan ser opcionales excepto el número SID. no soportan Cookies. podrá complementar el resto del código utilizando otras variables complementarias. Sin embargo. En el caso del uso de Cookies. A continuación dejo dos ejemplos expuestos en la página principal de PHP. el sistema siga operando utilizando URL por defecto como última alternativa. En cada página donde se requiere de la sesión. el uso de Cookies podría estar condicionado debido a que muchos navegadores Web o. el número es almacenado en conjunto a otros factores relacionados con las variables de la sesión y otros datos operativos de gestión interna del servidor. podrá establecer un proceso de negociación de sesión entre una computadora cliente y el servidor. se debe iniciar la sesión y resulta imprescindible iniciar el código asignando la función session_start(). el servidor de esta forma. Si se realiza en forma de GET. el lenguaje PHP utiliza un sistema que fuerza a utilizar ambos sistemas basados en URL o en Cookies. las páginas o recursos dirigidos. deberá utilizar la función session_destroy() para concluir con este proceso.Cursos para compartir lo que sabes 12. Cuando un cliente se identifica en el servidor. bien.mailxmail . Cuando desea destruir la sesión debido a que el recurso ha perdido el interés o el efecto deseado. se garantiza de que en caso de no utilizar Cookies. el servidor puede identificar a la computadora cliente y puede de esta forma controlar la sesión entre ambas garantizando así la funcionalidad operativa. Según el método elegido. etc. El SID se almacena en la computadora cliente temporalmente hasta que la computadora cliente abandona el recurso cerrando la sesión en el servidor. en la computadora cliente se almacena un pequeño archivo que guarda el número SID y otros parámetros relacionados con la expiración. Para evitar que este inconveniente condicione la funcionalidad del sistema. se ha desarrollado un mecanismo de control a través del envío de sesiones mediante al menos dos modalidades. no los utilizan o no permiten el uso de Cookies. De esta forma. Funciones – Control de Sesiones Existen dos funciones importantes que permiten controlar el inicio o la destrucción de las sesiones llamadas session_start() y session_destroy(). La computadora cliente tan solo preserva este número de identificación.

destruye la sesión.php?' . ?> 50 . echo 'Bienvenido a la página #1'. $_SESSION = array(). $params["secure"]. $params["httponly"] ). // Nota: ¡Esto destruirá la sesión y no los datos de la sesión! if (ini_get("session. $params["path"]. $params["domain"].Cursos para compartir lo que sabes <?php // page1.42000. setcookie(session_name(). $_SESSION['favcolor'] = 'verde'.php session_start(). // O puede ser que la sesión ID sea necesaria echo '<br /><a href="page2. también borre la sesión de la cookie. // Si usa session_name("something"). ¡No se olvide esto ahora! session_start().mailxmail . time() . SID . // Esta sesión opera si la cookie es aceptada echo '<br /><a href="page2. '">página 2</a>'. // Quita todas las variables de las sesiones ahora. ''. $_SESSION['time'] = time(). session_destroy(). } // Finalmente.use_cookies")) { $params = session_get_cookie_params(). ?> <?php // Inicializar la sesión. // Si desea matar la sesión. $_SESSION['animal'] = 'gato'.php">página 2</a>'.

Pasado el tiempo. setcookie("TestCookie".com".". bool setcookie ( string $name [. "/~rasmus/". // El uso de $_SESSION es recomendado. para las versiones PHP 4. Si Ud.".example. Así mismo. ?> Funciones – Control de Cookies Para manipular envío de Cookies se utiliza desde el servidor una función llamada setcookie() setcookie(). ?> En este trozo de código se puede observar tres formas tradicionales de escribir Cookies utilizando la función setcookie(). int $expire = 0 [. para destruir o quitar los registros se utiliza la función session_unregister() respectivamente.mailxmail . enlaces relacionados. Un comportamiento quizá más habitual es el control del tiempo de la sesión establecida. ". la Cookie hará funcionar el control del acceso por tan solo 24 horas. bool $httponly = false ]]]]]] ) <?php $value = 'algo de algún lugar'. la Cookie pierde vigencia y el servidor descarta el 51 . // Esta es la manera vieja de uso $HTTP_SESSION_VARS $HTTP_SESSION_VARS["Bob_esponja"] = "Él tiene los pantalones cuadrados. crear más de un registro de sesión a la vez. setcookie("TestCookie". $value. ajusta una sesión de 24 horas. en un parámetro llamado $expire se coloca el tiempo o ciclo máximo de la sesión. La función session_register() session_register() posee parámetros y permite registrar más de una variable a la vez. session_register("barney").". el resto resulta ser opcional.. Sin embargo. /* expíra en 1 hora */ setcookie("TestCookie". string $domain [. La función crea un pequeño archivo plano que contiene el número SID y puede contener otros parámetros adicionales tales como el tiempo de expiración de la sesión. string $value [. bool $secure = false [.0 $_SESSION["zim"] = "Un invasor de otro planeta. $value). time()+3600). es decir. $value. El primer parámetro es el nombre de la Cookie y por tanto suele ser utilizado para poder construir el archivo Cookie. <?php // El Uso de la session_register() está fuera de uso $barney = "Es un enorme dinosaurio púrpura. string $path [. etc. time()+3600. 1).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().1. Nótese que el nombre de la Cookie como $name es el parámetro obligatorio. El resto de los parámetros resultan ser opcionales y solo se los utiliza en casos donde se requiere un comportamiento específico para las sesiones entre el cliente y el servidor.

por más que su auto sea un avión. truncará la información. De hecho.. no resulta muy efectivo explicar y detallar lo que el usuario debiera hacer para que el sistema opere correctamente. Es por ello que se recomienda que utilice un juego de caracteres estandarizado. confecciona un manual complejo y charlatán. imposible gestionar las sesiones. La Cookie ideal no debería superar los 4Kb. Esto a veces se hace como medida de seguridad operativa y para regular el consumo de ancho de banda de la red. una Cookie de más de 2Kb puede acarrear inconvenientes también. Muchos usuarios podrían ignorarlas por falta de conocimiento o por miedo a los tan temidos SCAM [1]. Ello es debido a que el propio sistema de la computadora cliente no puede memorizar tantos enlaces a la vez.mailxmail . La cantidad de caracteres que genera un cifrador puede ser muy grande y superar la cuota de tamaño dentro de la Cookie. Otro gran inconveniente es el bloque de las Cookies por parte de los navegadores. no fallará en las máquinas de los clientes. En estas aclaraciones dejamos nuestra impresión. pero al menos. virus informáticos entre otros tantos flagelos informáticos. lo cual inevitablemente. Sin embargo. tal es el caso de la norma ANSI ’94. Además de la limitación en tamaño. “…Si Ud. El grado de racionalidad se centra exclusivamente en el tamaño de los archivos enviados. En consecuencia. hay que contar con la cantidad de Cookies posibles en el disco rígido de la computadora cliente que no debería superar los 20 archivos. Consideraciones Específicas de las Cookies El uso de las Cookies puede presentar limitaciones. evite inflar demasiado sus Cookies. Pueden prestarse a malas interpretaciones y confusión generalizada. es probable que no lo venda jamás…” . El bloqueo se suele utilizar como medida preventiva o de seguridad. Otro problema es el código o juego de caracteres. Como diría Henry Ford.Cursos para compartir lo que sabes proceso de negociación. Quizá esta norma sacrifique ciertos tipos de caracteres. Al no poder registrarse la Cookie en la máquina cliente. Este hecho implica varios inconvenientes. evítese complicarle demasiado la vida a los usuarios. El uso de un juego apropiado para un determinado país podría ser perjudicial para otro país. Si utiliza cifrado de algún valor y lo almacena dentro de la Cookie. Este problema directamente puede tener muchas lecturas negativas. deberá tener sumo cuidado. Se trata de una limitación implementada por razones de seguridad funcional. Ejemplo de Control de Sesiones y Membrecía 52 . resulta entonces. Los archivos Cookie tienen un determinado peso. Obligar al usuario a deshabilitar las Cookies para que nuestras Cookies se puedan almacenar en el disco de la computadora cliente. Por tanto.

por más que el usuario se haya identificado correctamente. Analicemos el siguiente ejemplo de control de sesiones. Dado que la carga de una página Web es Top-Down. las instrucciones se dan en un solo sentido. se rechaza la solicitud de identificación en conjunto a la sesión temporal creada al inicio de este proceso. Ver figura derecha.Cursos para compartir lo que sabes La gestión de sesión básicamente es representada en un DFS. se procede a cerrar la sesión si es posible y quitar la identificación del usuario. Esto normalmente se lo llama quitar sesión o Log Out. Esto caracteriza al sistema como un método estático. si el usuario es aceptado el proceso continúa preservando el espacio de sesión creada antes de proceder con dicha identificación. 53 . llamado vulgarmente como Log In. He aquí el por qué de la doble verificación. La idea es quitar la identificación y destruir la sesión creada anteriormente.mailxmail . Para evitar potenciales problemas. A partir de estos momentos. la sesión se encuentra en un estado crítico. podría suceder un tercer problema. si el usuario decide abandonar la sesión. el usuario se encuentra identificado y con una sesión iniciada exitosa. Sin embargo. El problema podría darse durante el proceso de creación de sesión. Ahora bien. El usuario completa los datos en el formulario y luego envía una solicitud al servidor para que este lo identifique. la página carga antes de procesar dicha solicitud un proceso de inicio de sesión. el proceso de quita de sesión utilizará el mismo mecanismo de control. A su vez. Así mismo. Es por ello que para dinamizarlo se utilizan distintos tipos de lenguajes embebidos. Esto le permite operar dentro del recurso de forma satisfactoria. Si el usuario no logra ser identificado. El lenguaje PHP es uno de ellos. Si la sesión no puede ser creada.

el proceso que explico aquí y el que Ud. No obstante. actualizados. etc. De esta forma el sistema funcionará correctamente. [1]SCAM – Resulta ser un mecanismo de estafa o robo de información.. redirigir la aplicación a otra página con las instrucciones adecuadas. Esto garantizará que la sesión sea quitada de forma satisfactoria. etc. se incluyeron cambios radicales en los procesos de gestión de sesiones. se destruye la sesión y luego se vacían las variables.com/scam-aol. 54 . coloca la función session_start() en cualquier parte que no sea la primera línea de proceso. téngase en cuenta este detalle.htm Aquí encontrará artículos interesantes acerca de robos. confeccionará en el práctico se basa en una versión 6 de PHP aunque podría funcionar perfectamente en la versión 5 de PHP. distribución de correos masivos. Por tanto. Estos valores podrían ser los datos del usuario u otro tipo de información. acopio de claves. de un carrito de compras. mi recomendación es utilizar ésta última técnica. etc. compras con identidad de otra persona.Cursos para compartir lo que sabes Importante: En las versiones 5 en delante de PHP y algunas apariciones de las versiones de 4. como por ejemplo. se requiere de una operación sencilla. se recomienda utilizar como primera línea la función session_destroy() que permitirá destruir la sesión creada y luego agregar las variables para proceder a vaciarlas.. Si Ud.vsantivirus.mailxmail . Para evitar este inconveniente. al pasar a otra página el estado se pierde. bloqueos y jaqueo de toda clase. el seguimiento de una sesión.. Dado que las páginas son estáticas. informáticos. Suele recomendarse para garantizar el cierre de sesión. Los piratas informáticos toman estos recursos para perpetuar delitos tales como estafas. Estas mismas. Por tanto. será la primera línea de proceso que debe ejecutarse antes que todo el cuerpo entero del archivo fuente. Es decir. Para eliminar la sesión. Para permitir que la sesión se preserve todo el tiempo. La carga de dicha función debe colocarse en la primera línea de código embebido en una página dinámica PHP o estática HTML combinada. timos. la operación de las sesiones no podrá ser controlada correctamente y puede que ni siquiera le funcione la sesión. Todos ellos deberán permanentemente ser cargados. Visite el sitio http://www. comparados. se hace necesario cargar la función session_start() en cada una de las páginas que se requiera operar con variables de sesiones llamadas $_SESSION[‘varEjemplo’]. Por tanto. violación de cuentas bancarias. PIN y todo lo concerniente a mecanismo de identificación.. etc.1 de PHP. una operación determinada. sus movimientos sin olvidar cargar la función session_start() previamente. las variables podrían aún tener valores residuales. Por tanto. etc. ayudan a preservar los valores o datos de la sesión.

Algunas empresas que tienen registrados a sus empleados.Cursos para compartir lo que sabes 13. el administrador del sistema y su aplicación. 55 .mailxmail . En nuestro caso particular y nuevo que incluiremos en el siguiente modelo. el usuario podía identificarse y acceder a su membrecía. Detalles Operativos de la Gestión de la Membrecía A continuación voy a describir cómo funciona el nuevo prototipo que propongo en esta práctica que hará más tarde a continuación. si el control y gestión del perfil de la membrecía debiera quedar absolutamente en manos del administrador o moderador de membrecías. cambiar su contraseña y acceder a su recurso. Le sugiero que analice el siguiente diagrama de flujo. Sofisticación del Sistema de Sesiones En la práctica pasada construimos un sistema de control de sesiones al que podríamos llamar básico y extremadamente sencillo. En pocas palabras. Un administrador de membrecías. incluye la posibilidad de que el usuario pueda gestionar algunos controles básicos y específicos de su perfil. Sin embargo. antes haremos algunas puntuaciones en determinadas fases de este nuevo sistema. porque el control total aún lo seguirá teniendo el administrador de la membrecía. el prototipo. Control de Membrecía y Gestión para el Usuario En el primer prototipo que desarrollamos. es decir. Por ejemplo. que hayan generado conflictos sistémicos. carece de control de gestión para el usuario. parte de esta gestión debería hacerlo el administrador de la base de datos o el responsable de dicha aplicación. Digo básicos. podría bien cubrir otro tipo de necesidades. carece de ciertas funcionalidades las cuales incluiremos en esta sección. que no se utilizan o por otras razones o características. el usuario no podía registrarse como un nuevo usuario y ni tan siquiera podía cambiar o recuperar su contraseña si este la olvidaba. lo cual en términos específicos. el usuario tan solo podrá darse de alta. Cabe señalar que este mecanismo primario que hemos desarrollado. regulan esta política habitualmente. Aquí la necesidad implica que los datos de la membrecía son extremadamente sensibles y que debe haber un responsable que medie dicha gestión. podría dar de baja a perfiles que no son deseados. No obstante. Sin embargo. Si analizamos de fondo esta aplicación. Por tanto. no sería demasiado funcional para un usuario remoto.

En los casos donde el usuario decide recuperar su contraseña perdida u olvidada. puede encontrarse en algunas de las siguientes necesidades: Ser miembro de la membrecía Desea iniciar la sesión normalmente No recuerda la contraseña.Cursos para compartir lo que sabes La inclusión del módulo de decisiones múltiples resulta conceptual.mailxmail . carecería de efecto. existe una tercera opción y es la de no hacer nada. El usuario ante la interfaz. incluso. esta tercera opción. el usuario necesitará estar seguro que los datos que se le notifique sean correctos y que además sean seguros. proceder a recuperarla y cambiarla si es posible Desea cambiar su contraseña por razones de seguridad No ser miembro de la membrecía Desea poder Registrarse Por tanto. Sin embargo. el módulo de múltiples decisiones opta por tres opciones. Resulta quizá la más evidente pero es necesaria enumerarla aquí también por una cuestión práctica y funcional. en caso de registrarse. En la práctica y por 56 . Queda claro entonces que aplicando el sentido en común. Las primeras dos opciones son las que incluye el módulo y las que detalle en las viñetas.

no he incluido un módulo de seguridad. De esta forma. Véase el siguiente diagrama de flujos para ver cómo se implementaría este sistema de seguridad por correo electrónico. Es más. El módulo de seguridad implicaría que al usuario se le enviase los datos a su casilla de correo. el administrador ni tan siquiera. podrá conocer la clave del usuario dado que esta está cifrada con un algoritmo que no permite descifrado. por otro lado. la aplicación no garantiza esa seguridad operativa. sistema y usuario. Debe entender que esta práctica se trata de un desarrollo experimental para que aprenda a desarrollar sistemas como estos. resulta ser una excelente opción.Cursos para compartir lo que sabes se le notifique sean correctos y que además sean seguros. resulta importante aplicar seguridad operativa y el uso de casilla de correo. es decir.mailxmail . queda en un total y absoluto secreto entre ambos. En estos instantes. 57 . En la práctica y por cuestiones funcionales y pedagógicas. Sin embargo.

deberá configurarlo incluyendo usuarios o cuentas de correo para que pueda operarlo de forma apropiada. en su servidor local. la inclusión del correo implica que nuestra aplicación cambie algunos aspectos funcionales. En el modelo del servidor. el servidor de escala requiere de un software más sólido y es muy probable que piense si lo que su Hosting le ofrece no resulta ser mejor opción operativa. Lo interesante de este modelo es que Ud. Se trata de un servidor pequeño para propósitos de baja escala. podría ser más que suficiente utilizar una solución de tal porte. Por empezar. No obstante. El usuario podría actualizar sus datos. Sin embargo. puede contar con un sistema de correo que puede resultarle útil para otros desarrollos paralelos.mailxmail .Cursos para compartir lo que sabes Herramienta para el Envío de Datos por Correo Electrónico El servidor que soporta el motor de transacciones de transferencia de páginas Web debe incluir un módulo que administre un servidor de correo electrónico. En caso que desee implementar el módulo adicional para el servidor Apache. es decir en el Hosting. Resulta sencillo de instalar. su casilla de correo u otros datos adicionales presentes. cuenta con un motor de correo electrónico y bastará configurarlo según las recomendaciones que su Hosting le indique. según lo que Ud. los cuales incluye la dirección de la casilla de correo y otros datos personales del usuario. se debe crear una tabla nueva que implique una serie de requisitos fundamentales.. No obstante. podrá utilizar un software de administración de servidores de correos que se complementa perfectamente con el lenguaje PHP conocido con el nombre de PHP Mailer. no cuenta con esta herramienta y se hace necesario instalar un módulo adicional de administración de correo. En un caso tan particular como el que mencionamos aquí. Integración del Correo Electrónico al Envío del Correo con los Datos Contando con el software adecuado para administrar el servidor de correo electrónico. En conclusiones. 58 . Este nexo permite tener los datos de los usuarios separados de lo que concierne a las cuentas para los usuarios.. Finalmente. A continuación analizaremos el siguiente sistema que muestro debajo de este párrafo. pretenda hacer. como por ejemplo. Esta tabla debiera anexarse a la tabla que administra los perfiles de la membrecía.. estará listo para enviar los datos a una cuenta de correo deseada. deberá analizar estos aspectos detenidamente y. Ud. obviamente.

Deberá completar los datos sin omisiones para que el registro se complete de forma correcta. Bien. La tabla users contiene otros campos más de información. Si el nombre es 59 . Cuando un nuevo usuario desea registrarse. Ahora bien. como por ejemplo. es decir. El campo name de la tabla auth se relaciona con el campo idName de la tabla users en forma de 1 a .Cursos para compartir lo que sabes La tabla auth contiene el nombre de usuario y la contraseña. por otro lado. Esta política evita que un determinado usuario de la membrecía no pueda duplicarse. suponiendo que los datos son correctos y se han registrado correctamente. los mismos. el nombre apellido y el correo electrónico. serán útiles durante el proceso de recuperación de la contraseña. no podrá dejar en blanco la contraseña y no podrá dejar sin especificar la casilla de correos. Analicemos cómo realmente funcionaría este sistema automático de envío de contraseña mediante el correo electrónico. inicia un proceso de alta. el sistema le pide que ingrese el nombre de usuario. El sistema se vale de esta valiosa información para poder comunicarse con el usuario en caso de ser requerirlo. de uno a varios. el nombre de usuario no podrá duplicarse. El usuario inicia un proceso de recuperación de su contraseña puesto que la ha olvidado. Estos datos resultan ser obligatorios. Por empezar. La tabla auth está relacionada con la tabla users.mailxmail . tenemos la tabla users y sus campos.

Cursos para compartir lo que sabes válido.Nueva Contraseña". $message . // Datos que proviene de la consulta de la base de datos $user = "user". $headers). $message .com". por ejemplo. muestro un extracto de código que podrá ser utilizado para el reenvío del correo con información para el usuario. Más tarde. // Preparar la carta . La activación permite evitar que los envíos de las nuevas contraseñas no queden de forma inconsistente. A continuación le dejamos los datos. comuníquese con el administrador del sistema. Mientras que el usuario no responda al correo. Mayor Seguridad Operativa ~ Activaciones de Cuentas En algunos sitios para garantizar mayor seguridad se utiliza un sistema de reenvío y de activación.= "Le recordamos que hemos actualizado su contraseña nueva. Una vez que la contraseña nueva generada por el motor es almacenada. por favor. $subject. $message. El nombre de usuario y la contraseña nueva. En pocas palabras. // Enviar el correo electrónico.= "Cualquier inconveniente. Por tanto. lo que es peor aún.. cualquier error podría resultar en fatalidad. El siguiente acto. La activación sencillamente consiste en verificar que el correo que le ha sido enviado al usuario lo responda. $pass = "123". $message = "Nueva Contraseña\r\n". se procede al envío de los datos al usuario por medio del correo electrónico.Compose $to = "usuario@miserver. A continuación. El envío consiste en dos datos fundamentales. mail($to. que el correo enviado falle su recepción o.Clave de Envío Nueva".". 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 operación. el cambio se mantendrá substancialmente hasta que el usuario active el cambio. El usuario podría perder el acceso a su membrecía. el usuario podrá cambiar la contraseña nuevamente si así lo desea.\r\n".mailxmail . $message . que el servidor esté caído en ese.= "Nombre de usuario: $user\r\n". bastará para el usuario.= "Contraseña: $pass\r\n". 60 .. $headers = "From: Librería Virtual . $subject = "Asunto . la activación resulta ser un proceso recomendado para asegurarse que la recuperación de la contraseña se realiza de forma satisfactoria. $message . El envío de los datos por correo electrónico hace que el mecanismo se conforme dentro de un escenario más privado y seguro. el ingreso a su cuenta de forma satisfactoria.

si Ud. se supone. Algún mal intencionado.Cursos para compartir lo que sabes satisfactoria. Este número es mostrado en pantalla de forma aleatorio y resulta difícil de copiar por los medios tradicionales copy & paste. 61 . el sistema. Véase el siguiente diagrama para concluir con la idea de este sistema. Esto evita que se creen cuentas de formas cíclicas una tras otra. entiende que el usuario se ha notificado sin inconvenientes y que ha dirigido su respuesta de modo satisfactorio.. Tampoco pueden ser escaneados o leídos por medio de algún tipo de software OCR.mailxmail . Es por ello que se ha diseñado un modelo que evita estos potenciales peligros. Por tanto. es recomendable que tome estos recaudos y que diseñe un modelo seguro de creación de cuentas o membrecías. dejo a los usuarios de Hotmail por unas cuantas horas sin servicio para acceder y utilizar el recurso de correo electrónico. diseña un sitio donde se requiere de un sistema similar. quizá la más sencilla sería 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. Una de las victimas en el pasado fue Microsoft durante el servicio de correo electrónico de su proveedor tradicional Hotmail que facilitaba este tipo de procesos. De aquí en más. podría crear con un software. el sistema para el usuario resulta operacional. El mecanismo de activación más sencillo consiste en controlar de alguna forma la afirmación por parte del usuario. Otro mecanismo que es similar a la activación es la de generar un número aleatorio para ser utilizado como una llave secundaria de activación. Si bien. De esta forma. un motor generador de cuentas y hacer un desastre en el sistema. puede realizarse de muchas formas. La mayor caída del sistema por este tipo de ataques conocidos por su variante de ataque de denegación de servicios DoS ( Denegation on Service).

mailxmail .Cursos para compartir lo que sabes El modelo agrega como último módulo un proceso de control basado en evento y tiempo. el sistema le pedirá su activación y pondrá un conteo de 24hs para su activado. Si el usuario no procede con la activación sugerida. 62 . cancela el cambio de la contraseña y restaura la contraseña actual volviendo nuevamente al comienzo antes de que se produjera la transacción ejecutada. el servicio inmediatamente. Una vez que es notificado el usuario a través del correo electrónico.

interfaces y un proceso de interacción entre el operador (cliente) y el sistema. En esta oportunidad. E-business. Uno de los más conocidos es el carro virtual. deja una puerta abierta a posibles ampliaciones y. las ordenes peticionadas por los clientes remotos y otras cosas más. La compra online sugiere un modelo de seguridad puesto que la mayoría de las transacciones se hacen mediante estructuras de pagos virtuales. existen una serie de diversos sistemas que permiten establecer un mecanismo de mercado de compras. sistemas financieros. Se trata entonces de sistemas regionales o internacionales. La interfaz debe facilitar el uso al usuario y tiene que ser lo menos compleja posible. aunque existen otros también interesantes tales como las finanzas y las transacciones bancarias online por citar algunas de ellas. etc. no solamente pedagógica. 63 . La seguridad funcional que permite que el sistema opere de forma satisfactoria y la de gestión. encargues. sino que a su vez..mailxmail . La seguridad puede sugerir sistemas robustos basados en modelos de cifrados. E-banking. permite pensar otras alternativas de modelación a media. Entre tantos términos técnicos como E-commerce. etc. Cada empresa sensiblemente puede hacer notar diferencias en la construcción y gestión del carro virtual. ¿Cómo Funciona un Shopcart – Carrito de Compras? La gestión de un carro de compras se trata de un modelo de ventas online que alberga una serie etapas de gestión que simulan una tienda de ventas con sus partes funcionales de forma virtualizadas. requiere de un modelo seguro operativa y sistemáticamente. Por tanto. no solamente de un modelo de manipulación sencillo. nuestro modelo que construiremos. A continuación se muestra un esquema del circuito operativo del carro virtual. Resulta importante señalar que el prototipo que ensamblaremos carece de ciertas etapas por una cuestión. el proyecto. estafas. ya sea o bien. seguimientos. La seguridad debe contemplar muchas áreas. por tarjetas de crédito o débito. han surgido una serie de nuevos sistemas de mercado online que facilitan la distribución y venta de productos a lo largo de grandes localidades. lo consideraremos como un modelo universal. los registros de clientes o membrecías. Eso requiere de seguridad extrema y depende del modelo de operación comercial. Las interfaces tienen como objeto mostrar e interactuar con el operador a los efectos de generar acción. ensamblaremos un carro virtual. ¿Qué es el Mercadeo Electrónico? A lo largo del nacimiento de las tecnologías de las comunicaciones. No obstante.Cursos para compartir lo que sabes 14. etc. etc. lo que en cierto modo. sino más bien por una cuestión de estrategia y de sistema. El prototipo incluye base de datos. Las bases de datos albergan los productos que se ofrecen. etc. los registros de los administradores de la gestión de venta y stock. que evita los fraudes. finanzas. regiones y el mundo en general. cuentas bancarias. páginas seguras mediante sockets. tal es el caso de la Internet. reconocimiento en tiempo real de credenciales o saldos. La operación del carrito de compras requiere un tratamiento especial.

. En esta instancia. el producto estará reservado. La carga pasa el producto seleccionado a una etapa de reserva temporal en tiempo real. De mientras. la secciónCarga en el Carrito los “ Productos”. A diferencia de 64 . simplemente describe el accionar normal de las operaciones de elección que la interfaz brinda. Según el producto que busca el cliente. Esta instancia la llamamos carrito virtual. puede optar por elegir o no el producto para su compara. El cliente podría optar por pagar vía electrónica mediante tarjeta de crédito o débito. se verifica el tipo de pago. procede a accionar un mecanismo de carga. las cuentas electrónicas tales como Pay-Pal o similares. Verá que existe una opción en el diagrama representada como “Cancelar”. el cliente. Por un lado. Dentro de esta posibilidad. Por otro lado.mailxmail . se almacenará en la base de datos en la tabla Orden el pedido que el cliente desea. sucederán dos cosas a la vez. El cliente. Notará que. o podría. La interfaz. el cliente aún puede optar por cancelar todas las operaciones o aceptarlas. que encarga y compra el producto. se supone entonces. cuentan con un sistema similar basado en el saldo de dicha cuenta. se especifica los datos personales del cliente y los que él desea negociar para su entrega. agregar a su lista de pedidos. donde además. Existen muchos sistemas de verificación de cuentas y fondos bancarios.Cursos para compartir lo que sabes El circuito que observamos en el esquema resulta ser básico y universal. hay una etapa llamada “Prepara la Orden para la Venta”. bien hacer el pago mediante reembolso Cash “efectivo” más servicios adicionales si así la empresa le exige. Así mismo. Si observa el diagrama. el mismo. etc. cabe la opción de descartar el producto que ha seleccionado y optar por otro de su conveniencia o descarta todas las operaciones. se presenta en su pantalla con detalles específicos o suntuosos. el cliente podría estar buscando otro producto más si lo desea. Si encarga el producto. está conectada a la tabla Catálogo de la base de datos de la Librería. La opción que es representada como “Procede”. El sistema de pago online de tarjeta de crédito o de débito es en tiempo real dado que la tarjeta está conectada virtualmente al sistema nervioso de base de datos de la financiera. incluso. solicita un producto y busca a través de los filtros que ofrece la interfaz. Este último método suele ser menos complejo de controlar que el sistema de dinero virtual. Dentro de este despliegue de detalles. Si acepta las opciones. si sigue observando. En el caso de que elija el producto. con cuenta electrónica. La verificación de fondo del cliente resulta en todo un tema de seguridad y de desafío.

sea cual fuere el sistema operativo de este mecanismo. dependerá en grado de la fidelidad del sistema del carrito pero también del sistema de acreditación y su interacción. El administrador podrá informar al cliente que no tiene autorización para su compra. de hecho. A continuación muestro una esquematización basada en el lenguaje UML (Unified Modeling Language) que resulta en un estándar internacional. la responsabilidad de que el sistema opere seguro tanto para los clientes. permite la preconstrucción de clases que permiten facilitar los pasos para el desarrollo de las futuras aplicaciones e. es notificado en caso de que el cliente no tenga autorización para la compra o tenga embargos que traben la operación comercial. incluso. Por tanto. En ingeniería del software resulta ser muy útil y versátil. las autorizaciones se hacen en tiempo real y virtual. En síntesis. la documentación del software de forma eficiente y eficaz. Diagramación de Caso de Uso con UML – Estándar del Sistema de Carro de Compras 65 . las cuentas bancarias virtuales tiene como mecanismo de autorización el monto de caja de dicha cuenta.Cursos para compartir lo que sabes las tarjetas de crédito o de débito que verifican si el cliente tiene autorización para la compra. las cuentas Pay-Pal no financian y estriba su control a través del saldo asentado en el banco virtual de caja. Mientras que una autorización de tarjeta implica un “préstamo” online con sus costes operativos. este mecanismo de informes y seguimientos son totalmente virtuales. UML permite desarrollar todo tipo de proyectos con amplias cualidades de diseño e interacción. El administrador de la base de datos de la librería. No obstante. es un tema delicado y debe ser estudiado muy detalladamente. como para el acreedor y los vendedores.mailxmail . Por tanto.

quizá también. pero que universalmente resultan ser económicas y altamente funcionales. requiere de un modelo de distribución de librerías de soporte que pueden no alinearse correctamente dentro de los estándares del software y aumentar así los riesgos críticos de soporte de software de sistemas. se gestiona por separado pero se sincronizan entre ambos para que operen como si fueran uno.Cursos para compartir lo que sabes 15. quizá no encontremos una interfaz enriquecida. tendrá la oportunidad de ensamblar. También. Por ejemplo. la firma Adobe ha integrado tres de sus productos de desarrollos de sistemas para componer 66 . ha desarrollado ASP con tecnología de lenguajes embebidos en el código HTML. 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. Más tarde y con la llegada de la arquitectura NET Framework. Algunas firmas han incursionado en estás áreas de integración. el software estándar permite la construcción de soluciones. El beneficio del código libre facilita estas particulares formas de distribución y desarrollo de sistemas. Algunos desarrollos poseen objetos tales como grillas e interfaces gráficas más sofisticados que pueden ser utilizados para la construcción de interfaces más ricas y con cierto grado de sofisticación funcional. En el caso de desarrollos altamente estandarizados. lo que en cierto modo puede beneficiar soluciones más económicas y funcionales. No obstante. Tales capas de desarrollos y de distribución merecen un estudio tanto en materia de costes como en materia de sistemas. la distribución hacia los clientes de sus librerías para su correcto funcionamiento. interacción. quizá no muy vistosas. sino más bien. el software estándar permite el desarrollo y la inclusión de partes enriquecidas.NET que es un acrónimo de ASP pero que opera con un sistema de lado de código llamado Code-Behind. Esta técnica de inclusión no es una novedad del mundo del software estándar. Además. Cada una de estas alternativas tiene sus pros y sus contras. El uso de los mismos requiere de librerías compiladas las cuales deben ser distribuidas para su correcto funcionamiento. pero por otro lado tendremos un alineamiento más cercano al estándar del software que nos brindará un servicio funcional sin la necesidad de pensar en software de librerías y soporte de otras características e índole. puede resultar significativamente más económico. el coste de desarrollo y de su distribución. facilidad de construcción y desarrollo resultan en soluciones que requieren el uso de licenciamientos y de un lenguaje o software especial para su desarrollo y. he construido un carro de compras que en breve. Todo ello no solamente resulta ser costoso.mailxmail . sino que además. Microsoft Corporation TM. El código no se embebe en el código HTML. Bajo este lineamiento. La alta integración permite componer interfaces más enriquecidas y un nivel de interacción más sofisticada y sutil muy similar a las soluciones de infraestructura enriquecidas. entre otros lenguaje que se basan en la arquitectura Framework NET. tal como mencione al comienzo de esta discusión. Microsoft Corporation TM ha desarrollado ASP. su valor agregado de detalle gráfico. En el caso de las interfaces ricas. Este tipo de desarrollos pueden ser construidos con Visual Basic NET o con Visual C#. Soluciones para la Construcción de Carros de Compra La moderna tecnología proporciona varias alternativas para desarrollar sistemas de carros de compras.

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

68 .Cursos para compartir lo que sabes normalizaciones.mailxmail . Los beneficios siempre estarán a su alcance muy prontamente.

suponga que Ud. en cada uno de los archivos de las páginas HTML o PHP tan solo se cuenta con una línea de script para JavaScript. En cambio. Lo peor que pudiere ocurrir es la necesidad de tener que corregir algún algoritmo de su código. Diagramación de Clases con UML – Desarrollo de un Clase para Base de Datos 69 . Así mismo. Por tanto. lo que en cierto modo implica mayor trabajo. De hecho. El diagrama de clase está hecho con ArgoUML. Organización del Embebido. Sin esta técnica. incluso. A continuación. Entre otras estandarizaciones que justifiquen la reutilización de código. debo mencionar la clase de datos que he construido para hacer funcional la página del catálogo. debiera repetir la misma función para cada página interviniente. dejo el esquema en UML de la clase de datos que he utilizado en este proyecto para que la analice y estudie. Aquí vemos otra aplicación de reutilización de código. Por lo tanto. el proyecto en si. tendría que hacer la corrección en cada uno de los archivos donde haya incluido esta función. las secuencias de comandos en cada una de las páginas creadas. al contar con un archivo centralizado.. la modificación se hace tan solo una vez. Dentro de esta clase. podría construir otro tipo de clases abocada a filtros específicos. De otro modo. Esta modalidad no resultaría del todo agradable y quizá sería propensa a crear todo tipo de errores. utiliza un archivo de dependencia que integra todas las funciones para todas las páginas de la aplicación. El archivo externo contiene todas las funciones que la aplicación necesita. es decir. la reutilización del código resulta una vez más en un paso gigante a la estandarización del desarrollo del software. Dentro de todas estas ventajas. las hojas de estilos que dan formato a toda la aplicación se encuentran centralizadas a igual que las secuencias de comandos de Javascript. aumenta también la complejidad. no resulta profesional. se tendría que haber escrito el código de Javascript. mediante una herencia de clases o de interfaces. necesitara una determinada función para más de una de las páginas de su aplicación.Cursos para compartir lo que sabes 16. ABM o todo el soporte para manipulación y gestión de tipos de datos de su proyecto.mailxmail . Por tanto. Esta es la ventaja de la reutilización del código del software. Reutilización de Código Para facilitar el desarrollo y optimizar el código. se encuentran una serie de funciones específicas y que pueden ser reutilizadas para cualquier página que un proyecto solicite como útil. Si esto sucediera. esta clase podría ser extendida y. aumenta considerablemente el tamaño los archivos HTML y PHP.

También. despachar dichas compras personalmente o automatizarlo.Cursos para compartir lo que sabes Algunas Consideraciones de Ampliación de este Proyecto Este proyecto no está completo como señale al inicio de esta discusión. el proyecto podría 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. Deseo librarlo a su imaginación. La escala del proyecto es grande y solamente resta encontrar las necesidades pertinentes e imaginar los módulos o elementos para incorporarlos a dicha aplicación.mailxmail . etc. bien. El administrador puede despachar las órdenes. En materia de ampliación. actualizaciones diversas de dichos productos. etc. por qué no.. etc. 70 . Es por ello que lo invito a que experimente con posibles ampliaciones de este proyecto. El seguimiento de facturas. pueden ser objeto de inclusión a este proyecto. podría controlar el stock de la librería en caso de reposición de nuevos libros. El proyecto contempla esta inclusión posible para administrar la gestión de órdenes. mejore esta aplicación en su totalidad. Buena suerte. le incorpore etapas según sus necesidades y. de embarques de envíos. discontinuidades. controlar los saldos bancarios de los clientes. Un administrador accedería a la tabla de órdenes y podría o.

entre otros. conoceremos los detalles que atañen a Dreamweaver. sin la necesidad de depender de estas herramientas específicas. existen gestores para servicios FTP que pueden ser útiles tales como CuteFTP. el sistema utiliza el mismo mecanismo de transferencia. Cabe señalar que entre versiones pasadas de Dreamweaver hasta la actual. en el mercado existen otras soluciones similares a Dreamweaver o que. existen otras soluciones que pueden cumplir la misma función. 71 . dado que es el entorno de desarrollo de páginas Web que hemos venido utilizando hasta el momento. Cómo Funciona el Servicio FTP Por empezar. siguen el lineamiento de los sistemas basados en el servicio FTP. contamos con un administrador para la publicación de sitios Web. tales como aplicaciones basados en el sistema FTP (File Transfer Protocol) o (Protocolo de Transferencia de Archivos) con algunas características específicas para la publicación de los desarrollos Web en el sitio. Eso dependerá en grado del tipo de aplicación que estemos utilizando. el servicio FTP puede tener un uso tan básico y quizá avanzado según sea la necesidad. Dreamweaver no ha sufrido muchos cambios pero si el agregado de herramientas y un asistente dinámico en su aplicación.Cursos para compartir lo que sabes 17. En ambos casos. suelen operar con determinadas herramientas y. que es la versión CS4 y casi a la postre de lanzarse la versión CS5. como métodos alternativos. el servicio FTP es muy utilizado para la transferencia de todo tipo de archivos y recursos en esta y otras aplicaciones. No obstante. En nuestro caso particular. Otra cosa que deseo puntualizar también es que. Sin embargo. nos recomiendan el uso de Dreamweaver o el uso de sus propias aplicaciones para la publicación del material Web. Aplicaciones para la Publicación de Sitios Web Si bien cada proveedor de dominios o hosting Web pueden proveer herramientas propietarias. En nuestro caso particular.mailxmail . También haré un detalle del servicio FTP básico y cómo este funciona. En el caso de Dreamweaver. por otra parte. en muchos sitios de hosting donde publicamos el material Web. a veces.

El servicio FTP utiliza diversos tipos de comandos y parámetros para su uso. antes de distribuir nuestros recursos y publicarlos al sitio Web. A continuación. que a su vez. El uso de dichos comandos más sus parámetros. muestro una captura bajo consola de los comandos y parámetros del servicio FTP para el sistema operativo Microsoft MS-DOS. lo cual y en síntesis. El servicio de transferencia de archivos FTP solo permite transferir archivos. no soluciona la reubicación correcta de cada uno de los recursos en el sitio Web como corresponde. UNIX o la familia de sistemas operativos como LINUX o SOLARIS de la ex firma Sun Microsystem. Esto supone cierta ventaja operativa de FTP. Gran parte de estos comandos son muy utilizados en sistemas operativos como UNIX. la transferencia de los recursos o archivos. la procedencia de dichos comandos en el servicio FTP deriva de UNIX. actualmente Oracle CorporationTM. Resulta importante señalar que existen aplicaciones especiales que utilizan los servicios FTP para la transferencia de de datos y. El uso de las herramientas de FTP es utilizado bajo consola. En conclusiones. se encargan de crear las carpetas en el sitio de forma automática sin la intervención manual del usuario para determinadas áreas específicas. debemos realizarlo de forma manual o a través de un utilitario complementario que permita crear la distribución adecuada de nuestros recursos.mailxmail . 72 . deberemos crear primero la estructura de distribución estratégica del sitio para poder reubicar todos nuestros recursos del proyecto en el sitio Web. MS-DOS de la firma Microsoft. requiere de ciertas habilidades por parte del operador y un cierto conocimiento de sistemas operativos bajo consola. Por ejemplo. En su lugar.Cursos para compartir lo que sabes Esquema del Sistema para el Servicio FTP (Transferencia de Archivos) – Cortesía Wikilearning Sin embargo. no incluye la transferencia de carpetas y su ruta original más su estructura estratégica distribuida en nuestro proyecto. Por tanto.

mailxmail . Notas: 73 . -a Usa cualquier interfaz local para vincular una conexión de datos. -d -g Activa la depuración. -n Suprime el inicio de sesión automático cuando se establece la conexión inicial. -A Inicio de sesión anónimo. FTP se puede usar interactivamente. Desactiva el uso de comodines en nombres de archivo (ver GLOB). -b:cuenta async Invalida la cuenta asíncrona de 3 -w:tam_ventana Invalida el tamaño del búfer de transferencia predeterminado (65535). host Especifica el nombre del host o la dirección IP del host remoto al que se conecta.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). los comandos se ejecutarán automáticamente cuando FTP se inicie. FTP [-v] [-d] [-i] [-n] [-g] [-s:archivo] [-a] [-A] [-x:búfer_envío] [-r:búfer_recep] [-b:búfers_asínc] [-w:tam_ventana] [host] -v Suprime la presentación de las respuestas del servidor remoto. -x:búfer_envio Invalida el tamaño de SO_SNDBUF predeterminado (8192). -s:archivo Especifica un archivo de texto con comandos de FTP. -i Desactiva la intervención interactiva del usuario cuando se transfieren varios archivos. -r:búfer_recep Invalida el tamaño de SO_RCVBUF predeterminado (8192).

el servicio FTP puede ser FTP Cliente o FTP Servidor. por el otro lado. La transferencia. es un tema que ha de analizarse con detalles.Los comandos mget and mput aceptan s/n/c para sí/no/cancelar. por un lado la ventaja de garantizar la conexión y la negociación entre el cliente y el servidor y. Solo requiere especificar el nombre de usuario. la carga y descarga de todos los archivos. mientras que el puerto 20. el consumo de ancho de banda por sucesivas peticiones. Por tanto. una mala que es la inseguridad y más en un ambiente como la Internet. El servicio FTP Servidor utiliza las mismas herramientas que el Cliente pero está dotado para atender muchas demandas. El puerto 21 es por defecto dado que se trata del puerto de negociación para el control y la transferencia. podría tratarse de carga (Upload) o descarga (Download) de los archivos. Por tanto. 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. posee un firewall. También cabe señalar que se requiere asignar los puertos de usos 20 y 21 respectivamente. El comportamiento del FTP Cliente resulta ser sencillo. El nombre del servidor puede tratarse del nombre DNS (dominio o nombre canónico) o de una dirección IP. El servicio FTP Cliente puede operar de dos modos distintos. 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. deberá habilitar ambos puertos para su uso. la contraseña. El uso del servicio FTP requiere del uso de inicio de sesión dado que debe tener acceso y privilegios para proceder con la transferencia de archivos hacia el servidor. Si Ud.Cursos para compartir lo que sabes . en este caso..mailxmail . 74 . se encarga de la trasferencia del recurso. el nombre del servidor y el archivo o recurso que es requerido para dicha transferencia. . tanto de bajadas de datos (Downloads) como de subidas de datos (Uploads). La diferencia entre ambos estriba en las formas en cómo negocian los paquetes de datos de la transferencia y el intercambio de puerto entre el Cliente y el Servidor. Esto tiene dos lecturas.Use Control-C para cancelar comandos. Un modo es conocido como Activo y el otro como Pasivo. La desventaja quizá que pudiera surgir de esta propuesta es. o sea.

se trata de un tipo de modalidad para configurar su publicador Web. se trata de un servicio que permite ejecutar aplicaciones directamente en el servidor remoto. el servidor podría desconectarse y las aplicaciones podrían aún seguir funcionando. Además. el objetivo de control de los mismos. 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. A continuación describo dichos métodos. Publicación Mediante FTP o RDS Figura 1 – Ventana para Configurar el Servidor Remoto Este mecanismo de publicación utiliza los servicios de FTP o de RDS. salvo claro está.mailxmail . Con Dreamweaver podemos utilizar dos servicios para la publicación que es el servicio clásico FTP. cada una de sus conexiones. según las configuraciones que imponen su servidor o hosting. Como puede apreciar en la imagen de la figura 1. podrán tener distintos nombres para su identificación. otro método propietario de Dreamweaver. El sistema RDS (Remote Desktop Server). Por tanto. La personalización de dichas configuraciones le permite al cliente poder obtener un proceso de control y configuración más granular y refinado. Alternativas de Publicación de Páginas Web con Dreamweaver Si bien las versiones más antiguas de Dreamweaver carecían de ciertas herramientas para la publicación de páginas Web o resultaban no del todo efectivas. 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 específicos. También es posible lograr el efecto contrario. el que describí recientemente y. en la versión CS4 podemos encontrarnos con una serie de herramientas bastante interesantes. 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 más importantes y de soporte. 75 .Cursos para compartir lo que sabes 18.

También. Más abajo. También tiene una opción para utilizar el moderno protocolo IPv6 que tiene muchas mejoras respecto a su antecesor IPv4. Ud. El botón Compatibilidad de Servidores es utilizado para mejorar las comunicaciones entre el cliente y el servidor remoto.. Aprovecha la tecnología del protocolo de seguridad SHH (Secure Shell) entre otros. Normalmente. se debe escribir el nombre y la ruta de origen del servidor donde se encuentra disponible el servicio FTP. Estas carpetas pueden variar según el tipo de servidor de Host. Verá que la primera opción. permite establecer una conexión que aproveche las utilidades de la modalidad Pasiva. Por ejemplo. puede especificar si va a utilizar el servicio de FTP o el servicio de RDS. podemos ver varias opciones que son para tipos de conexiones más específicas. etiqueta del primer campo de la ventana Configurar servidor. La ruta podría ser por ejemplo ftp. Donde dice Tipo de acceso.. se coloca el nombre de la carpeta en el servidor del Host donde se publicarán los archivos para el sitio Web. Por último. Ud. etc. son los elementos para la identificación y el inicio de sesión. que generalmente puede ser localhost. Solo es utilizado en casos especiales y salvo indicación del propio hosting o proveedor del servicio de servidor remoto.com. Publicación Mediante el Asistente de Dreamweaver 76 . donde dice Prefijo URL es utilizado para colocar o bien el sitio Web directo desde la Internet o el servidor local. En donde dice Servidor FTP. el servidor o proveedor del Host nos sugerirán cuáles son las carpetas que deberemos utilizar en el sitio Web.Cursos para compartir lo que sabes Dichos nombres son colocados en donde dice Nombre. la carpeta podría ser/http_pubs/ o /httpdocs/.dominio. En los siguientes campos Usuario y Contraseña. En donde dice Directorio del Servidor. El sistema FTP seguro o SFTP (Secure File Transfer Protocol) utiliza páginas de seguridad y tiene la ventaja de garantizar las transferencias de datos de forma más segura que el FTP tradicional puesto que evita que los datos estén tan expuestos en sitios tales como la Internet. También podemos ver optimizaciones para los Firewall el uso de FTP seguros. donde se publicarán los archivos.mailxmail . puede guardar el uso del usuario y la contraseña.

puede tratarse de un nombre válido y que permitirá identificar el nombre del tipo de conexión para la publicación del sitio Web. llamada Vínculos relativos. le recomiendo que no lo haga. deberá estudiarse su uso o no de Caché para esos casos tan particulares. Esta opción es utilizada para casos muy especiales. Eso sucede en equipos que tiene poca memoria en el sistema o recursos muy limitados. Luego existen dos opciones. 77 . Sin embargo.midominio. Lo normal es la primera opción puesto que los desarrollos suelen hacerse mayormente en sistemas locales. Más abajo. Cuando la casilla es tildada.mailxmail . En la ventana Carpeta raíz local. La última opción debe ser tildada para mejorar todos los movimientos que haremos con Dreamweaver durante el proceso de uso del entorno más las actualizaciones constantes que haremos sobre nuestro proyecto actual en tiempo de diseño.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. la carpeta podría ser C:\proyectos\missitios\banco. puede que para algunos casos. Suele ser marcada por defecto. Lo normal es que esta opción no se utilice y. la ventana donde dice Dirección HTTP se suele colocar o. carpetas locales o. de hecho. Por ejemplo. tengamos que desactivarla. es el lugar de los archivos de origen donde se desarrolla el sitio Web. el sitio Web donde se publicarán las páginas Web o el sitio del servidor virtual local. Para el caso de un sitio Web podría ser http://www.com/ o en caso de ser local podría ser como http://localhost/. La primera opción hace énfasis en el uso de mayúsculas y minúsculas. Las últimas dos opciones. Por tanto. resultan interesantes. el motor de verificación se activa y permite analizar si se procede a distinguir el uso de mayúsculas y minúsculas. se realiza directamente en el sitio Web propio. bien. para determinar si el vínculo de los archivos se realiza desde el sistema local. bien.

me refiero a FTP y hemos mencionado una tecnología más llamada RDS. Adobe siempre recomienda el uso de este modelo para la publicación Web.. Ahora bien. es decir. una herramienta que proporciona la firma Microsoft llamada Visual SourceSafe. Sin embargo. es de uso interno. Ya hemos hablado de una de ellas. La herramienta cuenta con la posibilidad de operar con el Framework de las tecnologías NET dado que Dreamweaver puede operar perfectamente con páginas Web basadas en ASP y ASP. existen más opciones o modelos de publicación. podremos observar una serie de opciones más abajo y una que dice Servidor de prueba. Lo normal es no utilizarlo y le recomiendo que lo utilice en casos donde la conexión con su servidor Web suele ser crítica. Por favor.mailxmail . sin embargo. Esta opción no suele ser muy utilizada por los usuarios de Dreamweaver.NET. ver figura 4. podría ser útil como un mecanismo de prueba del servidor de manera de constatar su perfecto funcionamiento. Las formas de cómo configurarlo no difieren mucho de las opciones de la sección del asistente de Dreamweaver. El tipo de Acceso le permite seleccionar el modelo de publicación. Esta herramienta debe ser instalada aparte dado que el propio Dreamweaver no la incluye de fábrica. llamada Datos Remotos.NET respectivamente. con las opciones que ofrecen Dreamweaver y su asistente. 78 . su uso dependerá en mayor grado de las características técnicas de su proveedor de servicio Web. La opción Local/red tiene uso exclusivo en redes Intranet corporativas donde el contenido es distribuido y explotado en una red local LAN. hace énfasis en el uso del sistema WebDAV que permite un mecanismo de publicación más segura y efectiva. Para ir cerrando. Generalmente. la limitación del tamaño o área de la página a desarrollar. Figura 4 – Tipos de Accesos Cabe señalar un detalle muy importante.Cursos para compartir lo que sabes Figura 3 – Ventana del Asistente de Dreamweaver – Datos Remotos Esta sección o ventana del asistente tiene mucha semejanza con la pantalla que podemos observar en la figura 1. hacen referencia a las opciones del entorno. Ud. El resto de las opciones de la sección Categoría. no todos los servidores son compatibles con la modalidad WebDAV y por tanto. Resulta ser sencillo de configurar y eficiente. etc. desde la sección Categoría. Las opciones son exactamente las mismas que describí en el primer caso. La tecnología de Visual SourceSafe está orientada al uso exclusivo del Framework . remítase a la descripción para el primer caso de modo de comprender esta pantalla actual que observa en la figura 3 respectivamente. cuenta con una serie de modalidades muy interesantes. Como podrá observar en el despliegue del cuadro combinado. Por último. Si bien ha sido propuesto por el consorcio W3C ( ord Wide Web Consortiun) y por IETF (Internet W Engineering Task Force). La firma Adobe. con el método de conexión a través del sistema FTP.

Esta doble verificación permite determinar si ambos procesos fueron satisfactorios. ante una situación de insatisfacción de la transacción. un caso de transacción muy común se produce durante un proceso de una venta comercial. ambos sentidos deben ejecutarse de forma correcta para que la operación resulte exitosa. Es por ello que en contabilidad. que la cantidad sea la correcta. como por ejemplo. Ambos procesos deben ser correctos. Transacciones. ambas reglas de juego para cada acción. que a su vez.Venta El cliente cumple la acción de pagar() y el vendedor cumple la acción de entregar(). por el otro lado. Eso mismo ocurre en los sistemas durante la transferencia de datos de un punto a otro. Figura 1 – Ejemplo Básico de una Transacción Comercial . Por un lado. 79 . Sea cual fuere el motivo. Fundamentos Una transacción se trata de un proceso de acciones duales que permite crear un proceso que sucede en dos sentidos y. el dinero debe cumplir ciertas reglas. el producto debe presentarse de una manera especial. En caso de error. se registra el movimiento. se dice que la transacción no es satisfactoria. Si se produce algún tipo de error en dichas acciones. Analicemos la figura 2. eso sucede a menudo cuando hay errores u otros tipos de desviaciones. En el caso de transferencia bancaria de dinero o valores. Los fallos. que el dinero resulte legítimo.mailxmail . entrega de la mercadería en tiempo y forma. para que la transacción se cumpla de forma satisfactoria. se registran los movimientos contables como salidas o como entradas. debe también cumplir ciertos requisitos. anomalías diversas. Por otro lado. en el caso comercial. etc. Por ejemplo. Por un lado. tal es el caso de valores o datos en pantallas que son cargados para ser almacenados en una base de datos. el proceso es abortado inmediatamente. mediante el debe y el haber. deben ejecutarse de forma correcta y libre de errores o ambigüedades. la operación debe abortarse cuanto antes. en una de ellas o en ambas. se produce un proceso de doble comprobación de saldo. el vendedor mediante la acción entregar(). En efecto. debe estar intacto. Ahora bien. etc. Por ejemplo. el cliente mediante la acción pagar() pagar().Cursos para compartir lo que sabes 19. se registra el dinero que pasa de una entidad a otra y. se pueden dar por defectos de reglas. que el pago se efectúe de forma presencial. Veamos la siguiente figura 1 para analizar este concepto. errores de sistemas o por malicia.

acceso a promociones. Saldo = Debe . Lo más importante siempre serán las ganancias. durante un proceso de transacción. aunque a veces y según la situación financiera de una empresa. en el caso de sistemas orientado a transacciones directas hacia una base de datos. la situación es totalmente al revés. se dice que el saldo es neutro cuando las cuentas equilibran o tienden a cero. En el caso de un cliente. falta de cobro o cliente que no abonan desde hace tiempo “morosos” o dinero que fue hurtado. Esta falta de beneficio en un balance anual se registra como “pérdidas”. El saldo se obtiene como se muestra en la figura 3. Se dice que el saldo es positivo cuando juega a favor de la entidad y en los balances se registra como “ganancias”. Se dice que es negativo cuando juega en contra de la entidad. en el caso de una entidad que vende productos. es decir. mal gastado o que giró en descubierto “pagar una deuda repentina o una reparación a último momento”. se registra como salida el producto y como entrada el dinero. positivo o neutro. por un buen negocio o por tener excedente de ventas. Verá que existe un vasto listado de ejemplos contables. Por último. En síntesis. depende del caso en cuestión. En el caso del Cliente. notará que ambos registran un proceso de entrada y un proceso de salida. En el caso del Vendedor. podría darse por comprar productos o pagar por ellos un costo menor de contado. Pese a los puntos de vistas de las entidades.Haber El saldo puede ser negativo. puesto que no es beneficiada. Las pérdidas puede darse por muchas razones. etc. se registra como entrada el producto adquirido y como salida el dinero pagado. en ambos casos. se tomara el saldo neutral para 80 . etc.mailxmail . el saldo es igual a cero pesos puesto que el proceso de la venta se cumplió satisfactoriamente. Para ir cerrando.Cursos para compartir lo que sabes Figura 2 – Registros Contables de cada Entidad y el Saldo como Comprobación de la Operación Si observa el extracto de registros contables de cada ente comercial del ejemplo. Existe un equilibrio comercial y es lo que persigue todo ejercicio contable en una empresa como requisitos mínimos e indispensables. Aquí no hay ni ganancias y ni pérdidas. puede que el equilibrio de sus cuentas impliquen un giro positivo en su ejercicio contable. Una ganancia es un beneficio que puede originarse por una venta oportuna “jugosa”.

En el caso de las transacciones complejas. Es decir. Los procesos de transacciones los podremos utilizar desde el pase de sus valores a una variable y mediante la función mysqli_connect(). Ambos métodos permitirán aceptar o cancelar todos los procesos dentro de escenarios de transacciones.mailxmail . eso mismo hace el sistema cuando ejecuta un proceso orientado a una tarea que requiere de supervisación en tiempo real. Esta función nos proporciona tres métodos y un conjunto de tres eventos relacionados entre sí. gestión de niveles de procesos y profundidad de aislación. Además. Si Ud. en el caso de que existan transacciones anidadas. entran en escena las transacciones complejas o anidadas. será también interesante poder detener o abortar un proceso en caso de que suceda algún error. para poder llevar un control y una gestión 81 .Cursos para compartir lo que sabes base de datos. Los métodos son los siguientes: Este método inicia un proceso de transacción. Rollback Nivel de Aislación – IsolationLevel Las transacciones pueden ser simples o complejas. AutoCommit las transacciones son directas y no pueden ser supervisadas para ser controladas por procesos exteriores.. debe darse por enterado. Sin embargo. en dicho proceso. El inicio de la transacción implica la activación en cierta forma de un escenario de supervisación. debe haber una suerte de interacción entre ambos puntos de negocio para que la comprobación y la acción sean efectivas. el dato debe guardarse y Ud. está dando una orden de guardar un dato. Este método es utilizado para descartar o abortar todo proceso desencadenado a partir de la supervisación o inicio de un proceso de transacción.. Si no se supervisa. requiere de un proceso de verificación dual. Commit Este método es utilizado para confirmar un proceso de supervisión y aceptar todas las reglas o procesos que sucedieron luego del comienzo de la transacción. la supervisión es gestionada de modo tal que pueden ser controladas exteriormente a través de los métodos Commit y Rollback respectivamente. En cambio. En efecto. MySQL propone un proceso de control de transacciones que pueden operar de forma supervisada o no. cuando se activan las transacciones. Transacciones en Sistemas de Gestión La supervisación de procesos en un sistema de gestión donde se almacenan datos en una base de datos. se tomara el saldo neutral para verificar la doble comprobación en un proceso bilateral. Cuando son simples son directas puesto que solo se trata de una supervisión sencilla de los procesos transactivos. puede que sea necesario realizar más de un proceso de supervisión y. durante un proceso de transacción. por tanto.

Analizar el Código de una Transacción con PHP para MySQL El siguiente ejemplo de código analizaremos cómo se implementan transacciones operativas en sistemas con PHP orientadas a MySQL. Veamos un ejemplo para que se comprenda bien este concepto. para poder llevar un control y una gestión de todos los procesos de supervisación. estos deberán resolverse desde el último nivel de aislación hasta el primero. debe resolverse el nivel 3. es decir. si se tiene tres niveles de profundidad de transacciones. para resolver el nivel 1.Cursos para compartir lo que sabes En el caso de las transacciones complejas. primero debe resolverse el nivel 2 y para resolverse el nivel 2. los niveles de aislación tienen prioridades. Los niveles son conocidos con el nombre de aislaciones o (isolates en voz inglesa). Por ejemplo. Estos niveles tienen cierto marco de prioridad por sobre las tareas de supervisión de cada uno de los procesos dados. no se podrán resolver los siguientes. ver figura 3. De esta forma. En consecuencia. hasta que el nivel 3 no se resuelva. Las prioridades permiten gestionar los niveles de aislaciones entre cada uno de los procesos de modo seguro y ordenado. se garantiza que cada proceso interno sea ejecutado de forma correcta y ordenada.mailxmail . se deberán ir resolviendo de forma escalonada cada una de ellas y en el orden de prioridades marcadas por la jerarquía de dichos niveles. una transacción contenida en otra. Es decir. si el software debe resolver los problemas en cada capa o nivel. ampliaré los detalles del mismo. 82 . Figura 4 – Niveles de Aislación de las Transacciones Para que expresamente comprendido este concepto. Debajo del código. Como señalaba recientemente. se requiere de organizar todo este conjunto de transacciones en niveles.

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

La función pasa el valor objeto a una variable que. La variable$resultes comparada en una estructura de decisión para determinar si el 84 . supone entonces. Ahora bien. /** Por último. Este comando podría tratarse de una inserción. se procede a cerrar la base de datos. que es utilizada para establecer el comando en cuestión. el nombre de usuario. en teoría claro está. se supone entonces. */ mysqli_close($dbh). por tanto se procede a ejecutar la función Commit. */ mysqli_commit($dbh). más tarde. al menos. cuya función. es utilizada para manipular el resto de las acciones directas hacia la base de datos y sus consultas dinámicas. cada comando pasará un valor tipo booleano a una variable que. una actualización o una eliminación de datos. roll back transaction } /** * Llegado a este punto de los procesos. la contraseña y el nombre de la base de datos. * * Por tanto. // if error. con la función Commit se asume que todos los cambios y los * datos son aceptados. La cantidad de comandos que se utilicen puede resultar en infinitas.mailxmail . si las funciones de Rollback * han omitido los procesos. * que los datos están listo para ser efectivos en las base de datos. se utilizará para determinar si el proceso de actualización o cambio ha tenido o no lugar en la base de datos. La variable de conexión llamada $dbh. ?> El código empieza creando una instancia de la función mysqli_connect(…). En el código. es utilizada como parte del parámetro de la función mysqli_query(…).Cursos para compartir lo que sabes * procesos de gestión para el comando declarado. Esta función contiene una serie de parámetros que son utilizados para establecer el nombre del servidor. */ if ($result !== TRUE) { mysqli_rollback($dbh). se enumera a modo de ejemplo dos comandos. que no ha habido errores * o que no se han interrumpido por alguna razón y. más tarde en el código.

esto mismo sucederá cuando luego de pasar por el resto de las estructuras del código se llegue al punto donde se encuentra la función llamada mysqli_commit(…). En efecto.Cursos para compartir lo que sabes valor resultante es verdadero o falso. si la variable equivale a Falso o False. En caso contrario.mailxmail . se encarga de cerrar la conexión hacia la base de datos y la liberación de los recursos del sistema. la función mysqli_close(…). supone entonces que los cambios deben ser aceptados. Por último y para ir cerrando esta descripción final del código. 85 . Esta función se encargará de confirmar todos los cambios realizados hasta el momento y ejecutarlos en el sistema para que estos se concluyan definitivamente. el proceso de actualización o cambio en la base de datos será descartado dado que la estructura de decisión forzará a que se utilice la función mysqli_rollback(…)que se encargará de deshacer todos los cambios que se hayan producido hasta el momento. En caso de que la variable tenga el valor Verdadero o True.

Multiples Querys – Permite una performance para la ejecución de múltiples consultas simultáneas en el código orientado a bases de datos. Actualmente están disponibles a partir desde las versiones 4. donde se requiera de transacciones operativas y la obtención de un código más robusto.php. se han incluido en las modernas librerías llamadas mysqli. la extensión más avanzada y con optimizaciones.net/mysqli/ En este sitio. hay partes donde los cambios fueron significativos y en otros aspectos. Para mayores detalles acerca de estas modernas librerías de MySQL llamada msqli. mejorando la construcción del código de forma más robusta entre otras características significativas. la empresa MySQL y junto a personas que desarrollan software de ingeniería en el GNU y otras organizaciones. No obstante. cabe señalar la detección y depuración de consultas mal desarrolladas o formadas en el código. en tres partes donde los cambios son muy significativos y que a continuación detallo. han incluido una serie de mejoras en estas y otras librerías.1 de MySQL en adelante como librerías más avanzadas y optimizadas. De todo el abanico de avances de ingeniería de estas librerías. por ejemplo. podrá encontrar detalles más suntuosos acerca de estas librerías y las recomendaciones más convenientes para sus desarrollos. Sin embargo. desde hace tiempo. dichos cambios. se hace énfasis en ellas y se recomiendan en gran parte de la mayoría de los códigos modernos o.mailxmail .Cursos para compartir lo que sabes 20. etc.php. 86 . Conexiones Seguras – Se han desarrollado una serie de funciones específicas. ampliar aún más el margen de herencias. Entre las mejoras para la detección de errores. De todo ese compendio. Interface Orientada a Objetos– Una intensiva serie de mejoras y correcciones que permiten a los desarrolladores o diseñadores de software mejorar los procesos de depuración y detección de errores.net/mysqli/ http://us2. se han centrado al menos. En la actualidad. seguro operacional y funcionalmente. Por ejemplo. la función llamadamysqli_ssl_set(). puede consultar en el sitio Web de PHP cuya dirección URL es http://us2. es decir. Librerías mysqli Generalmente cuando se desarrolla software para manipular bases de datos en MySQL se suele utilizar las librerías clásicas de MySQL. han resultado prácticamente radicales. las llamadas mysql. que es utilizada para acceder a base de datos mediante páginas seguras que utilizan el protocolo SSL (Security Socket Layer).

etc. es posible desarrollar determinadas interfaces gráficas con Adobe Flash. tenemos un potente entorno que permite construir gráficos interactivos muy amplios que abarcan sonido. tal es el caso de PHP entre otros. sino que además de todo ello.Cursos para compartir lo que sabes 21. esta combinación entre PHP y Adobe Flash se convierte en más que interesante. etc.. Soluciones con Flash de la Firma Adobe Adobe Flash El entorno de desarrollo Flash combina dos aspectos interesantes. Si bien se pueden realizar cosas interesantes con su prototipo de interfaz. excepto la solución propietaria de Adobe Coldfusion. Por ejemplo.. por tanto. se ha desarrollado un modelo complementario de ingeniería basado en la arquitectura RIA (Rich Internet Application). 87 . Por otro lado. típicos para crear elementos con movimientos. Esta arquitectura propone un modelo de interacción gráfica enriquecida que permite potenciar los modelos de sistemas Web basados. no solamente de un dinamismo efectivo tal como propone el lenguaje PHP. para luego embeberlas en el lenguaje de comandos de PHP y hacer una combinación interesante y poderosa. en el fondo.mailxmail . la gran mayoría de los sitios Web requieren. En teoría. Gracias a esta cualidad que propone la arquitectura RIA. Por ejemplo. en un modelo de interacción rica de controles gráficos enriquecidos y de comandos potenciados. películas. Siendo conscientes los desarrolladores y colaboradores del lenguaje PHP de todas estas contiendas negativas del lenguaje. Tal es el ejemplo donde se requiere una exigente estética visual como eje central. etc. Fundamento a la Arquitectura RIA Para lograr obtener una mayor riqueza en gráficos e interacción sistémica. adolece de ciertas cualidades estéticas que no ayudan para determinados casos. es posible lograr una combinación tan amplia que le permitirá a los desarrolladores crear potentísimas interfaces gráficas combinando el dinamismo del lenguaje PHP y lo más poderoso de los software gráficos del mercado actual. se tiene un potente lenguaje de desarrollo propietario llamado AS ActionScript) para dicho entorno que ( permite. Debido a que el lenguaje PHP se trata en un ciento por ciento un lenguaje poderoso de comandos. Por un lado. Java Solutions. es posible agregar módulos para hacer estética sin perder el dinamismo y seguridad que propone el lenguaje PHP. el lenguaje ha sido diseñado bajo un concepto bien definido a estos desafíos. como por ejemplo PHP. sino la posibilidad de proporcionar recursos externos para compartirlos con otros entornos operativos. orientado a objetos y otras tantas cualidades maravillosas.. movimientos. Dado que Adobe Flash carece absolutamente de un mecanismo de interacción con diversos tipos de proveedores de bases de datos. Microsoft Silverlight. etc. no solamente potenciar sus cualidades. requiere cierto porte majestuoso para proponer interfaz más ricas en gráficos. interpolaciones. JSP. se ha decido incluir entonces. tiene algunas carencias en materia gráfica. la posibilidad de poder combinar partes de otros desarrollos en su propio entorno para poder potenciar sus cualidades.

mailxmail - Cursos para compartir lo que sabes
Flash se convierte en más 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 conexión a base de datos y, lo más interesante de todo, con acciones interactivas, con movimientos y sonido, entre otros. El modo en cómo interactúa Adobe Flash con PHP es mediante el uso de parámetros. El entorno de Adobe Flash, pasa los elementos a través de un parámetro 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 parametrización como recurso de comunicación entre ambos entornos. De esta manera, se establece una interacción entre ambos entornos potenciando las cualidades gráficas 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 gráficos 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 gráfica y de comandos. Con su propio entorno que puede proporcionar muchos recursos operativos quizá más 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 espíritu de Silverlight, aunque se trata de una alternativa más dado que podrá optar por gestionar todo desde Silverlight o parte utilizando a PHP como soporte de comandos. Este último método alternativo suele ser el más utilizado por los desarrolladores, pero insisto, no es el único método disponible. El modo en cómo Silverligth interactúa con el lenguaje PHP, resulta de forma similar al que describí durante el detalle que hice sobre Adobe Flash. Utilizando parametrización se pueden establecer mecanismos de comunicación 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, también 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 comunicación e interacción necesarias para entornos basados de control y gestión de tipos de bases de datos, etc. Además de ello, también se han desarrollado una serie de componentes adicionales que potencian estos mecanismos y los convierten en más robustos y seguros. Dichos componentes ayudan a desacoplar la capa del negocio y optimizar mejor los enlaces de comunicación 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 proporcionándoles mayores gestiones operativas, seguridad, etc., entre otras características significativas. Generalmente, cuando se utiliza un Java Applet para interactuar con los comandos clásicos de PHP, se utilizan también parámetros. Si hay algo que caracteriza la versatilidad y la potencialidad de Java son los parámetros. El uso de parámetros desde Java proporcionará más que una simple interacción de comunicación entre Java y PHP. El uso de parámetros Java, permite potenciar a PHP y convertir a ambos entornos en altamente combinables, rápidos, eficientes y seguros, obviamente, comparado con el resto de las soluciones embebidas. Por tanto, no es de extrañarse de que las empresas cuando requieren seguridad, bajo coste y garantías 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 Parámetros Como recordará, durante el curso de PHP, ha aprendido que los datos o valores que se pasan entre páginas, se pueden pasar por dos métodos posibles. Uno es por el método GET y el otro método es POST. La diferencia erradica en las formas en cómo es preparada y enviada la información de un punto a otro. El método GET adjunta todos los datos enviados al servidor en la propia URL de la página de envío que hace la solicitud hacia el servidor, mientras que el método POST, encapsula la información en el encabezado del archivo de envío hacia el servidor en su cabecera principal. Ambos métodos tienen sus ventajas y sus desventajas. Ahora bien, para que un módulo tales como Adobe Flash, Microsoft Silverlight, etc., puedan enviar datos desde su entorno hacia PHP, deben hacerlo a través de un parámetro. El parámetro se encarga trasladar los datos hacia el entorno externo. Ahora bien, según la solución que estemos utilizando, la creación de parámetros puede diferir en cierto modo. Reseña Histórica de Flash

89

mailxmail - Cursos para compartir lo que sabes

FutureSplash Versión 1 - 1996
El desarrollo de Flash fue creado por una vieja compañía llamada Authoring con fines experimentales allá por 1996. El nombre en un principio fue SmartSketch, luego paso a llamarse más tarde FutureSplash. El objetivo era lograr dinamismo a las primigenias páginas Web de aquellos entonces. Si bien la compañía había logrado algunos avances significativos, no tuvo mucho eco en el mercado por varias razones técnicas y de costes. Debido a este inconveniente, la compañía sumada a otros problemas económicos, 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 fusión no pudo lograr sus objetivos y al cabo de un tiempo, se convoco a una rueda de acreedores. La empresa Macromedia, que había hecho trabajos específicos 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, había cambiado su aspecto en un 80%. Lo lógico era darle un nombre nuevo, lanzarlo al mercado y evitar quizá, diversos problemas en generales. A partir de la versión 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 evolución de Flash fue avanzando entre cada versión 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 evolución de lenguaje de ActionScript y lo orienta a objetos. A partir de este momento, Macromedia desarrolla ActionScript 1 con sus famosas librerías MX. Luego, Macromedia pasaría a una situación financiera caótica 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 licitación. La empresa joven Adobe decide comprar el producto y lo compra con algunas condiciones específicas. La empresa Macromedia aún seguía teniendo los derechos de sus librerías y por lo tanto, la versión 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 disolución y desaparición del mercado actual.

90

etc. Recuérdese que es aconsejable que utilice el método POST por cuestiones de seguridad.text. frlv. Adobe toma las riendas del producto y decide reescribir todo el código nuevamente para evitar dos cosas importantes. la forma en cómo crear el parámetro difiere de las versiones de ActionScript dado que Adobe ha desarrollado hasta la actualidad tres versiones para ActionScript. del lado de PHP. hay que incorporar una serie de variables que serán las que se utilizarán para pasar los datos al exterior mediante el efecto de parametrización. brindándole así más potencialidades y orientándolo fuertemente a objetos. las variables deberían coincidir con las variables que serán levantadas en PHP tal cual como han sido estas declaradas en la aplicación Flash. frlv.misitio.. fueron objeto de severas críticas por parte de los desarrolladores y consumidores del producto.text.Cursos para compartir lo que sabes Ante esta situación.titulo = titulo_txt. . es probable que parte del código difiera bastante. frlv.php". Veamos un extracto de ejemplo de ambos lados.nombre = nombre_txt. Ahora bien. el objetivo final de la parametrización es prácticamente similar. las últimas actualizaciones de Adobe. mostraré un simple ejemplo de parametrización que permite pasar datos desde una aplicación creada con Flash hacia el lenguaje de comandos PHP. Adobe prometió no hacer más esto y continuar un proceso de escala manteniendo la compatibilidad de sus productos sin alterar los conceptos de forma tan radicalizada como lo habían hecho en el pasado. Además de las variables. han pasado a ser simples anécdotas de la historia de Flash. A continuación.com/send. han mantenido el software bajo un delineamiento coherente. Por tanto. Ante toda la comunidad de desarrolladores enojados más los clientes que apoyaban a los desarrolladores. Analizando un Caso con Adobe Flash En el caso de utilizar Adobe Flash.. frlv = new LoadVars().. futuras y potenciales demandas judiciales y dos. a nivel funcional.mensaje = mensaje_txt.text. Estos cambios tan radicalizados. frlv. 91 . Actualmente. dentro de esta misma. frlv. hay que especificar el nombre del archivo PHP que se encargará de capturar estos datos y luego procesarlos.. entre otras mejoras.mail = email_txt. las actualizaciones de ActionScript 2 a ActionScript 3 se sucedieron casi de una versión del producto a otra de forma directa y abismal.sendAndLoad("http://www. se utilizan las órdenes GET o POST respectivamente.text. Primero. frlv. Durante este proceso. Según la versión que utilicemos.. Sin embargo. para mejorar el producto de Flash.mailxmail . por lo que supone que estos temidos cambios realizados por Adobe. . "POST"). Al desarrollar la aplicación de Flash.

as u vez. este método. Supone que los controles presentes son un par de cuadro de textos y una serie de botones para el control de esta aplicación. $header . Por último."\nReply-To:". 92 . si se menciona la palabra formulario. =)". tenemos toda la estructura gráfica y parte del código para soportarla. es pasado como gran parámetro hacia un método llamado sendAndLoad(…). si todo marcha bien. Para ello se utiliza POST que es el método elegido desde la aplicación de Flash.= $mensaje.$header). $subject = "Desde el Sitio. Si observa el código notará que existe una variable llamada frlv.Cursos para compartir lo que sabes Extracto de Código 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"). Obsérvese que cada variable declarada en la aplicación de Flash se encuentra detallada a la perfección en PHP. tales como espacios vacíos. $header = "From:". aunque mal aplicada para Flash. utf8_decode($contenido) .$mail. En Flash. tiene como parámetros la página a donde se requiere enviar. el método de envío que se utilizará. posee un nombre propio para identificarlos y utilizarlos. $subject. } ?> Parte del Código PHP con sus Parámetros El ejemplo muestra una aplicación que nos permite enviar correo hacia un punto específico de la Web. Mientras tanto. que se encarga de enviar los datos parametrizados a un archivo del servidor. Ahora bien. he extraído la parte del código más interesante para esta explicación. $mymail = "tuCorreo@tuServidor."\n". Si observa el código. es que se hace referencia a dicho fotograma de la aplicación principal. son utilizadas durante el proceso de envío de la parametrización. existen una serie de variables que están también contenidas dentro del fotograma y que son utilizadas para ser cargadas desde los controles del fotograma. De todo ello. los datos que son enviados desde la aplicación de Flash.= "Content-Type: text/plain"."\n\n". mail($mymail.0\n". el nombre de cada una de las variables respectivas que fueron declaradas dentro de la aplicación de Flash. Esta variable hace referencia al escenario donde se han dibujado los controles interactivos de dicha aplicación. etc.mailxmail . Luego.com". Si observa el código de PHP.$fecha. las variables que han sido cargadas de datos. si estas traen datos útiles o valores inútiles." Escribio :\n". luego PHP los recoge y los procesa para enviar un correo mediante la función mail(…) como puede ver casi al final del código de PHP. Por tanto. $contenido .= "el mensaje se escribio el ". echo "&estatus=ok&". $contenido = $nombre. Estos valores son comprobados mediante la función isset(…). El término correcto es fotograma para un escenario. Aquí en este caso se trata del método POST.$mail. $header . pasan por parámetros. es decir. $header . se utiliza una estructura más otras funciones para determinar el estado de las variables. cada uno de esos controles. dichas variables. son contenidas en el fotograma que. por último.. no existe el término formularios. la variable de fotograma que contiene al resto de las variables y al resto de la estructura de la aplicación y.= "Mime-Version: 1.phpversion()."\n".= "X-Mailer:PHP/". De lado de la aplicación de Flash. En el lado del lenguaje de comandos de PHP tenemos un código donde se procede a capturar los datos parametrizados utilizando el método POST y utilizando a la vez. $contenido . Por tanto. nulos.

Cursos para compartir lo que sabes 93 .mailxmail .

getInputStream())).mailxmail . oStream. ha de estudiarse profundamente. el lenguaje potente creado para sí es JSP o JSF respectivamente.setDoInput(true).openConnection().getOutputStream(). URL url = this. puede utilizar las técnicas de Applet-Servlet de modo de potenciar las aplicaciones. utilizan la misma técnica para pasar información o datos desde un punto a otro.contains("success")) success = true. el resto de las aplicaciones. Por tanto y bajo estos escenarios. IOException { boolean success = false. Veamos los siguientes códigos y luego analizaremos. cuando realmente.setDoOutput(true). con. url = new URL(url + "updateDD. Eso sí. el desarrollador. BufferedReader iStream = new BufferedReader( new InputStreamReader( con. con.getCodeBase(). int ver) throws MalformedURLException. En el caso de Java. con.flush(). public boolean postResults(int pid.setRequestMethod("POST"). while(aLine != null) { if(aLine. String parametersAsString = "PID=" + pid + "&VER=" + ver.setUseCaches(false). byte[] parameterAsBytes = parametersAsString. ((HttpURLConnection) con).php").write(parameterAsBytes). OutputStream oStream = con. Analizando un Caso con Java Applet De esta manera y de forma similar.getBytes(). se requiere conocer muy bien las formas en cómo desarrollar en Java y la forma más conveniente para mezclar PHP con Java.Cursos para compartir lo que sabes 22. String aLine = iStream. 94 . URLConnection con = url.readLine(). oStream.

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

mysql_error()). vemos como la variable de entorno POST utiliza las variables parametrizadas pidy verdesde el Applet. " . Las variablespid pid verson las que nos interesan por el momento. se utiliza la clase URLConnection para establecer la conexión con el servidor. si será un POST o un GET. podemos ver el archivo al que es destinado la parametrización y el resto de la variable urlutilizando la Clase URL. Estas mismas le pasan los valores al archivo de secuencias de comandos PHP para su gestión. supone que el Applet es una clase compilada y embebida en el código HTML para ser procesada y ejecutada por las secuencias de comando de los navegadores clientes. Más tarde.")". es decir.$arr[0]. Avanzando de a poco por las líneas del código. Verificaciones de los procesos y sucesos exitosos si los mismos si resultaron efectivos o no. Luego. se crea una variable tipo Byte para ensamblar el parámetro e incorporar ambas variables. El resto de los procesos son más que evidentes. if (!($db2 = mysql_query($sql.$arr[1]. Quizá y el más evidente. son las variables que serán utilizadas para el traslado de los datos del Applet hacia la página PHP. concentrándonos en el código. die('SQL INSERT ERROR: '. podemos reconocer algunos aspectos importantes.$database.". $db))) { echo "SQL INSERT ". Bien. el algoritmo utiliza otras funciones para controlar los siguientes subprocesos para el procedimiento de envío hacia el servidor.Satisfactorio } ?> Extracto de Código PHP El código para Applet es un extracto de lo que más interesa para esta explicación. die("Can\'t use ". especifica qué tipo de envío se hará.mailxmail . Si sigue mirando el código. 96 . mysql_error() . lo cual en síntesis.Query was: {$sql}"). el parámetro será enviado por completo al servidor. Para ir cerrando y por último. Ambas variables son utilizadas y dentro del Applet para procesar datos pero que serán utilizadas como parámetros para pasárselos al archivo de PHP y que el servidor los procese. } $sql = "insert into Game1 values (". } echo "success". Además."." ". En la sección del archivo PHP.Cursos para compartir lo que sabes echo "SQL ERROR: Selection Failed ". //Respuesta .

Sign up to vote on this title
UsefulNot useful