Está en la página 1de 33

LABORATORIO DE CMPUTO DE INGENIERA

(PHP) PROGRAMACION WEB AVANZADA CON PHP

Objetivo: Crear aplicaciones Web manejadas por PHP, utilizando el lenguaje as como sus extensiones. Dirigido a: Todas aquellas personas dedicadas a la programacin de aplicaciones y que deseen desarrollar soluciones WEB utilizando este lenguaje. Requisitos: Haber programado aplicaciones HTML en un nivel bsico. Manejo de los conceptos de Orientacin a objetos y programacin con SQL a nivel bsico.5. Alcance: Al trmino del curso los participantes sern capaces de programar pginas WEB interactivas con el servidor de aplicaciones PHP. Herramientas a utilizar: PHP, MySQL, HTML y Apache. Temario: I. PHP sobre Windows 1. Instalacin del Servidor WEB 2. Instalacin de PHP 3. Establecimiento de fuentes de datos II. Introduccin a PHP 1. Sintaxis del lenguaje 2. Manejo de funciones 3. Funciones annimas

LABORATORIO DE CMPUTO DE INGENIERA

4. Strings 5. Arreglos III. Comunicacin 1. Envo y recepcin de datos 2. Mtodo GET y POST 3. Envvo de correo electrnico Manipulacin de bases de datos 1. Creacin de la base de datos 2. Conexin a la base de datos 3, Consultas a la base de datos

IV.

V. Seguridad 1. Restringir el acceso 2. Distincin de usuarios 3. Sesiones VI. Grficos 1. Incrustacin de imgenes 2. Manejo de imgenes y texto

Instalacin del servidor Apache A continuacin vamos a explicar la instalacin de un servidor Apache en un sistema operativo Windows XP. El archivo de instalacin para Windows est en http://www.apache.org/dist/httpd/binaries/win32/, una vez que lo

LABORATORIO DE CMPUTO DE INGENIERA

tengamos lo podemos copiar en nuestro escritorio y lo ejecutamos haciendo doble click sobre l. Entraremos en un programa de instalacin standard de aplicaciones win32, as que nos limitaremos a elegir las opciones que nos muestre el programa de instalacin, es muy sencillo ya que solo pide rutas de instalacin de los archivos y se pueden dejar las que vienen por defecto. Si no elegimos un directorio distinto Apache se instalar en: C:\Archivos de programa\Apache Group\Apache Una vez terminada la instalacin vamos al directorio donde tenemos instalado el servidor, en el directorio "\conf\" es donde se alojan los archivos de configuracin del servidor. Dentro de este directorio se encuentra el archivo "httpd.conf" este es el archivo de configuracin que Apache utiliza al ejecutarse. Para que Apache funcione correctamente deberemos modificar el archivo anterior, para realizar esto deberemos abrirlo con un editor de texto (por ejemplo WordPad), y guardarlo como archivo de texto plano. Una vez abierto el archivo deberemos buscar la lnea que ponga "ServerName". Lo ms probable es que encontremos la siguiente lnea: #ServerName "nombre de servidor por defecto" La debemos sustituir por la siguiente: ServerName http:// Para poner en marcha el servidor deberemos ir al escritorio de Windows, el servidor se encontrar en la siguiente ubicacin del men de inicio "Inicio|Apache Web Server|star Apache", o por el contrario en la ubicacin que hayamos indicado durante la

LABORATORIO DE CMPUTO DE INGENIERA

instalacin. Al ejecutarlo se nos quedar abierta una ventana MSDOS en la cual estar corriendo el servidor. Con el servidor en funcionamiento, comprobaremos si funciona correctamente, para ello abriremos un explorador como puede ser Netscape Communicator o Internet Explorer y en la barra de direcciones teclearemos: http://127.0.0.1 o http://localhost o http://"nombre de nuestro PC" Si tenemos instalado correctamente Apache deberamos ver la pgina que aparece en la fotografa inferior. Esta es la pgina de chequeo que por defecto incluye Apache. En caso de no verla es que no hemos realizado correctamente algn paso anterior. Por defecto las pginas estarn alojadas en la siguiente direccin de nuestra mquina: C:\Directorio de instalacin de Apache\htdocs\ Por defecto tenemos configurado Apache para que abra el archivo index.html que se encuentre en el directorio que indiquemos. Por lo tanto cuando en el navegador pongamos la direccin "http://127.0.0.1" el explorador cargar la pgina index.html del directorio C:\Directorio de instalacin de Apache\htdocs\. Si tenis alguna duda sobre todo lo dicho o queris saber algo ms sobre Apache, en el directorio htdocs\manual existe informacin mucho ms extensa sobre el funcionamiento, configuracin e instalacin de Apache. Instalacin de PHP4

