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

41311 Laboratorio de Interfaces de Redes

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

Práctica 6 - PHP avanzado: MySQL

1. Objetivos

En esta práctica vamos a ver unas aplicaciones avanzadas de scripts PHP. 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.

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

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.

Emplearemos en esta práctica la base de datos test

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).

Checkpoint 1
Muestren al profesor de prácticas que se introducen las entradas en la tabla a medida que navegan

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 2
Muestren al profesor de prácticas que les funciona el script de mostrar la estadística de accesos

4. 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.

5. Conclusiones

Hemos visto cómo crear scripts PHP que accedan a una base de datos. Esto nos va a permitir almacenar de manera estructurada la información de un portal.


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