PHP Hypertext Preprocessor

 

PHP es un lenguaje de programación usado generalmente para la creación de contenido para sitios web. PHP es el (acrónimo recursivo de "PHP: Hypertext Preprocessor", inicialmente PHP Tools, o, Personal Home Page Tools) es un lenguaje interpretado usado para la creación de aplicaciones para servidores, o creación de contenido dinámico para sitios web, y últimamente también para la creación de otro tipo de programas incluyendo aplicaciones con interfaz gráfica usando la librería GTK+.

Visión general

El fácil uso y la similaridad con los lenguajes más comunes de programación estructurada, como C y Perl, permiten a la mayoría de los programadores experimentados crear aplicaciones complejas con una curva de aprendizaje muy suave. También les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones y prácticas.

Debido al diseño de PHP, también es posible crear aplicaciones con una interfaz gráfica para el usuario (también llamada GUI), utilizando la extensión PHP-GTK. También puede ser usado desde la Línea de comandos, de la misma manera como Perl o Python puden hacerlo, esta versión de PHP se llama PHP CLI (Command Line Interface).

Su interpretación y ejecución se da en el servidor, en el cual se encuentra almacenado el script, y el cliente sólo recibe el resultado de la ejecución. Cuando el cliente hace una petición al servidor para que le envíe una página web, generada por un script PHP, el servidor ejecuta el intérprete de PHP, el cual procesa el script solicitado que generará el contenido de manera dinámica, pudiendo modificar el contenido a enviar, y regresa el resultado al servidor, el cual se encarga de regresárselo al cliente. Además es posible utilizar PHP para generar archivos PDF, Flash, así como imágenes en diferentes formatos, entre otras cosas.

Permite la conexión a diferentes tipos de servidores de bases de datos tales como MySQL, Postgres, Oracle, ODBC, IBM DB2, Microsoft SQL Server y SQLite; lo cual permite la creación de Aplicaciones web muy robustas.

PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas operativos tales como UNIX (y de ese tipo, como Linux), Windows y Mac OS X, y puede interactuar con los servidores de web más populares ya que existe en versión CGI, módulo para Apache, e ISAPI.

El modelo PHP puede ser visto como una alternativa al sistema de Microsoft que utiliza ASP.NET/C#/VB.NET, a ColdFusion de la compañía Macromedia, a JSP/Java de Sun Microsystems, y al famoso CGI/Perl

. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe además un compilador comercial llamado Zend Optimizer.

[editar]

Historia

PHP fue originalmente diseñado en Perl, seguidos por la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador Danés-Canadiense Rasmus Lerdorf en el año 1994 para mostrar su currículum vitae y guardar ciertos datos, como la cantidad de tráfico que su página web recibía. El 8 de junio del 1995 fue publicado "Personal Home Page Tools" luego de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.

Dos programadores israelíes de Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador gramatical (parser en inglés) en el año 1997 y crearon la base del PHP 3, cambiando el nombre del lenguaje a la forma actual. Experimentaciones públicas de PHP 3 comenzaron inmediatamente y fue lanzado oficialmente en junio del 1998.

Para 1999, Suraski y Gutmans reescribieron el código de PHP, produciendo lo que hoy se conoce como Zend Engine o motor Zend. También conformaron a Zend Technologies en Ratmat Gan, Israel. En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El 13 de julio de 2004, PHP 5 fue lanzado, utilizando el motor Zend Engine II (o Zend Engine 2). La versión más reciente de PHP es la 5.1, que incluye el novedoso PDO (Objetos de Información de PHP o PHP Data Objects) y mejoras utilizando las ventajas que provee el nuevo Zend Engine 2.

[editar]

Usos de PHP

Los principales usos del PHP son los siguientes:

[editar]

Ventajas de PHP

[editar]

Ejemplo de Código PHP

A continuación un ejemplo de una página web sencilla desarrollada utilizando el lenguaje PHP:

<html>
<head>
    <title>Ejemplo</title>
