4,27/5
(119 opiniones)
|11497 alumnos|Fecha publicación: 10/09/2004
Después de la primera entrega de esta sección donde presentamos PHP4, vamos a ponernos ya a programar aplicaciones utilizando PHP. Y PHP no es más que un lenguaje y un conjunto de librerías orientadas hacia el desarrollado de aplicaciones web. Todo lo que podemos hacer con PHP lo podríamos hacer exactamente igual con otro lenguaje utilizando CGI, pero la complejidad y tiempo de desarrollo serían mucho mayores y su integración con el web mucho menor.
Quizás podamos ver PHP como una extensión de HTML del lado del servidor. Recordemos que en principio el lenguaje PHP se mezcla con HTML en una página HTML con extensión ".php". Es precisamente esta extensión la que alerta al servidor de web para que antes de entregar la página al cliente, se la pase al interprete de PHP para que ejecute las partes PHP y envíe al cliente el HTML y los resultados de las partes PHP. A lo largo de esta entrega nos vamos a centrar en describir PHPLIB, una librería que nos va a permitir de forma sencilla poder trabajar con diferentes bases de datos de forma transparente, poder gestionar sesiones de una forma sencilla y llevar un control de acceso muy flexible basado en bases de datos. PHPLIB también proporciona clases, está basada en objetos, para gestionar plantillas y crear HTML desde PHP. Como veremos uno de los problemas fundamentales con lenguajes como PHP, donde se mezcla el código PHP con el código HTML, es que no está bien delimitado el campo del diseñador HTML y del programador y que el código resultante puede ser complejo de entender y por o tanto, muy complicado de mantener. Las plantillas permiten que el código HTML esté totalmente fuera del código PHP con lo que el resultado final es mucho más flexible y mantenible.
PHPLIB es una librería GPL y se puede obtener en la referencia [1]. Su instalación es un tanto compleja ya que toda su funcionalidad principal utiliza base de datos. Por lo tanto lo primero es tener una base de datos funcionando en el sistema. Nos vamos a centrar en MySQL pero la instalación sería muy similar para PostgreSQL o MS Access.
Una vez que hayamos obtenido el "tar.gz" de la librería la descomprimimos en un directorio (tar xvfz phplib-7.2.tar.gz ) y pasamos a instalarla. La estructura de directorios resultante es:
CHANGES COPYING
HELP README VERSION
pages stuff
COMMIT CREDITS Makefile
TODO doc
php unsup
La documentación de la librería es de los más completa y se encuentra en el directorio "doc". Las clases que componente la librería se encuentran en el directorio "php" y los "scripts" de creación de base de datos y tablas necesarios para el funcionamiento de la librería y el soporte de LDAP se encuentra en el directorio "stuff". En el directorio "pages" tenemos unos sencillos ejemplos para comenzar a trabajar con la librería y en "unsup" tenemos utilidades de las que no se da soporte, es decir, que pueden ser útiles pero que no son parte de la distribución oficial. Sobre la licencia como ya dijimos es software GPL y por lo tanto dentro de "COPYING" tenemos la querida licencia GPL.
El índice de la documentación lo podemos ver en la siguiente figura.
La guía de instalación rápida nos cuenta en 10 pasos como instalar
la librería. Como ya dijimos lo primero es tener una base de datos
funcionando en el sistema. Quizás puede parecer un requisito
excesivo pero los servidores web sin base de datos serán una
especie en extinción en el futuro cercano. Si tenemos MySQL
instalado todo va a ser sencillo. Accedemos al directorio "stuff" y
ejecutamos:
mysqladmin -u root create phplib
mysql -u root < create_database.mysql
Con ello creamos una base de datos para PHPLIB y dentro de ella la poblamos con una serie de tablas. En estas tablas es donde PHPLIB guarda toda la información de sesiones y control de accesos. Una vez que ya tenemos la infraestructura de base de datos preparada hay que indicar a PHP que en todas las páginas incluya el núcleo de PHPLIB. Se puede evitar hacer esto pero es muy cómodo tener toda esta funcionalidad de forma automática en nuestras páginas PHP, y este núcleo es bastante reducido. Esto lo vamos a lograr accediendo al fichero de configuración de PHP, normalmente "/etc/php.ini", e incluir en la línea que comienza con "auto_prepend_file" la localización del fichero "prepend.php3" que se encuentra dentro del directorio "php" de PHPLIB. De esta forma el interprete de PHP incluye PHPLIB en todas las páginas PHP. Una vez hecho esto solo nos queda acceder al fichero "local.inc" y especificar los datos necesarios en la clase "DB_Example" para que PHPLIB puede acceder a la base de datos. El contenido de esta clase es:
class DB_Example extends DB_Sql {
var $Host = "localhost";
var $Database = "phplib";
var $User = "root";
var $Password = "";
}
Tenemos que especificar en que máquina está corriendo la base de datos, como se llama la base de datos en la que se van a almacenar los datos de PHPLIB, y un usuario y clave para acceder a esa base de datos. La clase DB_Sql es una abstracción del acceso a la base de datos, es decir, que a través de esta clase podemos acceder de forma idéntica a varios tipos de bases de datos diferentes. En concreto en la versión actual de PHPLIB nos encontramos implementaciones de DB_Sql para las siguientes bases de datos:
db_msql.inc: msql
db_mssql.inc: MS SQL Server
db_mysql.inc: MySQL
db_oci8.inc, db_oracle.inc: ORACLE
db_odbc.inc: ODBC
db_pgsql.inc: PostgreSQL
db_sybase.inc: Sybase
Si basamos nuestros desarrollos en PHPLIB y DB_Sql la migración de un sistema de bases de datos será trivial: sólo habrá que traspasar los datos y cambiar la clase con la que se accede a la base de datos. Todo nuestro código será idéntico.
Control de sesiones.- Ya en este punto estamos en disposición de utilizar la librería PHPLIB. Para ello lo mejor es poner el directorio "pages" de la distribución en algún lugar desde el que el servidor de web pueda acceder a él y a través de un navegador acceder a la página "index.php3". El resultado tiene que ser similar al de la figura 2.
Si prueba el lector a recargar la página verá que el contador que
aparece va aumentando. Lo que está ocurriendo es que la primera vez
que se accedió a esta página se creó una "cookie" para el control
de la sesión. A partir de este momento está "cookie" con el
identificador de sesión es enviado al servidor de web por el
cliente cada vez accede a la página permitiendo el control del
estado de la sesión. De hecho este control se realiza utilizando la
base de datos "phplib" que creamos anteriormente. Si vemos las
tablas que hay en la base de datos "phplib" encontramos:
active_sessions
active_sessions_split
auth_use
auth_user_md5
db_sequence
En la tabla "active_sessions" es donde se almacena la información de sesión y cada vez que se crea una nueva sesión, se crea un registro en esta tabla para su control. Supongamos que queremos controlar el acceso a un conjunto de páginas por nuestros clientes. Con PHPLIB es tan sencillo como incluir al comienzo de cada página con control de sesión la llamada:
page_open(array("sess" => "Sesión de control"));
De esta forma PHPLIB verifica si el usuario tiene ya creada la "cookie". Si no la tiene se la crea y si la tiene nos permite acceder a todos los datos de la sesión. Gracias al control de sesiones podemos almacenar diferentes variables asociadas a esta sesión. Desde el momento que se abre una sesión, se abren todas las variables de dicha sesión. Para asociar una variable a una sesión utilizamos una llamada de PHPLIB:
$sess->register("s");
Al final de una página con control de sesión, tenemos que realizar una llamada a PHPLIB para cerrar la sesión. En esta llamada todas las variables asociadas a la sesión se guardan para que no se pierdan:
page_close();
Es por todos conocido lo poco que gustan las "cookies" a la gente por el ataque hacia su privacidad que supone. Con PHPLIB el control de sesiones se puede realizar también utilizando el método GET de envío de datos, es decir, adjuntando a la URL de acceso a la página el identificador de la sesión. Esto se controla si en la página con control de sesiones ponemos todos los enlaces a otras páginas de la siguiente forma:
$sess->purl("showoff.php3");
Ya hemos visto pues una de las principales ventajas de utilizar PHPLIB: el sencillo control de sesiones. con este control el implementar una bolsa de la compra donde se vayan almacenando todos los artículos de una compra es trivial. O el almacenamiento de una barra de navegación con todas las páginas por las que ha ido accediendo el usuario.
Control de Identidad de Usuarios.- Junto con el control de sesiones es el control de acceso a páginas una de las principales necesidades en las aplicaciones web. Y de nuevo con PHPLIB tenemos solucionado de forma sencilla este control. Es cierto que con Apache tenemos mecanismos para el control de acceso a páginas, pero es un control de acceso o no acceso. Normalmente necesitamos ir más allá. Necesitamos que según la persona que acceda dar acceso a unas partes u otras, poder crear grupos de usuarios con privilegios etc.
Además PHPLIB asocia este control de identidad de usuarios al control de sesiones, algo que nos permite asociar de forma automática una sesión a un usuario identificado. Cuando queremos que una página solo pueda ser accedida por un usuario identificado incluimos en la primera línea de esta página:
page_open(array("sess" => "Example_Session", "auth"
=> "Example_Auth",
"perm" => "Example_Perm", "user" =>
"Example_User"));
Es en la tabla "auth_user" de la base de datos "phplib" donde se almacena toda la información sobre los usuarios. Y en esta tabla también se incluye un campo "perms" donde se pueden detallar los permisos que tiene un usuario.
Supongamos que hay una parte de administración a la que sólo pueden acceder los usuarios con permiso de administrador. Para ello en el campo "perms" del registro del usuario debe aparecer "admin". Con PHPLIB lo único que hay que hacer para realizar este control es incluir la llamada:
$perm->check("admin");
Si el usuario no está aún autenticado se le presentará una página para que inserte un identificador y una clave de entrada. Esta página se puede observar en la figura 3.
En el ejemplo inicial de PHPLIB el identificador
es "kris" y la clave es "test".
Una vez introducidos podemos volver a acceder a esta página y ya se
nos volverá a pedir el identificador.
Hay 119 opiniones. Opina sobre este curso.
| Cursos | Valoración | Alumnos | Vídeo | |
|---|---|---|---|---|
|
Mozilla Una de las funciones más utilizadas en internet es la navegación por las miles de páginas con información y recursos. Para poder acceder a toda esta información se buscan... [26/03/04] |
|
4.116 | ||
|
Introducción a las comunicaciones por satélite A partir del lanzamiento del primer satélite ruso SPUTNIK en 1957, los mercados corporativos han visto a la comunicación vía satelital como una gran oportunidad de mejora... [27/09/06] |
|
1.884 | ||
|
Google AdWords. Atraer clientes con marketing online Atraer al cliente tiene, en el marketing online y a google como su más poderosa herramienta, las mejores posibilidades para una empresa. Las empresas, ca... [31/07/09] |
|
535 |
|
|
Publicar en
del.icio.us
digg
meneame