LABORATORIO DE CMPUTO DE INGENIERA

Descargamos y descomprimimos el archivo de PHP. Podemos descomprimirlo por ejemplo en el directorio "C:\PHP4\". Una vez descomprimido, vamos a ese directorio y editamos el archivo php.ini-dist. Dentro de l buscamos la seccin Rutas y Directorios. Comprobamos que el apartado "extension_dir" tenga el valor "./" esto indica el directorio actual de PHP y donde se encontrarn las extensiones de PHP. En la siguiente seccin tenemos las extensiones de PHP, que nos proporcionan funciones extra a nuestro interprete de PHP. Debemos comprobar que el archivo al que se hace referencia esta en nuestro directorio de PHP ("C:\PHP4\"). En este archivo podemos configurar muchas ms opciones, como por ejemplo opciones para el soporte de distintos sistemas gestores de bases de datos, pero por el momento no modificaremos nada, solamente en caso de necesitarlo. Una vez que tengamos modificado lo anterior, guardamos el archivo con el siguiente nombre "php.ini". A continuacin vamos al directorio donde tenamos instalado Apache y en el directorio "/config/" editamos el archivo "httpd.conf" donde deberemos introducir las siguientes directivas de configuracin. Vamos a la seccin "ScriptAlias". En esta seccin indicamos el alias que tendr la ruta donde se encuentra nuestro intrprete de PHP. Debemos tener la siguiente lnea. ScriptAlias /cgi-bin/ "C:/Archivos de programa/Apache Group/Apache/cgi-bin/"

LABORATORIO DE CMPUTO DE INGENIERA

La lnea anterior es un directorio que Apache tiene por defecto para ejecutar scripts. Debajo de esta lnea debemos introducir: ScriptAlias /PHP4/ "C:\PHP4\" En la seccin Addtype, se encuentra la configuracin que indica al intrprete que archivos debe procesar. Aadimos: Addtype application/x-httpd-php .php4 Addtype application/x-httpd-php .phtml En la seccin Action, indicamos cual es el archivo que sirve de intrprete de PHP. Aadiremos: Action application/x-httpd-php "/PHP4/php.exe" Una vez echo esto guardamos el archivo y creamos una pgina de prueba. Guardaremos el archivo en formato de texto plano. Abrimos un archivo nuevo y escribimos el cdigo inferior: <?php echo "Hola, mi primera pgina PHP"; phpinfo(); ?> Una vez escrito el cdigo anterior lo guardamos en el directorio "/htdocs/" del directorio Apache con el nombre "info.php4". Ejecutamos de nuevo un explorador web e introducimos la siguiente direccin: "http://127.0.0.1/info.php4". El resultado es una pantalla con informacin sobre la versin de PHP que utilizamos, adems de informacin sobre el valor de las variables que PHP maneja. Si no vemos esa pantalla deberemos comprobar los pasos anteriores y comprobar que hemos hecho todo correctamente. No obstante, podemos encontrar ms informacin en el manual de referencia de PHP. Instalacin de MySQL

LABORATORIO DE CMPUTO DE INGENIERA

