Sunteți pe pagina 1din 65

Fundamentos Webs

Fundamentos Webs, Segunda Parte

Mdulo II

Ing. Msc. Daniel Bojorge

Pgina 1 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Portada ...................................................................................................................... 1

Introduccin a la programacin en PHP .................................................................. 4


Breve Historia de PHP............................................................................................. 4
Tareas principales del PHP ..................................................................................... 5
Funciones de correo electrnico.............................................................................. 5
Gestin de bases de datos ...................................................................................... 6
Gestin de archivos ................................................................................................. 6
Qu es PHP?......................................................................................................... 7
QUE NECESITA PARA QUE FUNCIONE PHP? .................................................. 7
INICIAR CON PHP .................................................................................................. 8
Descarga de Apache ............................................................................................... 8
Instalar Apache .................................................................................................... 9
Estructura del fichero principal de configuracin del Apache. (httpd.conf) ..... 15
Instalar PHP........................................................................................................... 17
Descargar PHP............................................................................................... 17
Instalacin ...................................................................................................... 17
Configuracin de PHP .................................................................................... 18
Configuracin de Apache ............................................................................... 20
Comprobacin ................................................................................................ 23
Introduccin a la Sintaxis PHP............................................................................... 23
Variables en PHP .................................................................................................. 25
Cambio del Tipo de Variable en PHP................................................................. 28
VARIABLES VARIABLES................................................................................... 29
Variables del Sistema en PHP............................................................................... 30
Tipos de Datos....................................................................................................... 30
Enteros............................................................................................................... 30
Nmeros Entero Flotante ................................................................................... 30
Operadores............................................................................................................ 30
Cadenas............................................................................................................. 30
Caracteres Protegidos (Caracteres Especiales)............................................. 31
Operadores de Comparacin ............................................................................. 31
Operadores Lgicos........................................................................................... 31
Constantes......................................................................................................... 32
mbito de las variables en PHP ............................................................................ 34
Matriz GLOBALS ................................................................................................... 35
Declaracin de uso de variables globales dentro de una funcin ........................ 35
Tablas o Arrays en PHP ........................................................................................ 36
Trabajo con tablas o arrays en PHP .................................................................. 39
Modificar el nmero de elementos de un array............................................... 39
Reducir el tamao de un array ....................................................................... 39
Funciones en PHP................................................................................................. 42
Ejemplo de funcin............................................................................................. 45
Ms sobre funciones: paso de parmetros ........................................................ 46
Paso de parmetros ....................................................................................... 46
Los parmetros se pasan por valor ................................................................ 46
Paso de parmetros por referencia ................................................................ 47
Fundamentos Webs, Segunda Parte

Pgina 2 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Parmetros por defecto .................................................................................. 47


Ms sobre funciones: Retorno de valores.......................................................... 48
Ejemplo de funcin IVA .................................................................................. 48
Retornar mltiples valores.................................................................................. 49
Sentencias de Control ........................................................................................... 49
Control del flujo en PHP: Condiciones IF ........................................................... 49
Control del flujo en PHP: Bucles I ...................................................................... 51
Bucle While..................................................................................................... 52
Bucle Do While .......................................................................................... 53
Bucle For ........................................................................................................ 53
Bucle foreach.................................................................................................. 53
Break y Continue ............................................................................................ 54
Pasar variables por la URL .................................................................................... 54
Pasar variables por URL .................................................................................... 55
$HTTP_GET_VARS........................................................................................... 56
$_GET................................................................................................................ 56
Procesar variables de formularios ......................................................................... 56
$HTTP_POST_VARS ........................................................................................ 57
$_POST ............................................................................................................. 57
Ejemplo de restriccin de acceso por edad........................................................ 57
Autollamadas de Pginas ...................................................................................... 59
Para un formulario.............................................................................................. 59
Para paso de variables por URL ........................................................................ 60
Utilizacin de Cookies ........................................................................................... 61
Sesiones................................................................................................................ 63

Fundamentos Webs, Segunda Parte

Pgina 3 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Introduccin a la programacin en PHP


PHP es uno de los lenguajes de lado servidor ms extendidos en la web. Nacido
en 1994, se trata de un lenguaje de creacin relativamente creciente que ha tenido
una gran aceptacin en la comunidad de webmasters debido sobre todo a la
potencia y simplicidad que lo caracterizan.
PHP nos permite embeber su pequeos fragmentos de cdigo dentro de la pgina
HTML y realizar determinadas acciones de una forma fcil y eficaz sin tener que
generar programas programados ntegramente en un lenguaje distinto al HTML.
Por otra parte, y es aqu donde reside su mayor inters con respecto a los
lenguajes pensados para los CGI, PHP ofrece un sinfn de funciones para la
explotacin de bases de datos de una manera llana, sin complicaciones.
Podramos efectuar la quizs odiosa comparacin de decir que PHP y ASP son
lenguajes parecidos en cuanto a potencia y dificultad si bien su sintaxis puede
diferir sensiblemente. Algunas diferencias principales pueden, no obstante,
mencionarse:
- PHP, aunque multiplataforma, ha sido concebido inicialmente para entornos
UNIX y es en este sistema operativo donde se pueden aprovechar mejor sus
prestaciones. ASP, siendo una tecnologa Microsoft, esta orientado hacia sistemas
Windows, especialmente NT.
- Las tareas fundamentales que puede realizar directamente el lenguaje son
definidas en PHP como funciones mientras que ASP invoca ms frecuentemente
los objetos. Por supuesto, esto no es ms que una simple cuestin de forma ya
que
ambos
lenguajes
soportan igualmente
ambos
procedimientos.
- ASP realiza numerosas tareas sirvindose de componentes (objetos) que deben
ser comprados (o programados) por el servidor a determinadas empresas
especializadas. PHP presenta una filosofa totalmente diferente y, con un espritu
ms generoso, es progresivamente construido por colaboradores desinteresados
que implementan nuevas funciones en nuevas versiones del lenguaje.
Breve Historia de PHP
PHP es un lenguaje creado por una gran comunidad de personas. El sistema fue
desarrollado originalmente en el ao 1994 por Rasmus Lerdorf como un CGI
escrito en C que permita la interpretacin de un nmero limitado de comandos. El
sistema fue denominado Personal Home Page Tools y adquiri relativo xito
gracias a que otras personas pidieron a Rasmus que les permitiese utilizar sus
programas en sus propias pginas. Dada la aceptacin del primer PHP y de
manera adicional, su creador dise un sistema para procesar formularios al que
le atribuy el nombre de FI (Form Interpreter) y el conjunto de estas dos
herramientas, sera la primera versin compacta del lenguaje: PHP/FI.
Fundamentos Webs, Segunda Parte

Pgina 4 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

La siguiente gran contribucin al lenguaje se realiz a mediados del 97 cuando se


volvi a programar el analizador sintctico, se incluyeron nuevas funcionalidades
como el soporte a nuevos protocolos de Internet y el soporte a la gran mayora de
las bases de datos comerciales. Todas estas mejoras sentaron las bases de PHP
versin 3. Actualmente PHP se encuentra en su versin 4, que utiliza el motor
Zend, desarrollado con mayor meditacin para cubrir las necesidades actuales y
solucionar algunos inconvenientes de la anterior versin. Algunas mejoras de esta
nueva versin son su rapidez -gracias a que primero se compila y luego se
ejecuta, mientras que antes se ejecutaba mientras se interpretaba el cdigo-, su
mayor independencia del servidor web -creando versiones de PHP nativas para
ms plataformas- y un API ms elaborado y con ms funciones.

Grfica del nmero de


Estadstica de Netcraft.

dominios

direcciones

IP

que

utilizan

PHP.

En el ltimo ao, el nmero de servidores que utilizan PHP se ha disparado,


logrando situarse cerca de los 5 millones de sitios y 800.000 direcciones IP, lo que
le ha convertido a PHP en una tecnologa popular. Esto es debido, entre otras
razones, a que PHP es el complemento ideal para que el tndem Linux-Apache
sea compatible con la programacin del lado del servidor de sitios web. Gracias a
la aceptacin que ha logrado, y los grandes esfuerzos realizados por una creciente
comunidad de colaboradores para implementarlo de la manera ms ptima,
podemos asegurar que el lenguaje se convertir en un estndar que compartir
los xitos augurados al conjunto de sistemas desarrollados en cdigo abierto.
Tareas principales del PHP
Poco a poco el PHP se va convirtiendo en un lenguaje que nos permite hacer de
todo. En un principio diseado para realizar poco ms que un contador y un libro
de visitas, PHP ha experimentado en poco tiempo una verdadera revolucin y, a
partir de sus funciones, en estos momentos se pueden realizar una multitud de
tareas tiles para el desarrollo del web:

Funciones de correo electrnico

Fundamentos Webs, Segunda Parte

Pgina 5 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Podemos con una facilidad asombrosa enviar un e-mail a una persona o lista
parametrizando toda una serie de aspectos tales como el e-mail de procedencia,
asunto, persona a responder...
Otras funciones menos frecuentes pero de indudable utilidad para gestionar
correos electrnicos son incluidas en su librera.
Gestin de bases de datos
Resulta difcil concebir un sitio actual, potente y rico en contenido que no es
gestionado por una base de datos. El lenguaje PHP ofrece interfaces para el
acceso a la mayora de las bases de datos comerciales y por ODBC a todas las
bases de datos posibles en sistemas Microsoft, a partir de las cuales podremos
editar el contenido de nuestro sitio con absoluta sencillez.
Gestin de archivos
Crear, borrar, mover, modificar...cualquier tipo de operacin ms o menos
razonable que se nos pueda ocurrir puede ser realizada a partir de una amplia
librera de funciones para la gestin de archivos por PHP. Tambin podemos
transferir archivos por FTP a partir de sentencias en nuestro cdigo, protocolo
para el cual PHP ha previsto tambin gran cantidad de funciones.
Tratamiento de imgenes
Evidentemente resulta mucho ms sencillo utilizar Photoshop para una el
tratamiento de imgenes pero...Y si tenemos que tratar miles de imgenes
enviadas por nuestros internautas?
La verdad es que puede resultar muy tedioso uniformar en tamao y formato miles
de imgenes recibidas da tras da. Todo esto puede ser tambin automatizado
eficazmente mediante PHP.
Tambin puede parecer til el crear botones dinmicos, es decir, botones en los
que utilizamos el mismo diseo y solo cambiamos el texto. Podremos por ejemplo
crear un botn haciendo una nica llamada a una funcin en la que introducimos
el estilo del botn y el texto a introducir obteniendo automticamente el botn
deseado.
A partir de la librera de funciones graficas podemos hacer esto y mucho ms.
Muchas otras funciones pensadas para Internet (tratamiento de cookies, accesos
restringidos, comercio electrnico...) o para propsito general (funciones
matemticas, explotacin de cadenas, de fechas, correccin ortogrfica,
compresin de archivos...) son realizadas por este lenguaje. A esta inmensa
librera cabe ahora aadir todas las funciones personales que uno va creando por
necesidades propias y que luego son reutilizadas en otros sitios y todas aquellas
intercambiadas u obtenidas en foros o sitios especializados.

Fundamentos Webs, Segunda Parte

Pgina 6 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Como puede verse, las posibilidades que se nos presentan son


sorprendentemente vastas. Lo nico que se necesita es un poco de ganas de
aprender y algo de paciencia en nuestros primeros pasos. El resultado puede ser
muy satisfactorio.

Qu es PHP?

El lenguaje PHP es un lenguaje de programacin de estilo clsico, es decir, es un


lenguaje de programacin con variables, sentencias condicionales, ciclos (bucles),
funciones. No es un lenguaje de marcado como podra ser HTML, XML o WML.
Est ms cercano a JavaScript o a C, para aquellos que conocen estos lenguajes.
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. El
resultado es normalmente una pgina HTML pero igualmente podra ser una
pagina WML.
Al ser PHP un lenguaje que se ejecuta en el servidor no es necesario que su
navegador lo soporte, es independiente del browser, pero sin embargo para que
las pginas PHP funcionen, el servidor donde estn alojadas debe soportar PHP.

QUE NECESITA PARA QUE FUNCIONE PHP?