</head>
<body>
<?php
if (isset($_POST['muestra'])) {
     echo 'Hola, '.htmlentities($_POST['nombre'])
         .', tu comida favorita es:'. htmlentities($_POST['comida']);
} else { 
?>
<form method="POST" action="?">
    ¿Cuál es tu nombre?
    <input type="text" name="nombre"/>
    ¿Cuál es tu comida favorita?
    <select name="comida">
        <option>Spaghetti</option>
        <option>Asado</option>
        <option>Pizza</option>
    </select>
    <input type="submit" name="muestra" value="Seguir">
</form>
<?php
}
?>
</body>
</html>
 

En este código es posible observar las siguientes características:

[editar]

 

Más características de PHP

Ahora que hemos visto lo sencilo que es desarrollar con PHP vamos a ver que cosas podemos hacer con él, las librerías de las que disponemos. Muchas de estas librerías ya están orientadas a objetos por lo que su uso será similar al de este ejemplo. Este ejemplo es el que utilizaremos durante el curso para ir introduciendo más conceptos de PHP y en particular, para presentar como se trabaja con las bases de datos MySQL y PostgreSQL.

PHP en cada nueva versión soporta nuevas funcionalidades por lo que el mejor método para ver que nuevas librerías incluye es cuando compilamos. Si dentro del directorio con las fuentes de PHP ejecutamos el comando "configure --help" nos dará información de todas las posibles opciones que tiene PHP al ser compilado y, entre esta información, la de todos los módulos que podemos añadir a PHP si disponemos de las librerías adecuadas. Dentro del manual de PHP disponemos también de una referencia a todas las funciones disponibles. Ojo que muchas veces es necesario compilar PHP de forma especial para incluir soporte para una determinada funcionalidad. Por ejemplo, si queremos acceder desde PHP al gestor de base de datos MySQL, es necesario que a la hora de compilar PHP incluyamos ests soporte. Para ello es necesario tener las librerías de MySQL instaladas en el sistema, normalmente en el paquete "dev" de MySQL, y ejecutar "./configure --with-mysql" antes de compilar PHP. De esta forma PHP incluirá en el módulo generado dicho soporte. En la información que obtenemos con la llamada a la función "phpInfo()" se incluye información sobre los módulos incluidos. En la figura 3 se puede observar la información referente al módulo MySQL y al GD, que se utiliza para la creación de gráficos "al vuelo".


De esta información es importante a versión de API del cliente. Si esta no es compatible con la del servidor que queramos acceder, no podremos acceder a este servidor. En este caso tenemos la versión 3.22 que utiliza el protocolo 10 para comunicarse con el servidor MySQL. Si tuvieramos una versión 3.20 del cliente (la versión de MySQL que se liberó con licencia GPL) no podríamos acceder a los servidores 3.22 ya que el cliente utilizaría el protocolo de comunicaciones versión 9, incompatible con la versión 10.

Siempre que se habla de PHP lo primero que se hace es presentar el gran número de gestores de bases de datos a los que puede acceder.

Adabas D,dbm, dBase,filePro,Hyperwave,Informix,Internase,LDAP,Microsoft SQL Server,mSQL,MySQL,ODBC,Oracle,PostgreSQL,Solid,Sybase.

Pero si este aspecto resulta impresionante no menos el soporte para:

-Acceso a servidores IMAP
-Envío de correo con SMTP
-Acceso a servidores de FTP
-Acceso a SNMP para gestión de redes y equipos
-Generación dinámica de gráficos y documentos PDF
-Análisis de documentos XML
-Corrector de ortografíai
-Genración de datos en WDDX (Intercambio Web de Datos Distribuidos)


Y todo esto ha sido posible gracias a que PHP ha sido diseñado de forma muy modular y ha sido sencillo según han sido surgiendo librerías, utilizarlas desde PHP. Toda esta funcionalidad está basada en librerías que en su mayor parte no han sido desarrolladas por el equipo de PHP. La gente de PHP lo que ha implementado han sido os cabos necesarios para poder acceder a las librerías.