MySQL es un sistema gestor de bases de datos, este nos permite guardar informacin y poder realizar pginas ms dinmicas, por ejemplo, podemos guardar contraseas, direcciones de correo, realizar foros de discusin, contadores, aparte de guardar cualquier tipo de informacin que nos sea de inters. Para poder manejarnos con l deberemos tener unos conocimientos mnimos del lenguaje SQL. Una vez que tengamos el archivo de instalacin mysqlshareware_3_22_34-win.zip debemos descomprimirlo, por ejemplo, podemos ubicarlo en el directorio "C:\mysqlinst\". Una vez descomprimido vamos a ese directorio y ejecutamos el programa de instalacin "Setup.exe" donde indicaremos las rutas que queremos para su instalacin. Una vez terminada la instalacin los archivos ejecutables se encuentra en el directorio "\bin\". MySQL se comporta como un servidor, por tanto para poder tener acceso al SGBD (sistema gestor de bases de datos) deberemos tenerlo en funcionamiento, para hacer esto deberemos ejecutar el archivo "\bin\mysqldshareware.exe". Para acceder al sistema debemos hacerlo con el programa cliente, que es "/bin/mysql.exe". Para comprobar que funciona correctamente, abrimos una ventana MS-DOS y vamos al directorio donde est instalado MySQL (por defecto "C:\mysql\" y dentro del directorio "\bin\" ejecutamos "mysql.exe". Si todo va bien habremos entrado en el SGBD. Nos aparecer el siguiente mensaje: Welcome to the MySQL monitor. Commands en with; or \g. Your MySQL connection id is 2 to server version: 3.22.34shareware-debug

LABORATORIO DE CMPUTO DE INGENIERA

Type 'help for help' mysql> Podemos ver las bases de datos que tenemos en el sistema escribiendo lo siguiente: show databases; Para salir de la sesin deberemos escribir "exit;". Nota: Todos estos programas estn pensados inicialmente para funcionar bajo S.O. UNIX y que las versiones Windows, tienen muchas limitaciones, as que no podremos sacar toda la potencia que tienen estos programas. Pero para un comienzo es suficiente. Introduccin El lenguaje PHP es un lenguaje de programacin de estilo clsico, con esto quiero decir que es un lenguaje de programacin con variables, sentencias condicionales, bucles, funciones.... No es un lenguaje de marcas como podra ser HTML, XML o WML. Est mas cercano a JavaScript o a C. PHP se ejecuta en el servidor, por eso nos permite acceder a los recursos que tenga el servidor como por ejemplo podra ser una base de datos. El programa PHP es ejecutado en el servidor y el resultado enviado al navegador. Al ser PHP un lenguaje que se ejecuta en el servidor no es necesario que su navegador lo soporte, es independiente del navegador, pero sin embargo para que sus pginas PHP funcionen, el servidor donde estn alojadas debe soportar PHP.

LABORATORIO DE CMPUTO DE INGENIERA

Sintaxis de PHP La ventaja que tiene PHP sobre otros lenguajes de programacin que se ejecutan en el servidor (como podran ser los script CGI Perl), es que nos permite intercalar las sentencias PHP en las paginas HTML, es un concepto algo complicado de entender si no se ha visto nunca como funciona unas paginas PHP o ASP. Vamos a ver un ejemplo sencillo para comprenderlo mejor. En azul est el cdigo HTML y en rojo el cdigo PHP. Seguiremos este criterio durante todo el manual. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> Parte de HTML normal. <BR><BR> <?php echo "Parte de PHP<br>"; for($i=0;$i<10;$i++) { echo "Linea ".$i."<br>"; } ?> </body>

LABORATORIO DE CMPUTO DE INGENIERA

</html> El cdigo PHP ejecutado tiene dos partes: la primera imprime "Parte de PHP" y la segunda es un bucle que se ejecuta 10 veces de 0 a 9, por cada vez que se ejecuta se escribe una lnea, la variable $i contiene el nmero de lnea que se est escribiendo.

Variables Una variable es un contenedor de informacin, en el que podemos meter nmeros enteros, nmeros decimales, carcteres... el contenido de las variables se puede leer y se puede cambiar durante la ejecucin de una pgina PHP. En PHP todas las variables comienzan con el smbolo del dlar $ y no es necesario definir una variable antes de usarla. Tampoco tienen tipos, es decir que una misma variable puede contener un nmero y luego puede contener carcteres. <html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php $a = 1; $b = 3.34; $c = "Hola Mundo"; echo $a,"<br>",$b,"<br>",$c; ?> </body> </html>