Como todo lenguaje de lado servidor, PHP, requiere de la instalacin de un
servidor en nuestro PC para poder trabajar en local. Este modo de trabajo resulta
a todas luces ms prctico que colgar los archivos por FTP en el servidor y
ejecutarlos desde Internet.
As pues, antes comenzar a crear nuestros programas en PHP, es necesario:

Fundamentos Webs, Segunda Parte

Pgina 7 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

1. Convertir nuestro ordenador en un servidor. Esto se hace instalando uno de


los varios servidores disponibles para el sistema operativo de nuestra
mquina.
2. Introducir en nuestro servidor los archivos que le permitirn la comprensin
del PHP. Estos archivos pueden ser descargados, en su versin ms
actual, de la pgina oficial de PHP (http://www.php.net/downloads.php).
Para conocer la forma de instalar PHP sobre cada servidor de cada sistema
operativo podemos dirigirnos al apartado de documentacin de la pgina oficial de
PHP (http://www.php.net/docs.php) donde disponemos de un manual en HTML de
rpida consulta y un enorme manual en PDF de casi 1000 pginas traducido al
castellano donde explican minuciosamente y entre otras cosas, los pasos a seguir
para cada caso particular. De todos modos, nosotros vamos a ofrecer algunas
ayudas para configurar PHP en los sistemas ms habituales.
La eleccin de nuestro programa servidor tendr mucho que ver con el sistema
operativo que se est corriendo en la pc. Estas seran algunas posibilidades de
sistemas operativos y soluciones que funcionan bien.
Hay que decir, no obstante, que las mejores prestaciones de este lenguaje son
obtenidas trabajando en entorno Unix o Linux y con un servidor Apache, la
combinacin ms corriente en la mayora de los servidores de Internet que
trabajan con PHP.
Lo que necesita es lo siguiente:
o
o
o
o

Versin compilada de PHP (http://www.php.net).


Un servidor web (Apache, PWS, IIS, Etc.).
Si desea manejar base de datos se recomienda Mysql Server
(http://www.mysql.com).

INICIAR CON PHP


Instalar el servidor WEB. Para instalarlo tenemos que seguir los siguientes pasos:
Descarga de Apache
El servidor web Apache se puede descargar en la pgina de la Fundacin Apache,
en apache.org. En la URL http://httpd.apache.org/ tienen una seccin en particular
para el servidor HTTP (Protocolo de transmisin utilizado en la web), en la que
tendremos que buscar el enlace para descarga.
Una vez en la pgina de descarga debemos buscar la ltima versin estable o la
versin que recomendada. El servidor est disponible para sistemas Unix o
Windows, por lo que nos ofrecern diversas opciones de descarga, incluso para
Fundamentos Webs, Segunda Parte

Pgina 8 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

obtener el cdigo fuente del programa. Si deseamos instalarlo en un sistema


Windows, necesitamos obtener el archivo Win-32 Binary, que es un instalador
Windows.
Instalar Apache
Una vez descargado, debemos instalarlo en nuestro sistema, ejecutando el
archivo obtenido. Daremos paso a un asistente que nos guiar en el proceso de
instalacin del servidor. Durante el proceso nos preguntar el nombre del dominio
y del servidor, que podemos rellenar con "localhost". Nos pedir tambin una
direccin de correo, que podemos rellenar con cualquiera que deseemos. Tambin
nos pregunta si deseamos que el servidor responda en el puerto 80 para todos los
usuarios o si deseamos que slo se active para el usuario actual en el puerto
8080, cuando se inicie manualmente. Lo normal es que lo activemos para todos
los usuarios.

Fundamentos Webs, Segunda Parte

Pgina 9 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Pantalla de Informacin del ordenador, donde estamos haciendo la instalacin,


nos pedir los siguientes datos:
Al igual que podemos identificar en una red a un ordenador mediante su
direccin IP, tambin se le puede identificar mediante un nombre dentro del
dominio de nombres (red de nombres) donde est ubicado. Estos nombres
se guardan en un servidor de nombres (DNS). Este servidor de nombres
suele tener asociado al menos un dominio, al cual vamos "enganchando"
los distintos equipos (simplemente poniendo como "apellido" al equipo el
nombre de dominio).

Fundamentos Webs, Segunda Parte

Pgina 10 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Normalmente en los centros educativos o en los equipos domsticos, los


equipos no estn registrados en ningn DNS, as que durante esta
instalacin, bastar con poner cualquier dato en estos apartados (es una
informacin obligatoria en la instalacin de Apache que posteriormente no
se utilizar). Sin embargo, nuestro servidor web funcionar, ya que los
ordenadores que se quieran conectar a nuestro servidor web debern poner
como URL(direccin en el navegador de pginas web), la direccin IP de
nuestro servidor.
Network Domain, el dominio de DNS donde se registrar el servidor web.
Por ejemplo, micentro.es.
Server Name, el nombre del equipo en el dominio de DNS . Normalmente
est formado por el nombre del equipo seguido de un punto y el nombre del
dominio al que est asociado (nombre que se ha puesto en el apartado
anterior). Por ejemplo, miequipo.micentro.es.
Administrator's Email Address, esta es la direccin de correo electrnico,
en la que se recibirn los avisos que nos enven los que visiten nuestras
pginas, y se mostrar cuando haya mensajes de error en el ordenador que
intente acceder a pginas de nuestro servidor web. Debe ser una direccin
de correo real si queremos que nos lleguen mensajes desde las personas
que lean nuestras pginas.
A continuacin, se pregunta si se quiere lanzar el servidor web como un
servicio para todos los usuarios (for All Users, on Port 80, as a Service), o si
se lanzar manualmente y nicamente para el usuario actual (only for the
Current User, on port 8080). Pulsamos sobre la primera de las opciones.
As cuando se encienda el ordenador en el se est instalando el servidor
web se pondr en funcionamento automticamente el servidor y adems
todos los usuarios de dicho ordenador podrn lanzarlo o pararlo(si estamos
haciendo la instalacin desde una cuenta sin derechos de administrador no
se nos har esta pregunta y se instalar solo para el usuario actual).

Fundamentos Webs, Segunda Parte

Pgina 11 de 65

Fundamentos Webs

Fundamentos Webs, Segunda Parte

Mdulo II

Ing. Msc. Daniel Bojorge

Pgina 12 de 65

Fundamentos Webs

Fundamentos Webs, Segunda Parte

Mdulo II

Ing. Msc. Daniel Bojorge

Pgina 13 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Podemos comprobar que ha aparecido en nuestra barra de tareas el siguiente


smbolo:

Con estos datos queda configurado el Apache inicialmente. En cualquier momento


podemos editarlos a nuestro gusto o necesidades. Para ello deberemos editar el
fichero httpd.conf, que se encuentra en el directorio de instalacin de Apache, que

Fundamentos Webs, Segunda Parte

Pgina 14 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

hemos indicado durante el proceso de instalacin, ms concretamente, en el


subdirectorio conf.
Una vez instalado el Apache, en el directorio raz de la instalacin, se encontrarn
los siguientes directorios:
bin: ficheros ejecutables del Apache.
conf: ficheros de configuracin del servidor.
error: ficheros con los mensajes de error del servidor, en varios lenguajes.
htdocs: directorio raz por defecto del servidor (Se guardan las pginas Web).
icons: directorio donde se encuentran los iconos que utiliza el servidor (entre otras
cosas para mostrar estructuras de directorios).
logs: directorio donde se almacenan los registros de acceso y errores del servidor.
manual: directorio donde se encuentra el manual del Apache.
proxy: Directorio con los ficheros de la cache del servidor.
Bsicamente las configuraciones del servidor residen dentro de dos ficheros, el de
configuracin principal que se encuentra dentro de la carpeta conf, con el nombre
httpd.conf, o dentro de un fichero con el nombre .htaccess que se puede encontrar
dentro de cualquier directorio que se encuentre mapeado dentro del servidor.
Dentro de cada uno de estos ficheros se ubican las directivas de configuracin.
Muchas de estas directivas de configuracin se pueden encontrar tanto dentro del
fichero de configuracin principal como dentro de un fichero .htaccess. Los valores
de las directivas que se encuentran dentro de un fichero .htaccess, prevalecen
frente a los valores de configuracin especificados dentro del fichero httpd.conf.
Estructura del fichero principal de configuracin del Apache. (httpd.conf)
El fichero httpd.conf es el fichero principal de configuracin del Apache, se
encuentra dentro del directorio Conf, en el directorio de instalacin del Apache.
En primer lugar hay que destacar que el fichero est dividido en tres secciones,
que son:
1 Parmetros globales
2 Directivas de Funcionamiento
3 Host Virtuales
En el fichero se encuentran todos los parmetros de funcionamiento del Apache.
Algunos parmetros son generales para la instalacin y funcionamiento del
Fundamentos Webs, Segunda Parte

Pgina 15 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Apache. Muchos otros de los parmetros se pueden configurar independientes


para un conjunto de directorios y/o ficheros . En estos casos los parmetros se
encuentran ubicados dentro de secciones donde se indica el mbito de aplicacin
del parmetro.
Las secciones ms importantes son:
<Directory> : Los parmetros que se encuentran dentro de esta seccin, slo se
aplicarn a el directorio especificado y a sus subdirectorios.
<DirectoryMatch>: Igual que Directory, pero acepta en el nombre del directorio
expresiones regulares.
<Files>: Los parmetros de configuracin proporcionan control de acceso de los
ficheros por su nombre.
<FilesMatch>: Igual que Files, pero acepta expresiones regulares en el nombre
del fichero.
<Location>: Proporciona un control de acceso de los ficheros por medio de la
URL
<LocationMatch>: Igual que Location, pero acepta expresiones regulares en el
nombre del fichero.
Algunas veces las directivas de funcionamiento de las secciones anteriores se
pueden cruzar en cuyo caso tienen el siguiente orden de preferencia:
1. <Directory> y .htaccess (.htaccess prevalece frente a <Directory>)
2. <DirectoryMatch> y <Directory>
3. <Files> y <FilesMatch>
4. <Location> y <LocationMatch>
Tambin hay que destacar, que el fichero contiene un montn de comentarios
para su correcta utilizacin, las lneas comentadas aparecen con el smbolo #.

Fundamentos Webs, Segunda Parte

Pgina 16 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Instalar PHP
Descargar PHP
Descargar la ltima versin estable de: http://www.php.net/downloads.php
Instalacin
Es un archivo comprimido con zip, asi que, logicamente ;) tenemos que
descomprimir (se llama php-4.0.2-Win32.zip). Vamos a crear, por ejemplo, un
directorio que se llame php, dentro del directorio apache que ya habiamos creado
anteriormente y lo descomprimimos alli. Siguiendo con la configuracin por defecto
que realizamos con apache, debe quedar asi:

Fundamentos Webs, Segunda Parte

Pgina 17 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Configuracin de PHP
1. Marcamos con el botn derecho del ratn el fichero php.ini-optimized para
editar el fichero con el bloc de notas.
2. Estamos editando el fichero php.ini-optimized, y necesitamos indicarle el
path a doc_root para que apunte a la raiz web de nuestro servidor (
C:\Archivos de programa\Apache Group\Apache\htdocs) y a
extension_dl
(que
es
C:\Archivos
de
programa\Apache
Group\Apache\php) para que apunte a donde hemos puesto php.

3. Vamos a indicarle los modulos a cargar al inicio (seguimos en el mismo


fichero, un poquito ms abajo). Para ello solo tenemos que borrar los ; que
hay al principio de cada linea. Algunos mdulos requieren que tenga
instaladas en sus sistema libreras adicionales para que el mdulo funcione
correctamente, asi que borrar solo los que tienen el punto morado.

Fundamentos Webs, Segunda Parte

Pgina 18 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Los modulos de PHP son los siguientes:


php3_calendar.dll

Funciones de conversin de calendario

php3_crypt.dll

Funciones de criptografa

php3_dbase.dll

Funciones para DBase

php3_dbm.dll

Emulacin GDBM con la librera Berkeley DB2

php3_filepro.dll

Acceso SLO LECTURA a bases de datos filepro

php3_gd.dll

Funciones de librera GD para manipular GIF

php3_hyperwave.dll Funciones de HyperWave


php3_imap4r2.dll

Funciones de IMAP 4

php3_ldap.dll

Funciones de LDAP

php3_msql1.dll

Cliente de mSQL 1

php3_msql2.dll

Cliente de mSQL 2

php3_mssql.dll

Cliente de MSSQL client (requiere las libreras de MSSQL


DB

php3_mysql.dll

Funciones de MySQL

Fundamentos Webs, Segunda Parte

Pgina 19 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

php3_nsmail.dll

Funciones de correo de Netscape

php3_oci73.dll

Funciones de Oracle

php3_snmp.dll

Funciones get y walk de SNMP (slo en NT!)

php3_zlib.dll

Funciones de ZLib

4. Una vez terminadas todas las modificaciones, lo que vamos a hacer es


guardarlo como php.ini en el directorio windows (o en los directorios winnt
o winnt40, segun la versin del sistema operativo que tengais). Pulsa
Archivo , Guardar como en el menu del NOTEPAD. Tened mucho
cuidadito de guardarlo asi como muestra la imagen, porque si teneis
pulsada la opcin Guardad como archivos de tipo: Documentos de
texto se aadira la extensin txt a php.ini (quedando como php.ini.txt) con
lo que no funcionar. Hay que elegir la opcin Todos los archivos (*.*)

Configuracin de Apache
5. Ahora vamos a configurar apache para que pueda usar PHP. Vamos a su
directorio conf y, lo mismo que en el punto dos, marcamos con el boton
derecho del ratn el fichero httpd.conf para editar el fichero con el bloc de
notas.

Fundamentos Webs, Segunda Parte

Pgina 20 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

6. Ahora buscamos donde pone DirectoryIndex index.html y le aadimos lo


que he subrayado en azul.

Fundamentos Webs, Segunda Parte

Pgina 21 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Copia este texto y pgalo en ese lugar (aade despues de DirectoryIndex


index.html index.php e index.php3 a mano)
ScriptAlias /php/ "C:/Archivos de programa/Apache Group/Apache/php/"
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
AddType application/x-httpd-php .php .php4
AddType application/x-httpd-php-source .phps
AddHandler cgi-script .cgi
AddHandler php3-script .php3
AddHandler php-script .php .php4
Action php3-script /php/php.exe
Action php-script /php/php.exe
Una vez realizado este paso pulsar Archivo . Guardar .

Fundamentos Webs, Segunda Parte

Pgina 22 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Comprobacin
Con el mismo bloc de notas pulsamos Archivo . Nuevo . y escribimos solo esta
frase <? phpinfo(); ?> y pulsamos Archivo . Guardar (acordaros de la advertencia
que os he hecho en el punto 4 de como guardarlo eh?) le llamamos como
info.php (je, je, nuestro primer "programa") y lo guardamos en el directorio httdocs
de Apache (el directorio raiz donde parten las pginas web).
Ponemos en marcha el servidor Apache y abrimos el navegador (no hace falta que
estemos en Internet ahora). Ponemos en la barra del navegador
http://localhost/info.php.

Si no aparece esta pgina, entonces esta mal instalado el PHP y hay que
volverlo a instalar, aunque hay algunas ocasiones que se necesita reiniciar el
sistema para que funcione.
Introduccin a la Sintaxis PHP
PHP se escribe dentro de la propia pgina web, junto con el cdigo HTML y, como
para cualquier otro tipo de lenguaje incluido en un cdigo HTML, en PHP
necesitamos especificar cules son las partes constitutivas del cdigo escritas en
este lenguaje. Esto se hace, como en otros casos, delimitando nuestro cdigo por
etiquetas. Podemos utilizar distintos modelos de etiquetas en funcin de nuestras
Fundamentos Webs, Segunda Parte

Pgina 23 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

preferencias y costumbres. Hay que tener sin embargo en cuenta que no


necesariamente todas estn configuradas inicialmente y que otras, como es el
caso de <% y %> slo estn disponibles a partir de una determinada versin
(3.0.4.).
Estos modos de abrir y cerrar las etiquetas son:
<?
y
?>
<%
y
%>
<?php y
?>
<script languaje="php">

Este ultimo modo est principalmente aconsejado a aquellos que tengan el valor
de trabajar con Front Page ya que, usando cualquier otro tipo de etiqueta,
corremos el riesgo de que la aplicacin nos la borre sin ms debido a que se trata
de un cdigo incomprensible para ella.
El modo de funcionamiento de una pgina PHP, a grandes rasgos, no difiere del
clsico para una pgina dinmica de lado servidor: El servidor va a reconocer la
extensin correspondiente a la pgina PHP (phtml, php, php4,...) y antes de
enviarla al navegador va a encargarse de interpretar y ejecutar todo aquello que
se encuentre entre las etiquetas correspondientes al lenguaje PHP. El resto, lo
enviara sin ms ya que, asumir que se trata de cdigo HTML absolutamente
comprensible por el navegador.
Otra caracterstica general de los scripts en PHP es la forma de separar las
distintas instrucciones. Para hacerlo, hay que acabar cada instruccin con un
punto y coma ";". Para la ultima expresin, la que va antes del cierre de etiqueta,
este formalismo no es necesario.
Un comentario, para aquellos que no lo sepan, es una frase o palabra que
nosotros incluimos en el cdigo para comprenderlo ms fcilmente al volverlo a
leer un tiempo despus y que, por supuesto, el ordenador tiene que ignorar ya que
no va dirigido a l sino a nosotros mismos. Los comentarios tienen una gran
utilidad ya que es muy fcil olvidarse del funcionamiento de un script programado
un tiempo atrs y resulta muy til si queremos hacer rpidamente comprensible
nuestro cdigo a otra persona.
Pues bien, la forma de incluir estos comentarios es variable dependiendo si
queremos escribir una lnea o ms. Veamos esto con un primer ejemplo de script:
<?
$mensaje="Tengo hambre!!"; //Comentario de una linea
echo $mensaje; #Este comentario tambin es de una linea
/*En este caso
mi comentario ocupa
Fundamentos Webs, Segunda Parte

Pgina 24 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

varias lineas, lo ves? */


?>
Si usamos doble barra (//) o el smbolo # podemos introducir comentarios de una
lnea. Mediante /* y */ creamos comentarios multilnea. Por supuesto, nada nos
impide de usar estos ltimos en una sola lnea.
En este punto, no deben preocuparse si no logran entender el texto entre las
etiquetas. Como adelanto, podemos decir que las variables en PHP se definen
anteponiendo un smbolo de dlar ($) y que la instruccin echo sirve para sacar en
pantalla lo que hay escrito a continuacin.
Recordamos que todo el texto insertado en forma de comentario es
completamente ignorado por el servidor. Resulta importante acostumbrarse a dejar
comentarios, es algo que se agradece con el tiempo.
Variables en PHP
Antes de ver como se utilizan las variables en PHP veremos una pequea
introduccin a las variables, para los que no conozcan que es una variable.
Una variable consiste en un elemento al cual le damos un nombre y le
atribuimos un determinado tipo de informacin. Las variables pueden ser
consideradas como la base de la programacin.
De este modo podramos escribir en un lenguaje ficticio:
a="perro"
b="muerde"
La variable que nosotros llamamos "a" posee un elemento de informacin de tipo
texto que es "perro". Asimismo, la variable "b" contiene el valor "muerde".
Podramos definir una tercera variable que fuese la suma de estas dos:
c=a+b
Si introdujsemos una peticin de impresin de esta variable en nuestro
lenguaje
ficticio:
imprimir(c)
El resultado podra ser:
perro muerde
Podramos de la misma forma trabajar con variables que contuviesen nmeros y
construir nuestro programa:
a=3 b=4
c=a+b
Fundamentos Webs, Segunda Parte

Pgina 25 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

imprimir(c)
El resultado de nuestro programa sera:
7
En PHP las variables se representan como un signo de pesos seguido por el
nombre de la variable. El nombre de la variable es sensible a minsculas y
maysculas.
$var = "Santana";
$Var = "Pedro";
echo "$var, $Var";
// produce la salida Santana, Pedro"
Dependiendo de la informacin que contenga, una variable puede ser considerada
de uno u otro tipo:
Variables numricas
Almacenan cifras
Enteros $entero=2002; Numeros sin decimales
Real

$real=3.14159; Numeros con o sin decimal

Variables alfanumricas
Almacenan textos compuestos de nmeros y/o cifras
Cadenas Almacenan variables alfanumricas $cadena="Hola amigo";

Tablas
Almacenan series de informaciones numricas y/o alfanumricas
$sentido[1]="ver";
$sentido[2]="tocar";
Arrays Son las variables que guardan las tablas $sentido[3]="oir";
$sentido[4]="gusto";
$sentido[5]="oler";

Objetos
Fundamentos Webs, Segunda Parte

Pgina 26 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Se trata de conjuntos de variables y funciones asociadas. Presentan una


complejidad mayor que las variables vistas hasta ahora pero su utilidad es ms
que interesante.

A diferencia de otros lenguajes, PHP posee una gran flexibilidad a la hora de


operar con variables. En efecto, cuando definimos una variable asignndole un
valor, el ordenador le atribuye un tipo. Si por ejemplo definimos una variable entre
comillas, la variable ser considerada de tipo cadena:
$variable="5"; //esto es una cadena

Sin embargo si pedimos en nuestro script realizar una operacin matemtica con
esta variable, no obtendremos un mensaje de error sino que la variable cadena
ser asimilada a numrica:
<?
$cadena="5"; //esto es una cadena
$entero=3; //esto es un entero
echo
$cadena+$entero
?>
Ejecutar script
Este script dar como resultado "8". La variable cadena ha sido asimilada en
entero (aunque su tipo sigue siendo cadena) para poder realizar la operacin
matemtica. Del mismo modo, podemos operar entre variables tipo entero y real.
No debemos preocuparnos de nada, PHP se encarga durante la ejecucin de
interpretar el tipo de variable necesario para el buen funcionamiento del programa.
Sin embargo, en contraste, hay que tener cuidado en no cambiar maysculas por
minsculas ya que, en este sentido, PHP es sensible. Conviene por lo tanto
trabajar ya sea siempre en maysculas o siempre en minsculas para evitar este
tipo de malentendidos a veces muy difciles de localizar.
Variables asignadas por referencia
En PHP tambin podemos asignar variables por referencia. En ese caso no se les
asigna un valor, sino otra variable, de tal modo que las dos varialbles comparten
espacio en memoria para el mismo dato.
La notacin para asignar por referencia es colocar un "&" antes del nombre de la
variable.

Fundamentos Webs, Segunda Parte

Pgina 27 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

<?php
$foo = 'Bob'; // Asigna el valor 'Bob' a $foo
$bar = &$foo; // Referencia $foo va $bar.
$bar = "Mi nombre es $bar"; // Modifica $bar...
echo $foo; // $foo tambin se modifica.
echo $bar;
?>
Esto dar como resultado la visualizacin dos veces del string "Mi nombre es Bob".
Algo como:
Mi nombre es BobMi nombre es Bob
Cambio del Tipo de Variable en PHP
PHP no requiere que indiquemos el tipo que va a contener una variable, sino que
lo deduce del valor que asignemos a la variable. Asimismo, se encarga de
actualizar automticamente el tipo de la variable cada vez que le asignamos un
nuevo valor.
Por ello, para cambiar el tipo de una variable simplemente le asignamos un valor
con un nuevo tipo.
Nota: Se excluyen en este caso el cambio de variables a tipo Array porque la
sintaxis puede resultar ambigua al expresar ese cdigo, es decir, puede darse el
caso de que una lnea de cdigo pueda significar dos cosas.
$a = "1";
//$a es una cadena
$a[0] = "f";
//Estamos editando el ndice de la cadena o forzando a array?
Forzado
En cualquier caso, podemos forzar una variable para que cambie de tipo con la
funcin setType().
setType($variable,"nuevo_tipo");
la funcin setType() actualiza el tipo de $variable a "nuevo_tipo" y devuelve un
boleano indicando si hubo xito o no en la conversin.
Entre "nuevo_tipo" tenemos:

Fundamentos Webs, Segunda Parte

Pgina 28 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

"integer"
"double"
"string"
"array"
"object"

Tambin podemos hacer que una variable se comporte como un tipo determinado
forzndola, de la misma manera a como se hace en el lenguaje C.
$variable = "23";
$variable = (int) $variable;
Los forzados permitidos son:
(int), (integer) - fuerza a entero (integer)
(real), (double), (float) - fuerza a doble (double)
(string) - fuerza a cadena (string)
(array) - fuerza a array (array)
(object) - fuerza a objeto (object)
VARIABLES VARIABLES
A veces es conveniente tener nombres de variables variables. Dicho de otro
modo, son nombres de variables que se pueden establecer y usar
dinmicamente. Una variable normal se establece con una sentencia como:
$a = "Hola";
Una variable variable toma el valor de una variable y lo trata como el nombre de
una variable. En el ejemplo anterior, Hola, se puede usar como el nombre de
una variable utilizando dos signos de peso. Por .ejemplo.
$$a = "mundo";
Probemos las siguientes sentencias:
echo "$a ${$a}";
echo "$a $Hola";
Los dos no regresarn Hola mundo

Fundamentos Webs, Segunda Parte

Pgina 29 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Variables del Sistema en PHP


Dada su naturaleza de lenguaje de lado servidor, PHP es capaz de darnos acceso
a toda una serie de variables que nos informan sobre nuestro servidor y sobre el
cliente. La informacin de estas variables es atribuida por el servidor y en ningn
caso nos es posible modificar sus valores directamente mediante el script. Para
hacerlo es necesario influir directamente sobre la propiedad que definen.
Existen multitud de variables de este tipo, algunas sin utilidad aparente y otras
realmente interesantes y con una aplicacin directa para nuestro sitio web. Aqu se
enumeramos algunas de estas variables y la informacin que nos aportan:
Tipos de Datos
Enteros
Los enteros se pueden especificar usando una de las siguientes sintaxis:
$a = 1234; # nmero decimal
$a = -123; # un nmero negativo
$a = 0123; # nmero octal (equivalente al 83 decimal)
$a = 0x12; # nmero hexadecimal (equivalente al 18 decimal)
Nmeros Entero Flotante
Los nmeros en punto flotante ("double") se pueden especificar utilizando
cualquiera de las siguientes sintaxis:
$a = 1.234;
$a = 1.2e3;
Operadores
Cadenas
El nico operador de cadenas que existen es el de concatenacin, el punto. Pero
no se preocupen, PHP dispone de toda una gama de funciones que nos permitirn
trabajar cmodamente con las cadenas
$a = "Hola";
$b = $a . "Mundo"; // Ahora $b contiene "Hola Mundo"
En este punto hay que hacer una distincin, la interpretacin que hace PHP de
las simples y dobles comillas. En el segundo caso PHP interpretar el
contenido de la cadena.
$a = "Mundo";
echo = 'Hola $a'; //Esto escribir "Hola $a"
echo = "Hola $a"; //Esto escribir "Hola Mundo"

Fundamentos Webs, Segunda Parte

Pgina 30 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Si la cadena est encerrada entre dobles comillas ("), las variables que estn
dentro de la cadena sern expandidas (sujetas a ciertas limitaciones de
interpretacin). Como en C y en Perl, el carcter de barra invertida ("\") se
puede usar para especificar caracteres especiales
Caracteres Protegidos (Caracteres Especiales)
\n Nueva lnea
\r Retorno de carro
\t Tabulacin horizontal
\\ Barra invertida
\$ Signo del dlar
\" Comillas dobles
\[0-7]{1,3} La secuencia de caracteres que coincida con la expresin
regular es un carcter en notacin octal
\x[0-9A-Fa La secuencia de caracteres que coincida con la expresin
regular es f]{1,2} un carcter en notacin hexadecimal
Operadores de Comparacin
$a < $b $a menor que $b
$a > $b $a mayor que $b
$a <= $b $a menor o igual que $b
$a >= $b $a mayor o igual que $b
$a == $b $a igual que $b
$a != $b $a distinto que $b
Operadores Lgicos
$a = $b Asigna a $a el contenido de $b
$a += $b Le suma a $b a $a
$a -= $b Le resta a $b a $a
$a *= $b Multiplica $a por $b y lo asigna a $a
$a /= $b Divide $a por $b y lo asigna a $a
$a .= $b Aade la cadena $b a la cadena $a
Para demostrar el uso de algunos operadores mostrar algunos ejemplos en PHP:
El siguiente programa calcula el salario de un trabajador con un impuesto

Fundamentos Webs, Segunda Parte

Pgina 31 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

<html>
<body>
<?php
$SalarioTrabajador = 3500;
$Impuesto = 20; // Porcentaje
$SueldoReal = $SalarioTrabajador - (($SalarioTrabajador /
100) * $Impuesto);
echo Sueldo del trabajador sin impuesto:
$SalarioTrabajador<BR>;
echo Con el impuesto :$SueldoReal;
?>
</body >
</html>
Programa en PHP que calcula el rea de un triangulo cuya formula es a=(b*h)/2
<?php
$Base=15;
$Altura=12;
$Area = ($Base * $Altura)/2;
printf (El area del triangulo es: $Area);
?>

Programa que dados 2 nmeros calcule la suma, resta, multiplicacin, divisin, y


modulo.
<?php
$Num1=8;
$Num2=5;
printf("La suma de $Num1 y $Num2 es: <b>%d</b><br>", $Num1 +$Num2 );
printf("La resta de $Num1 y $Num2 es: <b>%d</b><br>", $Num1- $Num2 );
printf("La multiplicacin de $Num1 y $Num2 : <b>%d</b><br>",$Num1 * $Num2 );
printf("La division de $Num1 y $Num2: <b>%0.2f</b><br>",$Num1 / $Num2 );
printf("El modulo de $Num1 y $Num2 es <b>%0.1f</b><br>",$Num1 % $Num2 );
?>

Constantes
PHP define varias constantes y proporciona un mecanismo para definir ms en
tiempo de ejecucin. Las constantes son como las variables, salvo por las dos
circunstancias de que las constantes deben ser definidas usando la funcin
define(), y que no pueden ser redefinidas ms tarde con otro valor.
Las constantes predefinidas (siempre disponibles) son:
__FILE__
El nombre del archivo de comandos que est siendo interpretado actualmente.
Si se usa dentro de un archivo que ha sido incluido o requerido, entonces se da
Fundamentos Webs, Segunda Parte

Pgina 32 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

el nombre del archivo incluido, y no el nombre del archivo padre.


__LINE__
El nmero de lnea dentro del archivo que est siendo interpretado en la
actualidad. Si se usa dentro de un archivo incluido o requerido, entonces se da la
posicin dentro del archivo incluido.
PHP_VERSION
La cadena que representa la versin del analizador de PHP en uso en la
actualidad.
PHP_OS
El nombre del sistema operativo en el cul se ejecuta el analizador PHP.
TRUE Valor verdadero.
FALSE Valor falso.
E_ERROR
Denota un error distinto de un error de interpretacin del cual no es
posible recuperarse.
E_WARNING
Denota una condicin donde PHP reconoce que hay algo errneo, pero
continuar de todas formas; pueden ser capturados por el propio archivo de
comandos.
E_PARSE
El interprete encontr sintaxis invlida en el archivo de comandos. La
recuperacin no es posible.
E_NOTICE
Ocurri algo que pudo ser o no un error. La ejecucin contina. Los
ejemplos incluyen usar una cadena sin comillas como un ndice "hash", o
acceder a una variable que no ha sido inicializada.
Las constantes E_* se usan tpicamente con la funcin error_reporting()
Para configurar el nivel de informes de error.
Se pueden definir constantes adicionales usando la funcin define().
Ntese que son constantes, con una constante slo se pueden representar datos
escalares vlidos.

Fundamentos Webs, Segunda Parte

Pgina 33 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Veremos un ejemplo del uso de estas constantes:


<?php
function report_error($archivo, $linea, $mensaje) {
echo Un error ocurri en $archivo en la lnea $linea: $mensaje.;
}
report_error(__FILE__,__LINE__, "Algo esta mal!");
?>

Ahora veremos como definir nuestras propias constantes:


<?php
define("CONSTANTE", "Hola mundo.");
echo CONSTANTE; // muestra "Hola mundo."
?>

mbito de las variables en PHP


En cualquier lenguaje de programacin las variables tienen un mbito, que es el
lugar o lugares donde tienen validez. El mbito vara en funcin de donde se
hayan creado esas variables, pudiendo ser globales o locales.
En PHP, todas las variables creadas en la pgina, fuera de funciones, son
variables globales a la pgina. Por su parte, las variables creadas dentro de una
funcin son variables locales a esa funcin.
Las variables globales se pueden acceder en cualquier lugar de la pgina,
mientras que las variables locales slo tienen validez dentro de la funcin donde
han sido creadas. De modo que una variable global la podemos acceder dentro de
cualquier parte del cdigo, mientras que si intentamos acceder a una variable local
fuera de la funcin donde fue creada, nos encontraremos con que esa variable no
tiene contenido alguno.
Ahora bien, si intentamos acceder a una variable global dentro de una funcin, en
principio tambin nos encontraremos con que no se tiene acceso a su valor. Esto
es as en PHP por motivos de claridad del cdigo, para evitar que se pueda
prestar a confusin el hecho de usar dentro de una funcin una variable que no ha
sido declarada por ningn sitio cercano.

Fundamentos Webs, Segunda Parte

Pgina 34 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Entonces, si queremos utilizar una variable global a la pgina dentro de una


funcin, tenemos que especificar de alguna manera que esa variable que vamos a
utilizar es una global. Existen en PHP un par de maneras de utilizar variables
globales a la pgina dentro de una funcin. Son las siguientes:
Matriz GLOBALS
Existe un array en PHP llamado $GLOBALS, que guarda una referencia a todas
las variables creadas de manera global a la pgina. Es una matriz o array
asociativo, de los que en lugar de ndices numricos utilizan ndices de texto,
donde cada ndice es el nombre que hemos dado a la variable y cada valor es el
contenido de cada variable.
Supongamos que tenemos esta declaracin de variables globales a la pgina, es
decir, fuera de cualquier funcin:
$mivariable = "pepe";
$otravariable = 1234;
Si queremos acceder a esas variables dentro de una funcin utilizando el array
$GLOBALS tendramos este cdigo:
function mifuncion(){
//estoy dentro de la funcin, para aceder a las variables utilizo $GLOBALS
echo $GLOBALS["mivariable"];
echo $GLOBALS["otravariable"];
}
Como se puede ver, se accede al contenido de las variables globales con el array
$GLOBALS, utilizando como ndices de la matriz los nombres de variables que
deseamos mostrar.
Esto imprimira por pantalla el texto "pepe1234", el valor de las dos variables uno
detrs del otro.
Declaracin de uso de variables globales dentro de una funcin
tra cosa que podemos hacer para acceder a variables globales dentro de una
funcin es especificar al comienzo de dicha funcin la lista de variables que vamos
a utilizar dentro. Para especificar esas variables utilizamos la palabra "global"
seguida de la lista de variables que se van a utilizar del entorno global.
function mifuncion(){
golbal $mivariable, $otravariable
//con esa lnea dentro de la funcin, declaramos el uso de variables globales
echo $mivariable;
Fundamentos Webs, Segunda Parte

Pgina 35 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

echo $otravariable;
}
Como vemos, con "global" se especifica que vamos a utilizar unas variables que
fueron declaradas como globales a la pgina. Una vez hecho esto, ya podemos
acceder a esas variables globales como si estuvieran declaradas dentro de la
funcin.
Cualquier alteracin que hagamos a las variables dentro de la funcin
permanecer cuando se haya salido de la funcin, tanto si accedemos a travs del
array $GLOBALS o declarando con "global" el uso de esas variables.
Tablas o Arrays en PHP
Un tipo de variable que ya hemos descrito pero puede ser relativamente
complicado a asimilar con respecto a la mayora son los arrays. Un array es una
variable que est compuesta de varios elementos cada uno de ellos catalogado
dentro de ella misma por medio de una clave.
En el captulos anteriores ponamos el ejemplo de un array llamado sentido que
contena los distintos sentidos del ser humano:
$sentido[1]="ver";
$sentido[2]="tocar";
$sentido[3]="oir";
$sentido[4]="gustar";
$sentido[5]="oler";

En este caso este array cataloga sus elementos, comunmente llamados valores,
por nmeros. Los nmeros del 1 al 5 son por lo tanto las claves y los sentidos son
los valores asociados. Nada nos impide emplear nombres (cadenas) para
clasificarlos. Lo nico que deberemos hacer es entrecomillarlos:
<?
$moneda["espana"]="Peseta";
$moneda["francia"]="Franco";
$moneda["usa"]="Dolar";
?>

Otra forma de definir idnticamente este mismo array y que nos puede ayudar
para la creacin de arrays ms complejos es la siguiente sintaxis:
Fundamentos Webs, Segunda Parte

Pgina 36 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

<?
$moneda=array("espana"=> "Peseta","francia" => "Franco","usa" => "Dolar");
?>

Una forma muy practica de almacenar datos es mediante la creacin de arrays


multidimensionales (tablas). Pongamos el ejemplo siguiente: Queremos almacenar
dentro de una misma tabla el nombre, moneda y lengua hablada en cada pas.
Para hacerlo podemos emplear un array llamado pas que vendr definido por
estas tres caractersticas (claves). Para crearlo, deberamos escribir una expresin
del mismo tipo que la vista anteriormente en la que meteremos una array dentro
del otro. Este proceso de incluir una instruccion dentro de otra se llama anidar y es
muy corriente en programacin:
<?
$pais=array
(
"espana" =>array
(
"nombre"=>"Espaa",
"lengua"=>"Castellano",
"moneda"=>"Peseta"
),
"francia" =>array
(
"nombre"=>"Francia",
"lengua"=>"Francs",
"moneda"=>"Franco"
)
);
echo $pais["espana"]["moneda"] //Saca en pantalla: "Peseta"
?>

Antes de entrar en el detalle de este pequeo script, comentemos algunos puntos


referentes a la sintaxis. Como puede verse, en esta secuencia de script, no hemos
introducido punto y coma ";" al final de cada lnea. Esto es simplemente debido a
que lo que hemos escrito puede ser considerado como una sola instruccin. En
realidad, somos nosotros quienes decidimos cortarla en varias lneas para, as,
facilitar su lectura. La verdadera instruccin acabara una vez definido
completamente el array y es precisamente ah donde hemos colocado el nico
punto y coma. Por otra parte, podis observar cmo hemos jugado con el
tabulador para separar unas lneas ms que otras del principio. Esto tambin lo
Fundamentos Webs, Segunda Parte

Pgina 37 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

hacemos por cuestiones de claridad, ya que nos permite ver qu partes del cdigo
estn incluidas dentro de otras. Es importante acostumbrarse a escribir de esta
forma del mismo modo que a introducir los comentarios ya que la claridad de los
scripts es fundamental a la hora de depurarlos. Un poco de esfuerzo a la hora de
crearlos puede ahorrarnos muchas horas a la hora de corregirlos o modificarlos
meses ms tarde.
Pasando ya al comentario del programa, como podis ver, ste nos permite
almacenar tablas y, a partir de una simple peticin, visualizarlas un determinado
valor en pantalla.
Lo que es interesante es que la utilidad de los arrays no acaba aqu, sino que
tambin podemos utilizar toda una serie de funciones creadas para ordenarlos por
orden alfabtico directo o inverso, por claves, contar el numero de elementos que
componen el array adems de poder movernos por dentro de l hacia delante o
atrs.
Muchas son las funciones propuestas por PHP para el tratamiento de arrays, no
vamos a entrar aqu en una descripcin de las mismas. Slo incluiremos esta
pequea tabla que puede ser complementada, si necesario, con la
documentacin que ya hemos mencionado.
Funcin
array_values (mi_array)
asort(mi_array) y arsort(mi_array)
count(mi_array)
ksort(mi_array) y krsort(mi_array)

Descripcin
Lista los valores contenidos en mi_array
Ordena por orden alfabtico directo o
inverso en funcin de los valores
Nos da el numero de elementos de nuestro
array
Ordena por orden alfabtico directo o
inverso en funcin de las claves

list ($variable1,
$variable2...)=mi_array

Asigna cada una variable a cada uno de los


valores del array

next(mi_array), prev(mi_array),
reset(mi_array) y end(mi_array)

Nos permiten movernos por dentro del array


con un puntero hacia delante, atras y al
principio y al final.

each(mi_array)

Nos da el valor y la clave del elemento en el


que nos encontramos y mueve al puntero al
siguiente elemento.

De gran utilidad es tambin el bucle foreach que recorre de forma secuencial el


array de principio a fin.

Fundamentos Webs, Segunda Parte

Pgina 38 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Trabajo con tablas o arrays en PHP


Vamos a ver varios ejemplos de trabajo con arrays (arreglos, vectores, matrices o
tablas en castellano) en PHP que ilustrarn un poco el funcionamiento de algunas
de las funciones de arrays ms populares que trae consigo PHP.
Sin ms, vamos a introducirnos en materia con varios ejemplos interesantes de
manejo de vectores.
Modificar el nmero de elementos de un array
Ahora vamos a ver varios ejemplos mediante los cuales nuestros arrays pueden
aumentar o reducir el nmero de casillas disponibles.
Reducir el tamao de un array
array_slice()
Para disminuir el nmero de casillas de un arreglo tenemos varias funciones. Entre
ellas, array_slice() la utilizamos cuando queremos recortar algunas casillas del
arreglo, sabiendo los ndices de las casillas que deseamos conservar.
Recibe tres parmetros. El array, el ndice del primer elemento y el nmero de
elementos a tomar, siendo este ltimo parmetro opcional.
En el ejemplo siguiente tenemos un array con cuatro nombres propios. En la
primera ejecucin de array_slice() estamos indicando que deseamos tomar todos
los elementos desde el ndice 0 (el principio) hasta un nmero total de 3
elementos.
El segundo array_slice() indica que se tomen todos los elementos a partir del
ndice 1 (segunda casilla)
<?
$entrada = array ("Miguel", "Pepe", "Juan", "Julio",
"Pablo");
//modifico el tamao
$salida = array_slice ($entrada, 0, 3);
//muestro el array
foreach ($salida as $actual)
echo $actual . "<br>";
echo "<p>";
//modifico otra vez
$salida = array_slice ($salida, 1);
//muestro el array
foreach Webs,
($salida
asParte
$actual)
Fundamentos
Segunda
echo $actual . "<br>";
?>

Pgina 39 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Tendr como salida:


Miguel
Pepe
Juan
Pepe
Juan
unset()
Se utiliza para destruir una variable dada. En el caso de los arreglos, se puede
utilizar para eliminar una casilla de un array asociativo (los que no tienen ndices
numricos sino que su ndice es una cadena de caracteres).
Veamos el siguiente cdigo para conocer cmo definir un array asociativo y
eliminar luego una de sus casillas.
<?
$estadios_futbol = array("Barcelona"=> "Nou Camp","Real Madrid" => "Santiago
Bernabeu","Valencia" => "Mestalla","Real Sociedad" => "Anoeta");
//mostramos los estadios
foreach ($estadios_futbol as $indice=>$actual)
echo $indice . " -- " . $actual . "<br>";
echo "<p>";
//eliminamos el estadio asociado al real madrid
unset ($estadios_futbol["Real Madrid"]);
//mostramos los estadios otra vez
foreach ($estadios_futbol as $indice=>$actual)
echo $indice . " -- " . $actual . "<br>";
?>
La salida ser la siguiente:
Barcelona -- Nou Camp
Real Madrid -- Santiago Bernabeu
Valencia -- Mestalla
Real Sociedad -- Anoeta
Barcelona -- Nou Camp
Valencia -- Mestalla
Real Sociedad -- Anoeta
Aumentar el tamao de un array

Fundamentos Webs, Segunda Parte

Pgina 40 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Tenemos tambin a nuestra disposicin varias funciones que nos pueden ayudar a
aumentar el nmero de casillas de un arreglo.
array_push()
Inserta al final del array una serie de casillas que se le indiquen por parmetro. Por
tanto, el nmero de casillas del array aumentar en tantos elementos como se
hayan indicado en el parmetro de la funcin. Devuelve el nmero de casillas del
array resultante.
Veamos este cdigo donde se crea un arreglo y se aaden luego tres nuevos
valores.
<?
$tabla = array ("Lagartija", "Araa", "Perro", "Gato", "Ratn");
//aumentamos el tamao del array
array_push($tabla, "Gorrin", "Paloma", "Oso");
foreach ($tabla as $actual)
echo $actual . "<br>";
?>
Da como resultado esta salida:
Lagartija
Araa
Perro
Gato
Ratn
Gorrin
Paloma
Oso
array_merge()
Ahora vamos a ver cmo unir dos arrays utilizando la funcin array_merge(). A
sta se le pasan dos o ms arrays por parmetro y devuelve un arreglo con todos
los campos de los vectores pasados.
En este cdigo de ejemplo creamos tres arrays y luego los unimos con la funcin
array_merge()
<?
$tabla = array ("Lagartija", "Araa", "Perro", "Gato", "Ratn");
$tabla2 = array ("12","34","45","52","12");
$tabla3 = array ("Sauce","Pino","Naranjo","Chopo","Perro","34");
/aumentamos el tamao del array
Fundamentos Webs, Segunda Parte

Pgina 41 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

$resultado = array_merge($tabla, $tabla2, $tabla3);


foreach ($resultado as $actual)
echo $actual . "<br>";
?>
Da como resultado:
Lagartija
Araa
Perro
Gato
Ratn
12
34
45
52
12
Sauce
Pino
Naranjo
Chopo
Perro
34
Una ltima cosa. Tambin pueden introducirse nuevas casillas en un arreglo por
los mtodos habituales de asignar las nuevas posiciones en el array a las casillas
que necesitemos.
En arrays normales se hara as:
$tabla = array ("Sauce","Pino","Naranjo");
$tabla[3]="Algarrobo";
En arrays asociativos:
$estadios_futbol = array("Valencia" => "Mestalla","Real Sociedad" => "Anoeta");
$estadios_futbol["Barcelona"]= "Nou Camp";

Funciones en PHP
La funcin podra ser definida como un conjunto de instrucciones que explotan
ciertas variables para realizar una tarea ms o menos elemental.

Fundamentos Webs, Segunda Parte

Pgina 42 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

PHP basa su eficacia principalmente en este tipo de elemento. Una gran librera
que crece constantemente, a medida que nuevas versiones van surgiendo, es
complementada con las funciones de propia cosecha dando como resultado un
sinfn de recursos que son aplicados por una simple llamada.
Lo que puede parecer ligeramente ms complicado, pero que resulta sin lugar a
dudas muy prctico, es crear nuestras propias funciones. De una forma general,
podramos crear nuestras propias funciones para conectarnos a una base de
datos o crear los encabezados o etiquetas meta de un documento HTML. Para
una aplicacin de comercio electrnico podramos crear por ejemplo funciones de
cambio de una moneda a otra o de calculo de los impuestos a aadir al precio de
articulo. En definitiva, es interesante crear funciones para la mayora de acciones
ms o menos sistemticas que realizamos en nuestros programas.
Aqu daremos el ejemplo de creacin de una funcin que, llamada al comienzo de
nuestro script, nos crea el encabezado de nuestro documento HTML y coloca el
titulo que queremos a la pgina:
<?
function hacer_encabezado($titulo)
{
$encabezado="<html>\n<head>\n\t<title>$titulo</title>\n</head>\n";
echo $encabezado;
}
?>

Esta funcin podra ser llamada al principio de todas nuestras pginas de la


siguiente forma:
$titulo="Mi web";
hacer_encabezado($titulo);
De esta forma automatizamos el proceso de creacin de nuestro documento.
Podramos por ejemplo incluir en la funcin otras variables que nos ayudasen a
construir la etiquetas meta y de esta forma, con un esfuerzo mnimo, crearamos
los encabezados personalizados para cada una de nuestras pginas. De este
mismo modo nos es posible crear cierres de documento o formatos diversos para
nuestros textos como si se tratase de hojas de estilo que tendran la ventaja de ser
reconocidas por todos los navegadores.
Por supuesto, la funcin ha de ser definida dentro del script ya que no se
encuentra integrada en PHP sino que la hemos creado nosotros. Esto en realidad
no pone ninguna pega ya que puede ser incluida desde un archivo en el que
iremos almacenando las definiciones de las funciones que vayamos creando o
recopilando.
Fundamentos Webs, Segunda Parte

Pgina 43 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Estos archivos en los que se guardan las funciones se llaman libreras. La forma
de incluirlos en nuestro script es a partir de la instruccin require o include:
require("libreria.php") o include("libreria.php")
En resumen, la cosa quedara as:
Tendramos un archivo libreria.php como sigue
<?
//funcin de encabezado y colocacin del titulo
Function hacer_encabezado($titulo)
{
$encabezado="<html>\n<head>\n\t<title>$titulo</title>\n</head>\n";
echo $encabezado;
}
?>
Por otra parte tendramos nuestro script principal pgina.php (por ejemplo):
<?
include("libreria.php");
$titulo="Mi Web";
hacer_encabezado($titulo);
?>
<body>
El cuerpo de la pgina
</body>
</html>

Podemos meter todas las funciones que vayamos encontrando dentro de un


mismo archivo pero resulta muchsimo ms ventajoso ir clasificndolas en distintos
archivos por temtica: Funciones de conexin a bases de datos, funciones
comerciales, funciones generales, etc. Esto nos ayudara a poder localizarlas antes
para corregirlas o modificarlas, nos permite tambin cargar nicamente el tipo de
funcin que necesitamos para el script sin recargar ste en exceso adems de
permitirnos utilizar un determinado tipo de librera para varios sitios webs distintos.
Tambin puede resultar muy prctico el utilizar una nomenclatura sistemtica a la
hora de nombrarlas: Las funciones comerciales podran ser llamadas
com_loquesea, las de bases de datos bd_loquesea, las de tratamiento de archivos
file_loquesea. Esto nos permitir reconocerlas enseguida cuando leamos el script
sin tener que recurrir a nuestra oxidada memoria para descubrir su utilidad.
Fundamentos Webs, Segunda Parte

Pgina 44 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

No obstante, antes de lanzarnos a crear nuestra propia funcin, merece la pena


echar un vistazo a la documentacin (http://www.php.net/manual/es/funcref.php)
para ver si dicha funcin ya existe o podemos aprovecharnos de alguna de las
existentes para aligerar nuestro trabajo. As, por ejemplo, existe una funcin
llamada header que crea un encabezado HTML configurable lo cual nos evita
tener que crearla nosotros mismos.
Como puede verse, la tarea del programador puede en algunos casos parecerse a
la de un coleccionista. Hay que ser paciente y metdico y al final, a base de
trabajo propio, intercambio y tiempo podemos llegar poseer nuestro pequeo
tesoro.
Ejemplo de funcin
Vamos a ver un ejemplo de creacin de funciones en PHP. Se trata de hacer una
funcin que recibe un texto y lo escribe en la pgina con cada carcter separado
por "-". Es decir, si recibe "hola" debe escribir "h-o-l-a" en la pgina Web.
La manera de realizar esta funcin ser recorrer el string, caracter a caracter, para
imprimir cada uno de los caracteres, seguido de el signo "-". Recorreremos el
string con un bucle for, desde el carater 0 hasta el nmero de caracteres total de la
cadena.
El nmero de caracteres de una cadena se obtiene con la funcin predefinida en
PHP strlen(), que recibe el string entre parntesis y devuelve el nmero de los
caracteres que tenga.
<html>
<head>
<title>funcion 1</title>
</head>
<body>
<?
function escribe_separa($cadena){
for ($i=0;$i<strlen($cadena);$i++){
echo $cadena[$i];
if ($i<strlen($cadena)-1)
echo "-";
}
}
escribe_separa ("hola");
echo "<p>";
escribe_separa ("Texto ms largo, a ver lo que hace");
?>
</body>
Fundamentos Webs, Segunda Parte
</html>

Pgina 45 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

La funcin que hemos creado se llama escribe_separa y recibe como parmetro la


cadena que hay que escribir con el separador "-". El bucle for nos sirve para
recorrer la cadena, desde el primer al ltimo caracter. Luego, dentro del bucle, se
imprime cada caracter separado del signo "-". El if que hay dentro del bucle for
comprueba que el actual no sea el ltimo caracter, porque en ese caso no habra
que escribir el signo "-" (queremos conseguir "h-o-l-a" y si no estuviera el if
obtendramos "h-o-l-a-").
Ms sobre funciones: paso de parmetros
Paso de parmetros
Los parmetros son los datos que reciben las funciones y que utilizan para realizar
las operaciones de la funcin. Una funcin puede recibir cualquier nmero de
parmetros, incluso ninguno. A la hora de definir la funcin, en la cabecera, se
definen los parmetros que va a recibir
function f1 ($parametro1, $parmetro2)
As definimos una funcin llamada f1 que recibe dos parmetros. Como se puede
observar, no se tiene que definir el tipo de datos de cada parmetro.
Los parmetros tienen validez durante la ejecucin de la funcin, es decir, tienen
un mbito local a la funcin donde se estn recibiendo. Cuando la funcin se
termina, los parmetros dejan de existir.
Los parmetros se pasan por valor
El paso de parmetros en PHP se realiza por valor. "Por valor" es una manera
tpica de pasar parmetros en funciones, quiere decir que el cambio de un dato de
un parmetro no actualiza el dato de la variable que se pas a la funcin. Por
ejemplo, cuando invocamos una funcin pasando una variable como parmetro, a
pesar de que cambiemos el valor del parmetro dentro de la funcin, la variable
original no se ve afectada por ese cambio. Puede que se vea mejor con un
ejemplo:
function porvalor ($parametro1){
$parametro1="hola";
echo "<br>" . $parametro1; //imprime "hola"
}
$mivariable = "esto no cambia";
porvalor ($mivariable);
echo "<br>" . $mivariable; //imprime "esto no cambia"
Fundamentos Webs, Segunda Parte

Pgina 46 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Esta pgina tendr como resultado:


hola
esto no cambia
Paso de parmetros por referencia
En contraposicin al paso de parmetros por valor, est el paso de parmetros por
referencia. En este ltimo caso, el cambio del valor de un parmetro dentro de una
funcin s afecta al valor de la variable original.
Podemos pasar los parmetros por referencia si, en la declaracin de la funcin,
colocamos un "&" antes del parmetro.
<?
function porreferencia(&$cadena)
{
$cadena = 'Si cambia';
}
$str = 'Esto es una cadena';
porreferencia ($str);
echo $str; // Imprime 'Si cambia'
?>
Este script mostrar por pantalla 'Si cambia'.
Parmetros por defecto
Podemos definir valores por defecto para los parmetros. Los valores por defecto
sirven para que los parmetros contengan un dato predefinido, con el que se
inicializarn si no se le pasa ningn valor en la llamada de la funcin. Los valores
por defecto se definen asignando un dato al parmetro al declararlo en la funcin.
function pordefecto ($parametro1="pepe";$parametro2=3)
Para la definicin de funcin anterior, $parametro1 tiene como valor por defecto
"pepe", mientras que $parametro2 tiene 3 como valor por defecto.
Si llamamos a la funcin sin indicar valores a los parmetros, estos tomarn los
valores asignados por defecto:
pordefecto () // $parametro1 vale "pepe" y $parametro2 vale 3

Fundamentos Webs, Segunda Parte

Pgina 47 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Si llamamos a la funcin indicando un valor, este ser tenido en cuenta para el


primer parmetro.
pordefecto ("hola") // $parametro1 vale "hola" y $parametro2 vale 3
Atencin, estamos obligados a declarar todos los parmetros con valores por
defecto al final.
Ms sobre funciones: Retorno de valores
Las funciones pueden retornar valores. Para ello se utiliza la palabra "return"
indicando a continuacin el dato o variable que tienen que retornar. La funcin
puede tener mltiples return, aunque slo devolver datos por uno de ellos cada
vez porque, cuando se llama a return, se termina la ejecucin de la funcin
devolviendo el dato indicado
Ejemplo de funcin IVA
Vamos a ver un nuevo ejemplo para ilustrar el funcionamiento de una funcin un
poco ms avanzada, que utiliza parte de los nuevos conceptos introducidos en
este artculo.
Se trata de hacer una funcin que calcula el IVA y que recibe dos parmetros. Uno
el valor sobre el que se calcula y el otro el porcentaje a aplicar. Si no se indica el
porcentaje de IVA se entiende que es el 15%.
<html>
<head>
<title>ejemplo IVA</title>
</head>
<body>
<?
function iva($base,$porcentaje=15){
return $base * $porcentaje /100;
}
echo iva(1000) . "<br>";
echo iva(1000,7) . "<br>";
echo iva(10,0) . "<br>";
?>

Fundamentos Webs, Segunda Parte

Pgina 48 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Si se han entendido bien los conceptos, este ejemplo no puede resultar difcil. La
funcin recibe un parmetro llamado $porcentaje con 15 como valor por defecto.
Devuelve el porcentaje dado aplicado a la base tambin indicada por parmetro.
As pues, en la primera ejecucin de la funcin, como no se indica el porcentaje,
se mostrar el 15% de 1000. En la segunda, se muestra el 7% de mil y en la
tercera, el 0% de 10.
Retornar mltiples valores

Una funcin devuelve un nico valor. Si queremos hacer que se puedan devolver
varios valores distintos tenemos que recurrir a un truco que consiste en devolver
un array.
function small_numbers()
{
return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
list() se usa para asignar una lista de variables en una sola operacin. Despus de
esa operacin, $zero valdr 0, $one valdr 1 y $two valdr 2.

Sentencias de Control
La programacin exige en muchas ocasiones la repeticin de acciones sucesivas
o la eleccin de una determinada secuencia y no de otra dependiendo de las
condiciones especficas de la ejecucin.
Como ejemplo, podramos hacer alusin a un script que ejecute una secuencia
diferente en funcin del da de la semana en el que nos encontramos.
Control del flujo en PHP: Condiciones IF
Cuando queremos que el programa, llegado a un cierto punto, tome un camino
concreto en determinados casos y otro diferente si las condiciones de ejecucin
difieren, nos servimos del conjunto de instrucciones if, else y elseif. La estructura
de base de este tipo de instrucciones es la siguiente:
if (condicin)
{
Instruccin 1;
Instruccin 2;
...
}
else
{
Instruccin A;
Instruccin B;
...
Fundamentos
Webs, Segunda Parte
}

Pgina 49 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Esta estructura de base puede complicarse un poco ms si tenemos cuenta que


no necesariamente todo es blanco o negro y que muchas posibilidades pueden
darse. Es por ello que otras condiciones pueden plantearse dentro de la condicin
principal. Hablamos por lo tanto de condiciones anidadas que tendran una
estructura del siguiente tipo:
if (condicin1)
{
Instruccin 1;
Instruccin 2;
...
}
else
{
if (condicin2)
{
Instruccin A;
Instruccin B;
...
}
else
{
Instruccin X
...
}
}

De este modo podramos introducir tantas condiciones como queramos dentro de


una condicin principal.
De gran ayuda es la instruccin elseif que permite en una sola lnea introducir una
condicin adicional. Este tipo de instruccin simpifica ligeramente la sintaxis que
acabamos de ver:
if (condicin1)
{
Instruccin 1;
Instruccin 2;
...
}
elseif (condicin2)
{
Instruccin A;
Instruccin B;
...
}
else
{
Instruccin X
...
}

El uso de esta herramienta resultar claro con un poco de prctica. Pongamos un


ejemplo sencillo de utilizacin de condiciones. El siguiente programa permitira
Fundamentos Webs, Segunda Parte

Pgina 50 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

detectar la lengua empleada por el navegador y visualizar un mensaje en dicha


lengua.
<HTML>
<HEAD>
<TITLE>Detector de Lengua</TITLE>
</HEAD>
<BODY>
<?
//Antes de nada introducimos mensajes en forma de
variables
$espanol="Hola";
$ingles="Hello";
$frances="Bonjour";
//Ahora leemos del navegador cul es su lengua oficial
$idioma=substr($HTTP_ACCEPT_LANGUAGE,0,2);
//Formulamos las posibilidades que se pueden dar
if ($idioma == "es")
{echo "$espanol";}
elseif ($idioma=="fr")
{echo "$frances";}
else
{echo "$ingles";}
?>
</BODY>
</HTML>

Para poder ver el funcionamiento de este script es necesario cambiar el idioma


preferido lo cual puede ser realizado a partir del men de opciones del navegador.
Para leer la lengua aceptada por el navegador lo que hacemos es definir una
variable ($idioma) y, mediante la funcin substr, recogemos las dos primeras letras
del cdigo correspondiente al idioma aceptado por el navegador
($HTTP_ACCEPT_LANGUAGE).
La tercera parte de script se encarga de ver si el navegador est en espaol (es),
francs (fr) o en cualquier otro idioma que no sea ninguno de estos dos y de
imprimir el mensaje que proceda en cada caso.
A notar que, cuando se trata de comparar variables, ponemos un doble igual "=="
en lugar de un simple "=". Este ltimo queda reservado exclusivamente para
asignar valores a variables
Control del flujo en PHP: Bucles I
Las computadoras, como cualquier mquina, estn diseadas para realizar tareas
repetitivas. Es por ello que nuestros programas pueden aprovecharse de este
principio para realizar una determinada secuencia de instrucciones un cierto
Fundamentos Webs, Segunda Parte

Pgina 51 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

nmero de veces. Para ello, utilizamos las estructuras llamadas en bucle que nos
ayudan a, usando unas pocas lneas, realizar una tarea incluida dentro del bucle
un cierto numero de veces definido por nosotros mismos.
PHP propone varios tipos de bucle cada uno con caractersticas especificas:
Bucle While
Sin duda el bucle ms utilizado y el ms sencillo. Lo usamos para ejecutar las
instrucciones contenidas en su interior siempre y cuando la condicin definida sea
verdadera. La estructura sintctica es la siguiente.
while (condicin)
{
instruccion1;
instruccion2;
...
}

Un ejemplo sencillo es este bucle que aumenta el tamao de la fuente en una


unidad a cada nueva vuelta por el bucle:
<?
$size=1;
While ($size<=6)
{
echo"<font size=$size>Tamao $size</font><br>\n";
$size++;
}
?>

A modo de explicacin, diremos que, antes de nada, hemos de definir el valor de


la variable que vamos a evaluar en la condicin. Algo absolutamente obvio pero
fcil de olvidar. En este caso le hemos atribuido un valor de 1 que corresponde a
la letra ms pequea.
El paso siguiente es crear el bucle en el que imponemos la condicin que la
variable no exceda el valor de 6.
La instruccin a ejecutar ser imprimir en nuestro documento un cdigo HTML en
el que la etiqueta font y el mensaje que contiene varan a medida que $size
cambia su valor.
El siguiente paso es incrementar en una unidad el valor de $size. Esto se puede
hacer con una expresin como la mostrada en el bucle ($size++) que en realidad
es sinnima de:

Fundamentos Webs, Segunda Parte

Pgina 52 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

$size=$size+1
Bucle Do While
Este tipo de bucle no difiere en exceso del anterior. La sintaxis es la siguiente:
do
{
instruccion1;
instruccion2;
...
}

La diferencia con respecto a los bucles while es que este tipo de bucle evala la
condicin al final con lo que, incluso siendo falsa desde el principio, ste se
ejecuta al menos una vez.
Bucle For
PHP est provisto de otros tipos de bucle que tambin resultan muy prcticos en
determinadas situaciones. El ms popular de ellos es el bucle for que, como para
los casos anteriores, se encarga de ejecutar las instrucciones entre llaves. La
diferencia con los anteriores radica en cmo se plantea la condicin de finalizacin
del bucle. Para aclarar su funcionamiento vamos a expresar el ejemplo de bucle
while visto en el captulo anterior en forma de bucle for:
<?
For ($size=1;$size<=6;$size++)
{
echo"<font size=$size>Tamao $size</font><br>\n";
}
?>

Las expresiones dentro del parntesis definen respectivamente:


Inicializacin de la variable. Valida para la primera vuelta del bucle.
Condicin de evaluacin a cada vuelta. Si es cierta, el bucle continua.
Accin a realizar al final de cada vuelta de bucle.
Bucle foreach
Este bucle, implementado en las versiones de PHP4, nos ayuda a recorrer los
valores de un array lo cual puede resultar muy til por ejemplo para efectuar una
lectura rpida del mismo. Recordamos que un array es una variable que guarda un
conjunto de elementos (valores) catalogados por claves.
Fundamentos Webs, Segunda Parte

Pgina 53 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

La estructura general es la siguiente:


Foreach ($array as
$clave=>$valor)
{
instruccion1;
instruccion2;
;
}

Un ejemplo prctico es la lectura de un array lo cual podra hacerse del siguiente


modo:
<?
$moneda=array("Espaa"=> "Peseta","Francia" => "Franco","USA" =>
"Dolar");
Foreach ($moneda as $clave=>$valor)
{
echo "Pais: $clave Moneda: $valor<br>";
}
?>

Este script se encargara de mostrarnos por pantalla el contenido del array


$moneda. No resultara mala idea crear una funcin propia basada en este bucle
que nos permitiese visualizar arrays monodimensionales y almacenarla en nuestra
librera. Esta funcin podra ser definida de esta forma:
Function mostrar_array ($array)
{
Foreach ($array as $clave=>$valor)
{echo "$clave=>$valor<br>";}
}

Break y Continue
Estas dos instrucciones se introducen dentro de la estructura y nos sirven
respectivamente para escapar del bucle o saltar a la iteracin siguiente. Pueden
resultarnos muy prcticas en algunas situaciones.
Pasar variables por la URL
Bucles y condiciones son muy tiles para procesar los datos dentro de un mismo
script. Sin embargo, en un sitio Internet, las pginas vistas y los scripts utilizados
son numerosos. Muy a menudo necesitamos que nuestros distintos scripts estn
conectados unos con otros y que se sirvan de variables comunes. Por otro lado, el
usuario interacciona por medio de formularios cuyos campos han de ser
procesados para poder dar una respuesta. Todo este tipo de factores dinmicos
han de ser eficazmente regulados por un lenguaje como PHP.

Fundamentos Webs, Segunda Parte

Pgina 54 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Es posible que ya habr notado que las variables de un script tienen una validez
exclusiva para el script y que nos resulta imposible conservar su valor cuando
ejecutamos otro archivo distinto aunque ambos estn enlazados. Existen varias
formas de enviar las variables de una pgina a otra de manera que la pgina
destino reconozca el valor asignado por el script de origen:
Pasar variables por URL
Para pasar las variables de una pgina a otra lo podemos hacer introduciendo
dicha variable dentro del enlace hipertexto de la pgina destino. La sintaxis sera
la siguiente:
<a href="destino.php?variable1=valor1&variable2=valor2&...">Mi enlace</a>
Puede observar que estas variables no poseen el smbolo $ delante. Esto es
debido a que en realidad este modo de pasar variables no es especfico de PHP
sino que es utilizado por otros lenguajes
Ahora nuestra variable pertenece tambin al entorno de la pgina destino.php y
est lista para su explotacin.
Para aclarar posibles dudas, veamos esto en forma de ejemplo. Tendremos pues
dos pginas, origen.html (no es necesario darle extensin PHP puesto que no hay
ningn tipo de cdigo) y destino.php
origen.html

<HTML>
<HEAD>
<TITLE>origen.html</TITLE>
</HEAD>
<BODY>
<a href="destino.php?saludo=hola&texto=Esto es una variable texto">Paso variables saludo y texto a la
pgina destino.php</a>
</BODY>
</HTML>

destino.php

<HTML>
<HEAD>
<TITLE>destino.php</TITLE>
</HEAD>
<BODY>
<?
echo "Variable \$saludo: $saludo <br>\n";
echo "Variable \$texto: $texto <br>\n"
?>
</BODY>
</HTML>

Fundamentos Webs, Segunda Parte

Pgina 55 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

$HTTP_GET_VARS
Recordamos que es posible recopilar en una variable tipo array el conjunto de
variables que han sido enviadas al script por este mtodo a partir de la variable de
sistema $HTTP_GET_VARS, que es un array asociativo. Utilizndolo quedara
as:
<?
echo "Variable \$saludo: $HTTP_GET_VARS["saludo"] <br>\n";
echo "Variable \$texto: $HTTP_GET_VARS["texto"] <br>\n"
?>
Nota: Aunque podamos recoger variables con este array asociativo o utilizar
directamente las variables que se definen en nuestra pgina, resulta ms seguro
utilizar $HTTP_GET_VARS por dos razones, la primera que as nos aseguramos
que esa varible viene realmente de la URL y la segunda, que as nuestro cdigo
ser ms claro cuando lo volvamos a leer, porque quedar especificado que esa
variable estamos recibindola por la URL.
$_GET
A partir de la versin 4.1.0 de PHP se ha introducido el array asociativo $_GET,
que es idntico a $HTTP_GET_VARS, aunque un poco ms corto de escribir.

Procesar variables de formularios


Este tipo de transferencia es de gran utilidad ya que nos permite interaccionar
directamente con el usuario.
El proceso es similar al explicado para las URLs. Primeramente, presentamos una
primera pgina con el formulario clsico a rellenar y las variables son recogidas en
una segunda pgina que las procesa:
Nota: No siempre se definen automticamente las variables recibidas por el
formulario en las pginas web, depende de una variable de configuracin de PHP:
register_globals, que tiene que estar activada para que as sea.

formulario.html

<HTML>
<HEAD>
<TITLE>formulario.html</TITLE>
</HEAD>
Fundamentos Webs, Segunda Parte
<BODY>
<FORM METHOD="POST" ACTION="destino2.php">
Nombre<br>

Pgina 56 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

destino2.php
<HTML>
<HEAD>
<TITLE>destino2.php</TITLE>
</HEAD>
<BODY>
<?
echo "Variable \$nombre: $nombre <br>\n";
echo "Variable \$apellidos: $apellidos <br>\n"
?>
</BODY>
</HTML>

$HTTP_POST_VARS
Recordamos que es posible recopilar en una variable tipo array el conjunto de
variables que han sido enviadas al script por este mtodo a partir de la variable de
sistema $HTTP_POST_VARS.
echo "Variable \$nombre: " . $HTTP_POST_VARS["nombre"] . "<br>\n";
$_POST
A partir de PHP 4.1.0 se pueden recoger las variables de formulario utilizando
tambin el array asociativo $_POST, que es el mismo que $HTTP_POST_VARS,
pero ms corto de escribir.
Ejemplo de restriccin de acceso por edad
Para continuar aportando ejemplos al uso de formularios vamos a realizar una
pgina que muestra solicita la edad del visitante y, dependiendo de dicha edad,

Fundamentos Webs, Segunda Parte

Pgina 57 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

permita o no visualizar el contenido de la web. A los mayores de 18 aos se les


permite ver la pgina y a los menores no.
El ejemplo es muy sencillo y no valdra tal cual est para utilizarlo a modo de una
verdadera restriccin de acceso. nicamente nos sirve para saber cmo obtener
datos de un formulario y como tratarlos para realizar una u otra accin,
dependiendo de su valor.
La pgina del formulario, que hemos llamado edad.php tendra esta forma:
<html>
<head>
<title>Restringir por edad</title>
</head>
<body>
<form action="edad2.php" method="post">
Escribe tu edad: <input type="text" name="edad" size="2">
<input type="submit" value="Entrar">
</form>
</body>
</html>

Esta es una pgina sin ningn cdigo PHP, simplemente tiene un formulario.
Fijmonos en el action del formulario, que est dirigido hacia una pgina llamada
edad2.php, que es la que recibir el dato de la edad y mostrar un contenido u
otro dependiendo de ese valor. Su cdigo es el siguiente:
<html>
<head>
<title>Restringir por edad</title>
</head>
<body>
<?
$edad = $_POST["edad"];
echo "Tu edad: $edad<p>";
if ($edad < 18) {
echo "No puedes entrar";
}else{
echo "Bienvenido";
}
?>
</body>
</html>

Fundamentos Webs, Segunda Parte

Pgina 58 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Esperamos que este otro cdigo tampoco resulte extrao. Simplemente se recibe
la edad, utilizando el array $_POST. Luego se muestra la edad y se ejecuta una
expresin condicional en funcin de que la edad sea menor que 18. En caso
positivo (edad menor que 18), se muestra un mensaje que informa de que no se
deja acceder al pgina. En caso negativo (mayor o igual a 18) se muestra un
mensaje de bienvenida.

Autollamadas de Pginas
Al incluir un formulario en una pgina se debe indicar, a travs del atributo action,
el nombre del archivo PHP al que enviaremos los datos escritos en el formulario.
De este modo, para un esquema de envo de datos por formulario, pueden
participar dos pginas: una que contiene el formulario y otra que recibe los datos
de dicho formulario.
Lo mismo ocurre cuando enviamos variables por una URL. Tenemos una pgina
que contendr el enlace y otra pgina que recibir y tratar esos datos para
mostrar unos resultados.
Vamos a ver cmo se puede enviar y recibir datos de un formulario con una nica
pgina. Asimismo, veremos como en la misma pgina podemos tener enlaces con
paso de variables por URL y adems, podemos recoger y tratar esos datos con la
misma pgina. A este efecto podemos llamarte "autollamada de pginas", tambin
se le suele llamar como "Formularios reentrantes" o trminos similares. Es muy
interesante conocer el modo de funcionamiento de estos scripts, porque sern
muy habituales en nuestras pginas PHP y ayudan mucho a tener los cdigos
ordenados.
En ambos casos, para formularios o envo de datos por la URL, se debe seguir un
esquema como este:
-

Comprobar si recibo datos por URL o por formulario


Si no recibo datos
Muestro el formulario o los enlaces que pasan variables.
Si recibo datos
Entonces tengo que procesar el formulario o las variables de la URL

Para un formulario
Veamos a continuacin como sera el cdigo de un formulario reentrante.

Fundamentos Webs, Segunda Parte

Pgina 59 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

<html>
<head>
<title>Me llamo a mi mismo...</title>
</head>
<body>
<?
if (!$_POST){
?>
<form action="auto-llamada.php" method="post">
Nombre: <input type="text" name="nombre" size="30">
<br>
Empresa: <input type="text" name="empresa" size="30">
<br>
Telefono: <input type="text" name="telefono" size=14 value="+34 " >
<br>
<input type="submit" value="Enviar">
</form>
<?
}else{
echo "<br>Su nombre: " . $_POST["nombre"];
echo "<br>Su empresa: " . $_POST["empresa"];
echo "<br>Su Telfono: " . $_POST["telefono"];
}
?>
</body>
</html>

En el ejemplo, el primer paso es conocer si se estn recibiendo o no datos por un


formulario. Para ello se comprueba con un enunciado if si existe o no una variable
$_POST.
En concreto if (!$_POST) querra decir algo como "Si no existen datos venidos de
un formulario". En caso de que no existan, muestro el formulario. En caso de que
s existan, recojo los datos y los imprimo en la pgina.
Para paso de variables por URL
La idea es la misma. Comprobar con un enunciado if si se reciben o no datos
desde una URL. Veamos el cdigo a continuacin. Se trata de una pgina que
muestra una serie de enlaces para ver las tablas de multiplicar de el 1 hasta el 10.
Cada uno de los enlaces muestra una tabla de multiplicar. Pulsando el primer
enlace podemos ver la tabla del 1, pulsando el segundo la tabla del 2, etc.

Fundamentos Webs, Segunda Parte

Pgina 60 de 65

Fundamentos Webs

<html>
<head>
</head>

Mdulo II

Ing. Msc. Daniel Bojorge

<title>Tablas de multiplicar</title>

<body>
<?
if (!$_GET){
for ($i=1;$i<=10;$i++){
echo "<br><a href='ver_tabla.php?tabla=$i'>Ver la tabla del $i</a>\n";
}
} else {
$tabla=$_GET["tabla"];
?>
<table align=center border=1 cellpadding="1">
<?
for ($i=0;$i<=10;$i++){
echo "<tr><td>$tabla X $i</td><td>=</td><td>" . $tabla * $i . "</td></tr>\n";
}
?>
</table>
<?
}
?>
</body>
</html>

Este cdigo es un poco ms complicado, porque hace un poco ms de cosas que


el anterior, pero para el asunto que nos ocupa que es la autollamada de pginas,
todo sigue igual de simple.
Hay que fijarse en el if que comprueba si se reciben o no datos por URL: if
(!$_GET), que querra decir algo como "Si no se reciben variables por la URL".
En caso positivo (no se reciben datos por URL) se muestran los enlaces para ver
cada una de las tablas y en caso de que s se reciban datos, se muestra la tabla
de multiplicar del nmero que se est recibiendo en la URL.

Utilizacin de Cookies
Sin duda este trmino resultara familiar para muchos. Algunos lo habrn ledo u
odo pero no saben de qu se trata. Otros sin embargo sabrn que las cookies son
unas informaciones almacenadas por un sitio web en el disco duro del usuario.
Esta informacin es almacenada en un archivo tipo texto que se guarda cuando el
navegador accede al sitio web.

Fundamentos Webs, Segunda Parte

Pgina 61 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Es posible, por supuesto, ver estos archivos. Para abrirlos hay que ir al directorio
C:\Windows\Cookies
para
los
usuarios
de
IE
4+
o
a
C:\...\Netscape\Users\defaultuser para usuarios de Netscape. Como podr
comprobar, en la mayora de los casos la informacin que se puede obtener es
indescifrable.
La utilidad principal de las cookies es la de poder identificar al navegador una vez
ste visita el sitio por segunda vez y as, en funcin del perfil del cliente dado en
su primera visita, el sitio puede adaptarse dinmicamente a sus preferencias
(lengua utilizada, colores de pantalla, formularios rellenados total o parcialmente,
redireccin a determinadas pginas...)
Para crear un archivo cookies, modificar o generar una nueva cookie lo podemos
hacer a partir de la funcin SetCookie:
setcookie("nombre_de_la_cookie",valor,expiracion);
Pongamos un ejemplo sencillo. Imaginemos que queremos introducir en una
variable cookie el nombre del visitante. El nombre ha podido ser previamente
recogido por un formulario tal y como hemos visto:
setcookie("persona",$nombre,time()+86400*365);
De este modo hemos creado una cookie llamada persona que tiene como valor el
contenido de la variable $nombre y tendr una duracin de 1 ao a partir de su
creacin (el tiempo time() actual en segundos sumado a un ao en segundos).
Es importante que la creacin de la cookie sea previa a la apertura del documento
HTML. En otras palabras, las llamadas a la funcin setcookie() deben ser
colocadas antes de la etiqueta HTML.
Por otra parte, es interesante sealar que el hecho de que definir una cookie ya
existente implica el borrado de la antigua. Del mismo modo, el crear una primera
cookie conlleva la generacin automtica del archivo texto.
Para utilizar el valor de la cookie en nuestros scripts tan slo tendremos que llamar
la variable que define la cookie. Realmente sencillo!
Hay que tener cuidado sin embargo de no definir variables en nuestro script con el
mismo nombre que las cookies puesto que PHP privilegiar el contenido de la
variable local con respecto a la cookie y no dar un mensaje de error. Esto nos
puede conducir a errores realmente difciles de detectar.
Las cookies son una herramienta fantstica para personalizar nuestra pgina pero
hay que ser cautos ya que, por una parte, no todos los navegadores las aceptan y
por otra, se puede deliberadamente impedir al navegador la creacin de cookies.
Fundamentos Webs, Segunda Parte

Pgina 62 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

Es por ello que resultan un complemento y no una fuente de variables infalible


para nuestro sitio.

Sesiones
En los programas que hemos visto hasta ahora, hemos utilizado variables que slo
existan en el archivo que era ejecutado. Cuando cargbamos otra pgina distinta,
los valores de estas variables se perdan a menos que nos tomsemos la molestia
de pasarlos por la URL o inscribirlos en las cookies o en un formulario para su
posterior explotacin. Estos mtodos, aunque tiles, no son todo lo prcticos que
podran en determinados casos en los que la variable que queremos conservar ha
de ser utilizada en varios scripts diferentes y distantes los unos de los otros.
Nos resulta pues necesario el poder declarar ciertas variables que puedan ser
reutilizadas tantas veces como queramos dentro de una misma sesin.
Imaginemos un sitio multilinge en el que cada vez que queremos imprimir un
mensaje en cualquier pgina necesitamos saber en qu idioma debe hacerse.
Podramos introducir un script identificador de la lengua del navegador en cada
uno de los archivos o bien declarar una variable que fuese valida para toda la
sesin y que tuviese como valor el idioma reconocido en un primer momento.
Pensemos tambin en un carrito de la compra de una tienda virtual donde el
cliente va navegando por las pginas del sitio y aadiendo los artculos que quiere
comprar a un carrito. Este carrito podra ser perfectamente una variable de tipo
array (tabla) que almacena para cada referencia la cantidad de artculos
contenidos en el carrito. Esta variable debera ser obviamente conservada
continuamente a lo largo de todos los scripts.
Este tipo de situaciones son solventadas a partir de las variables de sesin. Una
sesin es considerada como el intervalo de tiempo empleado por un usuario en
recorrer nuestras pginas hasta que abandona nuestro sitio o deja de actuar sobre
l durante un tiempo prolongado o bien, sencillamente, cierra el navegador.
PHP nos permite almacenar variables llamadas de sesin que, una vez definidas,
podrn ser utilizadas durante este lapso de tiempo por cualquiera de los scripts de
nuestro sitio. Estas variables sern especificas del usuario de modo que varias
variables sesin del mismo tipo con distintos valores pueden estar coexistiendo
para cada una de las sesiones que estn teniendo lugar simultneamente. Estas
sesiones tienen adems su propio identificador de sesin que ser nico y
especfico.
Algunas mejoras referentes al empleo de sesiones han sido introducidas con
PHP4. Es a esta nueva versin a la que haremos referencia a la hora de explicar
las funciones disponibles y la forma de operar. Para los programadores de PHP3
Fundamentos Webs, Segunda Parte

Pgina 63 de 65

Fundamentos Webs

Mdulo II

Ing. Msc. Daniel Bojorge

la diferencia mayor es que estn obligados a gestionar ellos mismos las sesiones
definir sus propios identificadores de sesin.
Para iniciar una sesin podemos hacerlo de dos formas distintas:
-

Declaramos abiertamente la apertura de sesin por medio de la funcin


session_start(). Esta funcin crea una nueva sesin para un nuevo visitante
o bien recupera la que est siendo llevada a cabo
Declaramos una variable de sesin por medio de la funcin
session_register('variable'). Esta funcin, adems de crear o recuperar la
sesin para la pgina en la que se incluye tambin sirve para introducir una
nueva variable de tipo sesin.

Las sesiones han de ser iniciadas al principio de nuestro script. Antes de abrir
cualquier etiqueta o de imprimir cualquier cosa. En caso contrario recibiremos un
error.
Con lo visto, vamos a proponer el ejemplo clsico de utilizacin de una sesin: un
contador. Este contador deber aumentar de una unidad cada vez que
recargamos la pgina o apretamos al enlace:
<?
session_register('contador');
?>
<HTML>
<HEAD>
<TITLE>contador.php</TITLE>
</HEAD>
<BODY>
<?
If (isset($contador)==0)
{$contador=0;}
++$contador;
echo "<a href=\"contador.php\">Has recargado esta pgina $contador veces</a>";
?>
</BODY>
</HTML>

La condicin if tiene en cuenta la posibilidad de que la variable $contador no haya


sido todava inicializada. La funcin isset se encarga de dar un valor cero cuando
una variable no ha sido inicializada.
Otras funciones tiles para la gestin de sesiones son:
Funcin

Descripcin

Session_id()

Nos devuelve el identificador de la sesin

Fundamentos Webs, Segunda Parte

Pgina 64 de 65

Fundamentos Webs

Session_destroy()

Mdulo II

Ing. Msc. Daniel Bojorge

Da por abandonada la sesin eliminando variables


e identificador.

Session_unregister('variable') Abandona una variable sesin

Fundamentos Webs, Segunda Parte

Pgina 65 de 65

S-ar putea să vă placă și