Depto. Automática y computación
Universidad Pública de Navarra
Daniel Morató
daniel.morato@unavarra.es

Laboratorio de Interfaces de Redes

3º Ingeniero Técnico en Informática de Gestión

Práctica 7 - PHP avanzado: MySQL y sesiones

1. Objetivos

En esta práctica vamos a ver unas aplicaciones avanzadas de scripts PHP. Por un lado veremos cómo acceder a un servidor de base de datos MySQL desde scripts PHP. Para ello en la primera práctica compilamos el módulo de PHP para Apache con soporte de MySQL. Después veremos brevemente cómo emplear la gestión de sesiones en PHP para conservar el valor de variables de unos scripts a otros.

En caso de dudas sobre cómo emplear la base de datos MySQL la documentación del mismo incluye un breve tutorial:
http://www.tlm.unavarra.es/~daniel/docencia/lir/lir03_04/manuales/mysql/manual_Tutorial.html#Tutorial

Y el tutorial de PHP trae en la sección LXIII la documentación sobre las funciones para acceder al servidor de base de datos:
http://www.tlm.unavarra.es/~daniel/docencia/lir/lir03_04/manuales/php/ref.mysql.html

El API sobre sesiones en PHP viene en:
http://www.tlm.unavarra.es/~daniel/docencia/lir/lir03_04/manuales/php/ref.session.html

2. Registro en base de datos de accesos a páginas web

Vamos a crear un script de PHP que inserte en una tabla de una base de datos información sobre cada acceso que se realiza a ciertas páginas web.

Primero crearemos una nueva base de datos en nuestro servidor. Emplearemos esta base de datos en todos los ejerciciones de esta práctica. Llamen a la base de datos bdpractica7

A continuación crearemos la tabla que vamos a emplear en este caso. La tabla se llamará logs y contendrá al menos la siguiente información:

Ahora creen un script PHP que se conecte a la base de datos e inserte una nueva línea en esa tabla con la fecha actual, la dirección IP del que está pidiendo este documento y el URL de este documento. El primer valor lo sabe introducir el servidor MySQL mediante la función NOW() y el segundo y el tercero se pueden obtener de variables de entorno que ha creado el servidor Web.

Adapten el script anterior para que pueda ser empleado desde cualquier página sin más que entrar en modo PHP e incluirlo (include). Prueben a crear diferentes documentos que incluyan el script y vean cómo se van registrando los accesos en la base de datos (por ejemplo empleen las páginas que crearon en la práctica sobre HTML).

3. Estadísticas obtenidas del log

Creen un nuevo script PHP que acceda a la tabla creada en el apartado anterior y muestre las siguientes estadísticas:

Por ejemplo, si la tabla es:

+------------+-----------------+-----------------------------------------+
| Fecha      | direccion       | path                                    |
+------------+-----------------+-----------------------------------------+
| 2003-11-12 | 130.206.160.215 | /usr/local/htdocs/practica.html         |
| 2003-11-13 | 127.0.0.1       | /Volumes/Users/daniel/examen.php        |
| 2003-11-13 | 127.0.0.1       | /Volumes/Users/daniel/examen.php        |
| 2003-11-14 | 127.0.0.1       | /Volumes/Users/daniel/ejercicios/16.php |
+------------+-----------------+-----------------------------------------+

El resultado será algo como:

Total: 4 accesos

2 direcciones diferentes han accedido a nuestros documentos

URLAccesos
/Volumes/Users/daniel/examen.php2
/Volumes/Users/daniel/ejercicios/16.php1
/usr/local/htdocs/practica.html1

DirecciónPáginas diferentes accedidas
127.0.0.1 2
130.206.160.215 1

Checkpoint
Muestren al profesor de prácticas que les funciona el script de logs y el de mostrar la estadística de accesos

4. Sesiones

El empleo de sesiones nos permite conservar variables de unos scripts PHP a otros o de una ejecución a otra del mismo script para el mismo usuario.

En esta sección se plantea crear un script que vaya almacenando en una variable de la sesión los URLs del servidor que ha ido solicitando el usuario. Para ello, en cada página se llama al principio a ese script (o a una función del mismo) el cual añade el URL del documento actual a un array con los URLs visitados, array que se guarda como variable de sesión. Para ver el histórico de los URLs visitados podemos crear otra función en PHP a la que se le llama al final del documento para sacar un pie para el mismo con la lista de URLs en el orden en que se han ido visitando.

Checkpoint
Creen varias páginas que empleen esas dos funciones y muestren al profesor de prácticas que les funciona

5. Trabajo opcional: Usuarios de MySQL

El servidor de base de datos MySQL permite crear diferentes tipos de usuarios con diferentes privilegios. Se puede definir desde qué dirección puede acceder un usuario al servidor, qué bases de datos puede emplear, qué tipo de operaciones realizar según la tabla a la que afecten, etc.

Pueden consultar la documentación al respecto:
http://www.tlm.unavarra.es/~daniel/docencia/lir/lir03_04/manuales/mysql/manual_MySQL_Database_Administration.html#User_Account_Management

Prueben a crear diferentes tipos de usuarios: que solo puedan acceder desde una máquina, que solo puedan emplear una base de datos, que puedan ver el contenido de unas tablas pero no modificarlas y sí modificar otras, etc.

6. Conclusiones

Hemos visto cómo crear scripts PHP que accedan a una base de datos. Esto, junto con el empleo de sesiones, nos ofrece unas herramientas muy potentes para la creación de una aplicación muy flexible basada en la web.


Depto. Automática y computación
Universidad Pública de Navarra
Daniel Morató
daniel.morato@unavarra.es