LABORATORIO DE CMPUTO DE INGENIERA

Existen 2 tipos de variables, las variables locales que solo pueden ser usadas dentro de funciones y las variables globales que tienen su mbito de uso fuera de las funciones, podemos acceder a una variable global desde una funcin con la instruccin global nombre_variable; Aritmticos Estos son los operadores que se pueden aplicar a las variables y constantes numricas.

Operador + * / % ++ -Ejemplo:

Nombre Suma Resta Multiplicacin Divisin Mdulo Suma 1 Resta 1

Ejemplo 5+6 7-9 6*3 4/8 7%2 $a++ $a--

<html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php

LABORATORIO DE CMPUTO DE INGENIERA

$a = 8; $b = 3; echo $a + $b,"<br>"; echo $a - $b,"<br>"; echo $a * $b,"<br>"; echo $a / $b,"<br>"; $a++; echo $a,"<br>"; $b--; echo $b,"<br>"; ?> </body> </html> Comparacin Los operadores de comparacin son usados para comparar valores y as poder tomar decisiones. Operador == != < > <= >= Nombre Igual Distinto Menor que Mayor que Menor o igual Mayor o igual Ejemplo Devuelve verdadero cuando: $a == $b $a es igual $b $a != $b $a es distinto $b $a < $b $a es menor que $b $a > $b $a es mayor que $b $a <= $b $a es menor o igual que $b $a >= $b $a es mayor o igual que $b

Condicionales Las sentencias condicionales nos permiten ejecutar o no unas ciertas instrucciones dependiendo del resultado de evaluar una condicin. Las ms frecuentes son la instruccin if y la instruccin switch.

LABORATORIO DE CMPUTO DE INGENIERA

Sentencia if ... else <?php if (condicin) { Sentencias a ejecutar cuando la condicin es cierta. } else { Sentecias a ejecutar cuando la condicin es falsa. } ?> La sentencia if ejecuta una serie de instrucciones u otras dependiendo de la condicin que le pongamos. Probablemente sea la instruccin ms importante en cualquier lenguaje de programacin. Con la sentencia switch podemos ejecutar unas u otras instrucciones dependiendo del valor de una variable, en el ejemplo anterior, dependiendo del valor de la variable $posicion se ejecuta el bloque 1 cuando el valor es "arriba", el bloque 2 cuando el valor es "abajo" y el bloque 3 si no es ninguno de los valores anteriores. Bucles Los bucles nos permiten iterar conjuntos de instrucciones, es decir repetir la ejecucin de un conjunto de instrucciones mientras se cumpla una condicin. Sentencia while <?php while (condicin)

LABORATORIO DE CMPUTO DE INGENIERA

{ intrucciones a ejecutar. } ?> Mientras la condicin sea cierta se reiterar la ejecucin de las instrucciones que estn dentro del while. <html> <head> <title>Ejemplo de PHP</title> </head> <body> Inicio<BR> <?php $i=0; while ($i<10) { echo "El valor de i es ", $i,"<br>"; $i++; } ?> Final<BR> </body> </html> Sentencia for La instruccin for es la instruccin de bucles ms completa. En una sola instruccin nos permite controlar todo el funcionamiento del bucle. El primer parmetro del for, es ejecutado la primera vez y sirve para inicializar la variable del bucle, el segundo parmetro indica la

LABORATORIO DE CMPUTO DE INGENIERA

condicin que se debe cumplir para que el bucle siga ejecutndose y el tercer parmetro es una instruccin que se ejecuta al final de cada iteracin y sirve para modificar el valor de la variable de iteracin.

Funciones El uso de funciones nos da la capacidad de agrupar varias instrucciones bajo un solo nombre y poder llamarlas a estas varias veces desde diferentes sitios, ahorrndonos la necesidad de escribirlas de nuevo. <?php function Nombre(parametro1, parametro2...) { instruccin1; instruccin2; instruccin3; instruccin4; return valor_de_retorno; } ?> Manejo de cadenas Dado el uso del lenguaje PHP el tratamiento de cadenas es muy importante, existen bastantes funciones para el manejo de cadenas, a continuacin explicaremos las ms usadas. * strlen(cadena). Nos devuelve el nmero de carcteres de una cadena.