A lo largo del curso iremos presentando el uso de algunas de estas librerías, aunque nada detiene al lector de comenzar este aprendizaje. En el manual de PHP dispone de documentación abundante sobre todas estas funciones, su uso y los posibles resultados. Esta entrega la vamos a finalizar con una descripción de las nuevas características de PHP4, versión que utilizaremos a lo largo de todo el curso.

 El nuevo PHP4.- La principal novedad de PHP4 es en el interprete del lenguaje PHP. Gracias a Zend, desarrollado por Andi Gutmans y Zeev Suraski, se han logrado aumentos de entre 5 y 10 veces en la velocidad de ejecución de páginas PHP. Este nuevo rendimiento le ha puesto por delante de ASP, la tencología de Microsoft, por lo que le va a permitir competir directamente con ASP en la plataforma de Microsoft. La plataforma de desarrollo Apache+PHP en entornos Microsoft está logrando ya rendimientos superiores a IIS+ASP, por lo que el aumento de su uso en estas plataformas parece muy probable. Esto significará que en el futuro el desarrollador en plataformas NT, por ejemplo, no se verá obligado al uso de IIS+ASP para el desarrollo de sistemas web, tal y como había sucedido hasta ahora. Por otro lado, PHP estaba hasta el momento pensado básicamente para Apache. Era el único que tenía soporte para tener a PHP como un módulo del servidor. Todos los demás servidores de web sólo podían utilizar a PHP como cgi. En PHP4 se han añadido al soporte de la API de Apache, el de Netscape (NSAPI), el soporte para ISAPI ( API de Internet Explorer) y para la API del servidor de AOL. De esta forma todos estos servidores podrán lograr rendimientos similares a Apache en su ejecución de PHP.

Además del aumento en rendimiento en lo referente al soporte de objetos en PHP, la sobrecarga de objetos se ha mejorado. De esta forma se ha añadido la posibilidad de métodos polimórficos, métodos que según desde que referencia a un objeto se llamen se comportan de una forma o de otra. Esta característica es muy importante para incluir soporte para acceder a las arquitecturas CORBA y COM.

Otra nueva característica de PHP4 es que se puede compilar para soportar hebras, algo que no era posible en PHP3. La principal ventaja que podemos obtener de esta funcionalidad es el uso de librerías que utilicen hebras. Y en la mayoría de las implementaciones de CORBA esto es así. Quizás pase ya poco tiempo antes de poder acceder al mundo CORBA desde PHP.

Para el desarrollador con PHP4 se incluye un depurador lo que nos evitará muchos quebraderos de cabeza con PHP. Podremos seguir con mayor profundidad esos errores misteriosos que ocurren en estos lenguajes poco tipados. El nuevo interprete de PHP es capaz de liberar los recursos que reservemos de forma automática con lo que nos podremos olvidar de liberarlos. Sí, esto es algo similar al recolector de basura de Java. Habrá que hacer pruebas para ver que tal funciona porque en el caso de Java, muchas veces da más dolores de cabeza de los que te ahorra. En la referencia [2] se puede acceder a un informe realizado por Javier Carretero sobre PHP4, el más completo que he encontrado en Internet.

 

Mas características de PHP

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.

 

Infografia:

 

1.- Definiciones en la Web para PHP: Este articulo da la definición de PHP. PHP (acrónimo recursivo de "PHP: Hypertext Preprocessor", originado inicialmente del nombre PHP Tools, o Personal Home Page Tools) es un lenguaje de programación interpretado. Aunque fue concebido en el tercer trimestre de 1994 por Rasmus Lerdorf no fue hasta el día 8 de Junio de 1995 que fue lanzada la versión 1.0. Se utiliza entre otras cosas para la programación de páginas web activas, y se destaca por su capacidad de mezclarse con el código HTML.

PHP

 

 

 

2.- Webs dinámicas con PHP: Más características de PHP:  

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. Muestra además como es la mezcla entre html com php, con respecto al pase de información.

PHP

 

 

Hosted by www.Geocities.ws

1