LABORATORIO DE CMPUTO DE INGENIERA

* split(separador,cadena). Divide una cadena en varias usando un carcter separador. * sprintf(cadena de formato, var1, var2...). Formatea una cadena de texto al igual que printf pero el resultado es devuelto como una cadena. * substr(cadena, inicio, longitud). Devuelve una subcadena de otra, empezando por inicio y de longitud longitud. * chop(cadena). Elimina los saltos de lnea y los espacios finales de una cadena. * strpos(cadena1, cadena2). Busca la cadena2 dentro de cadena1 indicndonos la posicin en la que se encuentra. * str_replace(cadena1, cadena2, texto). Reemplaza la cadena1 por la cadena2 en el texto.

<html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php echo strlen("12345"),"<br>"; $palabras=split(" ","Esto es una prueba"); for($i=0;$palabras[$i];$i++) echo $palabras[$i],"<br>"; $resultado=sprintf("8x5 = %d <br>",8*5); echo $resultado,"<br>"; echo substr("Devuelve una subcadena de otra",9,3),"<br><br>"; if (chop("Cadena \n\n ") == "Cadena")

LABORATORIO DE CMPUTO DE INGENIERA

echo "Iguales<br><br>"; echo strpos("Busca la palabra dentro de la frase", "palabra"),"<br><br>"; echo str_replace("verde","rojo","Un pez de color verde, como verde es la hierba."),"<br>"; ?> </body> </html>

Envo y recepcin de datos El lenguaje PHP nos proporciona una manera sencilla de manejar formularios, permitindonos de esta manera procesar la informacin que el usuario ha introducido. Al disear un formulario debemos indicar la pgina PHP que procesar el formulario, as como en mtodo por el que se le pasar la informacin a la pgina. <html> <head> <title>Ejemplo de PHP</title> </head> <body>

LABORATORIO DE CMPUTO DE INGENIERA

<H1>Ejemplo de procesado de formularios</H1> Introduzca su nombre: <FORM ACTION="procesa.phtml" METHOD="GET"> <INPUT TYPE="text" NAME="nombre"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html> Por razones de seguridad para acceder a las variables del formulario hay que usar el array de parmetros $_POST[] o $_GET[] dependiendo del mtodo usado para enviar los parmetros. Method GET y POST En la pgina anterior hemos comentado que los datos de un formulario se enva mediante el mtodo indicado en el atributo METHOD de la etiqueta FORM, los dos mtodos posibles son GET y POST. La diferencia entre estos dos mtodos radica en la forma de enviar los datos a la pgina, mientras que el mtodo GET enva los datos usando la URL, el mtodo POST los enva por la entrada estndar STDIO

<html> <head> <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1>

LABORATORIO DE CMPUTO DE INGENIERA

<FORM ACTION="procesa2.phtml" METHOD="GET"> Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html> <html> <head> <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1> <FORM ACTION="procesa2.phtml" METHOD="POST"> Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

<html> <head> <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1> El nombre que ha introducido por GET es: <?php echo $_GET['nombre']," ",$_GET['apellidos'] ?><br>

LABORATORIO DE CMPUTO DE INGENIERA

El nombre que ha introducido por POST es: <?php echo $_POST['nombre']," ",$_POST['apellidos'] ?> <br> </body> </html> Envo de correo electrnico PHP nos ofrece la posibilidad de enviar emails de una manera sencilla y fcil, para ello el lenguaje nos proporciona la instruccin mail( ) <?php mail(destinatario, tema, texto del mensaje); ?> En el parmetro destinatario pondremos la direccin de email a donde se enviar el mensaje, en el parmetro tema el tema o subject del mensaje y el parmetro texto del mensaje el cuerpo del mensaje en formato texto plano. Existe una sintaxis extendida de la instruccin mail( ) que nos permite aadir informacin adicional a la cabecera del mensaje. <?php mail(destinatario, tema, texto del mensaje, informacin adicional de cabecera); ?> En la informacin de cabecera podremos incluir parmetros adicionales al mensaje como Reply-To:, From:, Content-type:... que nos permiten tener un mayor control sobre el mensaje. Manipulacin de bases de datos

LABORATORIO DE CMPUTO DE INGENIERA

Crear la base de datos

El comando para crear una base de datos MySQL es el siguiente: mysqladmin -u root create base_datos Con este comando conseguimos crear una base de datos en el servidor de bases de datos de nuestro servidor. Una vez conseguido esto debemos crear las tablas en la base de datos, la descripcin de las tablas contienen la estructura de la informacin que almacenaremos en ellas. Para lo cual usaremos en lenguaje de consultas SQL comn para todas las bases de datos relacionales En este ejemplo creamos una tabla llamada prueba con 3 campos: un campo identificador, que nos servir para identificar unvocamente una fila con el valor de dicho campo, otro campo con el nombre de una persona y por ltimo un campo con el apellido de la persona. Para crear la tabla puede usar la herramienta de administracin de MySQL de su servidor web o puede escribir un fichero de texto con el contenido de la sentencia SQL equivalente y luego decirle al motor de base de datos que la ejecute con la siguiente instruccin: mysql -u root base_datos <prueba.sql prueba.sql CREATE TABLE prueba ( ID_Prueba int(11) DEFAULT '0' NOT NULL auto_increment, Nombre varchar(100), Apellidos varchar(100), PRIMARY KEY (ID_Prueba), UNIQUE ID_Prueba (ID_Prueba)

LABORATORIO DE CMPUTO DE INGENIERA

);

Conexin a la base de datos Una vez que tenemos creada la base de datos en nuestro servidor, el siguiente paso es conectarnos a la misma desde una pgina PHP. Para ello PHP nos proporciona una serie de instrucciones para acceder a bases de datos MySQL.

<html> <head> <title>Ejemplo de PHP</title> </head> <body> <?php function Conectarse() { if (!($link=mysql_connect("localhost","usuario","Password"))) { echo "Error conectando a la base de datos."; exit(); } if (!mysql_select_db("base_datos",$link)) { echo "Error seleccionando la base de datos."; exit(); } return $link; } $link=Conectarse();

LABORATORIO DE CMPUTO DE INGENIERA

echo "Conexin con la base de datos conseguida.<br>"; mysql_close($link); //cierra la conexion ?> </body> </html> Al ejecutar la instruccin mysql_connect creamos un vnculo entre la base de datos y la pagina PHP, este vnculo ser usado posteriormente en las consultas que hagamos a la base de datos. Finalmente, una vez que hemos terminado de usar el vnculo con la base de datos, lo liberaremos con la instruccin mysql_close para que la conexin no quede ocupada.

Consultas a la base de datos Una vez que nos hemos conectado con el servidor de bases de datos, ya podemos realizar consultas a las tablas de la base de datos.

Restringir el acceso Atencin: El acceso restringido a pginas usando las variables globales $PHP_AUTH_USER, $PHP_AUTH_PW y $PHP_AUTH_TYPE solo funciona si PHP ha sido instalado como un mdulo de Apache, si ha sido instalado como un CGI los ejemplos de sta seccin no funcionarn.

LABORATORIO DE CMPUTO DE INGENIERA

Para conseguir la autentificacin en las pginas usaremos el sistema de autentificacin del protocolo HTTP, este sistema se basa en las variables globales $PHP_AUTH_USER y $PHP_AUTH_PW. * $PHP_AUTH_USER. Nombre de usuario introducido. * $PHP_AUTH_PW. Contrasea introducida. Para que el navegador nos muestre la ventana de peticin de nombre de usuario y contrasea basta con enviar la siguiente cabecera: <?php // Manual de PHP de WebEstilo.com if (!isset($PHP_AUTH_USER)) { header('WWW-Authenticate: Basic realm="Acceso restringido"'); header('HTTP/1.0 401 Unauthorized'); echo 'Authorization Required.'; exit; } else { echo "Ha introducido el nombre de usuario: $PHP_AUTH_USER<br>"; echo "Ha introducido la contrasea: $PHP_AUTH_PW<br>"; } ?> Esto provoca que se muestre la ventana de nombre de usuario y contrasea y los datos introducidos se asignen a las variables $PHP_AUTH_USER y $PHP_AUTH_PW. A partir de aqu realizaremos las comprobaciones necesarias para asegurarnos que los datos introducidos son los correctos.

LABORATORIO DE CMPUTO DE INGENIERA

En el siguiente ejemplo pediremos autorizacin y comprobaremos si el nombre de usuario es Javier y la contrasea 123, si es as tendremos acceso al resto de la pgina. <?php // Manual de PHP de WebEstilo.com if (($PHP_AUTH_USER!="Javier") || ($PHP_AUTH_PW!="123")) { header('WWW-Authenticate: Basic realm="Acceso restringido"'); header('HTTP/1.0 401 Unauthorized'); echo 'Authorization Required.'; exit; } ?> <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP</title> </head> <body> Ha conseguido el acceso a la <B>zona restringida</B>. </body> </html> Distincin de usuarios En la anterior pgina todo el mundo que tena acceso a la parte restringida entraba con el mismo nombre de usuario y contrasea, esto evidentemente no es una buena solucin, es mejor que cada persona tenga un nombre de usuario y contrasea, ya que de esta forma podemos inhabilitar a un usuario sin ver comprometida la seguridad de nuestro sitio.

LABORATORIO DE CMPUTO DE INGENIERA

En esta pgina veremos la forma de realizar esto, teniendo un archivo separado con los nombres de usuario y las contraseas vlidas. Dicho archivo podra tener el siguiente formato: nombre_de_usuario|contrasea. Por ejemplo: passwords.txt Javier|1235 Pedro|qwer Noe|Gty45e Monica|rwe4v En este ejemplo se pide la autorizacin al comienzo de la pgina si no se ha establecido con anterioridad y se comprueba con el archivo de contraseas que hemos llamado passwords.txt, si el nombre de usuario y contrasea coincide con alguna entrada del fichero se nos permite ver el resto de la pgina. <?php // Manual de PHP de WebEstilo.com if (!isset($PHP_AUTH_USER)) { header('WWW-Authenticate: Basic realm="Acceso restringido"'); header('HTTP/1.0 401 Unauthorized'); echo 'Authorization Required.'; exit; } $fich = file("passwords.txt"); $i=0; $validado=false; while ($fich[$i] && !$validado) { $campo = explode("|",$fich[$i]); if (($PHP_AUTH_USER==$campo[0]) && ($PHP_AUTH_PW==chop($campo[1]))) $validado=true; $i++; }

LABORATORIO DE CMPUTO DE INGENIERA

if (!$validado) { header('WWW-Authenticate: Basic realm="Acceso restringido"'); header('HTTP/1.0 401 Unauthorized'); echo 'Authorization Required.'; exit; } ?> <html> <head> <title>Ejemplo de PHP</title> </head> <body> Ha conseguido el acceso a la <B>zona restringida</B> con el usuario <?php echo $PHP_AUTH_USER?>. </body> </html>

Sesiones Si existe una consulta repetida en las listas de PHP, es la relativa al uso de las sesiones. El uso de sesiones es un mtodo ampliamente extendido en cualquier aplicacin de cierta entidad. Bsicamente una sesin es la secuencia de pginas que un usuario visita en un sitio web. Desde que entra en nuestro sitio, hasta que lo abandona. El trmino sesin en PHP, session en ingls, se aplica a esta secuencia de navegacin, para ello crearemos un identificador nico que asignamos a cada una de estas sesiones de navegacin. A este identificador de sesin se le denomina, comnmente, como la sesin.

LABORATORIO DE CMPUTO DE INGENIERA

El proceso en cualquier lenguaje de programacin podra ser algo as: Existe una sesin? Si existe la retomamos Si no existe creamos una nueva Generar un identificador nico Y para que no perdamos el hilo de la navegacin del usuario deberemos asociar esta sesin a todas las URLs y acciones de formulario. Podemos tambin crear un cookie que incluya el identificador de sesin, pero es conveniente recordar que la disponibilidad o no de las cookies depende del usuario, y no es conveniente fiarse de lo que un usuario pueda o no tener habilitado. Lo contado hasta ahora es teora pura y es aplicable a cualquier lenguaje de programacin C, Perl, etc. Los que programamos en PHP4 tenemos la suerte de que toda la gestin de sesiones la hace el mismo PHP. Para utilizar sesiones en PHP lo primero es inicializarlas. Podemos hacerlo explcitamente, mediante la funcin session_start(), o al registrar una variable en una sesin mediante session_register('miVariable'). En ambos casos se crea una nueva sesin, si no existe, o se retoma la sesin actual. Veamos un sencillo ejemplo: <?php session_start(); echo "He inicializado la sesin"; ?>

LABORATORIO DE CMPUTO DE INGENIERA

Esta es la forma ms bsica, si el usuario tiene los cookies activados, PHP habr insertado de forma automtica la sesin y sta ser pasada de una pgina a otra sin hacer nada ms. Desde un punto de vista prctico la sesin es operativa, pero no vemos nada. Podemos obtener la sesin en cualquier momento mediante la funcin session_id(). Inserta en las sucesivas pginas la siguiente lnea para ver si la sesin est disponible: <?php // Manual de PHP de WebEstilo.com session_start(); echo 'La sesin actual es: '.session_id(); ?> En este caso session_start() comprueba en los cookies que existe una sesin y continua con ella, session_id() devuelve el identificador actual.

Incrustacin de imgenes La funcin que vamos a utilizar es imagePaletteCopy(). Esta funcin copia la paleta de una imagen indexada (fuente) a otra (destino), forzando que la imagen destino utilice los mismos colores que la imagen fuente. Supongamos que esta es la imagen que queremos convertir a escala de grises:

LABORATORIO DE CMPUTO DE INGENIERA

Mientras ms colores mayor ser la calidad de la imagen. No olvidemos que a mayor calidad tambin ser mayor el tiempo de transferencia. <?php header("Content-type: image/gif"); // Obtenemos la imagen original $imagen = imagecreatefromjpeg("imagen1.jpg"); // Convertimos la imagen a indexada imagetruecolortopalette($imagen,true,256); // Esta ser la imagen para la escala de grises $escala = imagecreatefromgif("escala1.gif"); // Copiamos la paleta de escala a la imagen imagepalettecopy($imagen,$escala); imagedestroy($escala); imagegif($imagen);

LABORATORIO DE CMPUTO DE INGENIERA

imagedestroy($imagen); ?> Este ser el resultado al utilizar la paleta de la escala de grises en la imagen a colores:

Manejo de Imgenes y texto Habr ocasiones en las que necesitemos generar textos con imgenes en lugar de con fuentes TrueType. Un ejemplo es la siguiente imagen:

LABORATORIO DE CMPUTO DE INGENIERA

Muy Importante: Habr que nombrar cada archivo PNG con su correspondencia de caracter, esto es; la imagen de la letra 'A' lo llamaremos 'a.png', la imagen de la letra 'B' 'b.png', y as sucesivamente. Para comenzar, descarguen el juego de caracteres en maysculas de la A a la Z, los nmeros del 0 al 9 y una imagen de fondo ('bg_big.png') que he preparado para este ejercicio y descomprmanlo en una carpeta llamada 'abcdario'. El archivo PHP que vamos a trabajar deber encontrarse en el mismo nivel que la carpeta que contiene las imgenes, no dentro de ella. Ahora vamos con el cdigo: <?php // Comenzamos con el 'header' header("Content-type: image/jpeg"); // Creamos la imagen $imagen = imagecreatetruecolor(420,132); // Definimos la imagen que servir de fondo $fondo = imagecreatefrompng("abcdario/bg_big.png"); // La definimos como patrn de fondo imagesettile($imagen,$fondo); // Rellenamos con el patrn imagefill($imagen,0,0,IMG_COLOR_TILED); // Damos salida a la imagen imagejpeg($imagen);

LABORATORIO DE CMPUTO DE INGENIERA

//Destruimos las imagenes imagedestroy($fondo); imagedestroy($imagen); ?> eriores

También podría gustarte