8.lenguaje de Programaciã N PHP
8.lenguaje de Programaciã N PHP
__________________________________________________________________________________________________________
PHP es uno de los lenguaj es de lado del s er vidor más ex tendidos en la r ed. Nacido
en 1994, s e tr ata de un lenguaj e de cr eación r elativamente r eciente que ha tenido
una gr an aceptación debido s obr e todo a s u potencia y s implicidad .
PHP nos per mite embeber los fr agmentos de s u código dentr o de páginas HT ML y
r ealiz ar deter minadas acciones de una for ma fácil y eficaz s in tener que gener ar
pr ogr amas pr ogr amados íntegr amente en un lenguaj e dis tinto al HT ML . Por otr a
par te, y es aquí donde r es ide s u mayor inter és con r es pecto a lenguaj es pens ados
par a los CGI , PHP ofr ece un s infín de funciones par a la ex plotación de bas es de
datos de una maner a s encilla.
♣ PHP, aunque multiplatafor ma, ha s ido concebido inicialmente par a entor nos
UNÍ S y es en es te s is tema oper ativo donde s e pueden apr ovechar mej or s us
pr es taciones . AS P, s iendo una tecnología Micr os oft, es tá or ientado hacia
s is temas Windows , es pecialmente NT .
♣ Las tar eas pr incipales que puede r ealiz ar dir ectamente el lenguaj e s on definidas
en PHP como funciones mientr as que AS P invoca más fr ecuentemente los
obj etos . Por s upues to, es to no es más que una s imple cues tión de for ma ya que
ambos lenguaj es s opor tan igualmente ambos pr ocedimientos .
♣ AS P r ealiz a numer os as tar eas s ir viéndos e de componentes (obj etos ) que deben
s er compr ados a empr es as es pecializ adas o pr ogr amados por el s er vidor . PHP
pr es enta una filos ofía totalmente difer ente, es pr ogr es ivamente cons tr uido por
los us uar ios que implementan nuevas funciones en nuevas ver s iones del
lenguaj e.
B R E VE H I S T OR I A D E P H P
PHP es un lenguaj e cr eado por una gr an comunidad de per s onas . E l s is tema fue
des ar r ollado or iginalmente en el año 1994 por Ras mus Ler dor f como un CGI en C
que per mitía la inter pr etación de un númer o limitado de comandos . El s is tema fue
denominado Per s onal Home Page T ools y adquir ió r elativo éx ito gr acias a que otr as
per s onas pidier on a R as mus poder utiliz ar los pr ogr amas que des ar r olló en s us
pr opias páginas . Dada la aceptación del pr imer PHP y de maner a adicional, s u
cr eador dis eñó un s is tema par a pr oces ar for mular ios al que le atr ibuyó el nombr e
de FI (For m I nter pr eter ) y el conj unto de es tas dos her r amientas s er ía la pr imer a
ver s ión compacta del lenguaj e PHP/FI .
- 54 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
En los últimos años el númer o de s er vidor es que utiliz an PHP s e ha dis par ado
logr ando s ituar s e por encima de 5 millones de s itios y más de 800.000 dir ecciones
I P. E l hecho de que PHP s e haya conver tido en una tecnología popular s e debe,
entr e otr as r az ones , a que es el complemento ideal par a que el tándem L inux -
Apache s ea compatible con la pr ogr amación del lado del s er vidor de s itios web.
Gr acias a la aceptación logr ada y a los es fuer z os r ealiz ados por una cr eciente
comunidad de colabor ador es par a implementar lo de la maner a más óptima,
podemos as egur ar que es te lenguaj e s e conver tir á en un es tándar de éx ito entr e
los s is temas des ar r ollados en código abier to.
P H P : L E NGU AJE D E L L AD O D E L S E R VI D OR
Al pinchar s obr e un enlace hiper tex to lo que pas a es que es tablecemos una petición
de un ar chivo HT ML r es idente en el s er vidor (un or denador que s e encuentr a
continuamente conectado a la r ed) el cual es enviado e inter pr etado por nues tr o
navegador (el cliente).
En el dominio de la r ed, los lenguaj es de lado s er vidor más ampliamente utiliz ados
par a el des ar r ollo de páginas dinámicas s on el AS P, PHP y PERL.
- 55 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
E l AS P (Active S er ver Pages ) es un lenguaj e der ivado del Vis ual B as ic des ar r ollado
por Micr os oft. Evidentemente s u empleo s e r ealiz a s obr e platafor mas funcionando
baj o s is tema Windows NT .
E l PHP podr ía s er cons ider ado como un lenguaj e análogo al AS P utiliz ado en
platafor mas U nix y L inux .
Es tos dos lenguaj es r es ultan bas tantes útiles par a la ex plotación de bas es de datos
y s u apr endiz aj e es acces ible par a una per s ona pr ofana en pr ogr amación.
Cualquier a de ellos r es ultar ía una buena opción a la hor a de hacer evolucionar un
s itio web r ealiz ado en HT ML.
T AR E AS P R I N CI P AL E S D E L P H P
En un pr incipio dis eñado par a r ealiz ar un poco más que un contador y un libr o de
vis itas , PHP ha ex per imentado en poco tiempo una ver dader a r evolución y, a par tir
de s us funciones , en es tos momentos per mite r ealiz ar una multitud de tar eas útiles
par a el des ar r ollo web:
Res ulta difícil concebir un s itio actual, potente y r ico en contenido que no s ea
ges tionado por una bas e de datos . E l lenguaj e PHP ofr ece inter faces par a el acces o
a la mayor ía de las bas es de datos comer ciales y por ODB C a todas las bas es de
datos pos ibles en s is temas Micr os oft, a par tir de las cuales podr emos editar el
contenido de nues tr o s itio con abs oluta s encillez .
Efectivamente uno de los puntos fuer tes de las páginas en PHP es la pos ibilidad de
ex plotar bas es de datos mediante funciones de una s implicidad y potencia muy
agr adecidas . Es tas bas es de datos pueden s er vir a nues tr o s itio par a almacenar
contenidos de una for ma s is temática que nos per mita clas ificar los , bus car los y
editar los de una for ma fácil y r ápida. La bas e de datos más difundida con el tandem
UNI X- Apache es s in duda MyS QL , ex is tiendo una ver s ión dis ponible par a Windows .
Ges t i ón de ar ch i vos
Cr ear , bor r ar , mover , modificar ,...cualquier tipo de oper ación más o menos
r az onable que s e nos pueda ocur r ir puede s er r ealiz ada a par tir de una amplia
libr er ía de funciones par a la ges tión de ar chivos por PHP. T ambién podemos
tr ans fer ir ar chivos por F T P a par tir de s entencias en nues tr o código, pr otocolo par a
el cual PHP ha pr evis to también gr an cantidad de funciones .
T r at am i en t o de i m ágen es
Evidentemente r es ulta mucho más s encillo utiliz ar Photos hop par a el tr atamiento de
imágenes per o PHP es útil, por ej emplo, cuando tenemos que tr atar gr an cantidad
de imágenes enviadas por nues tr os inter nautas . Puede r es ultar muy tedios o
unifor mar en tamaño y for mato miles de imágenes r ecibidas día tr as día per o con
PHP podemos automatiz ar lo eficaz mente.
- 56 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
F u n ci on es de cor r eo el ect r ón i co
Podemos , con gr an facilidad, enviar un e- mail a una per s ona o lis ta par ametr iz ando
toda una s er ie de as pectos tales como el e- mail de pr ocedencia, as unto, per s ona a
r es ponder ,...
Muchas otr as funciones pens adas par a I nter net (tr atamiento de cookies , acces os
r es tr ingidos , comer cio electr ónico,...) o par a pr opós ito gener al (funciones
matemáticas , ex plotación de cadenas , de fechas , cor r ección or togr áfica,
compr ens ión de ar chivos , botones dinámicos ,...) s on r ealiz adas por es te lenguaj e. A
es ta inmens a libr er ía cabe ahor a añadir todas las funciones per s onales que uno va
cr eando por neces idades pr opias y que luego s on r eutiliz adas en otr os s itios y todas
ellas inter cambiadas u obtenidas en for os o s itios es pecializ ados .
I N S T AL ACI ÓN D E P H P E N N U E S T R O S E R VI D OR
Como todo leguaj e del lado del s er vidor , PHP r equier e de la ins talación de un
s er vidor en nues tr o PC par a poder tr abaj ar en local. Es te modo de tr abaj o es
evidentemente más pr áctico que colgar los ar chivos por FT P en el s er vidor y
ej ecutar los des de nues tr o navegador .
S i quer emos tr abaj ar con PHP una pos ibilidad par a los us uar ios de Windows es
ins talar Apache como s er vidor web lo cual r es ulta más ventaj os o con r es pecto al
us o del PWS ya que PHP es tá es pecialmente dis eñado par a cor r er en es te s er vidor .
Es to quier e decir que, aunque en pr incipio todo deber ía funcionar cor r ectamente en
ambos s er vidor es , es pos ible que algún bug no cor r egido haga fallar uno de
nues tr os s cr ipts s i tr abaj amos par a un s er vidor cuyas actualiz aciones s on menos
fr ecuentes y detalladas .
S I N T AXI S D E P H P
PHP s e es cr ibe dentr o de la pr opia página web, j unto con el código HT ML y, como
par a cualquier otr o tipo de lenguaj e incluido en un código HT ML, en PHP
neces itamos es pecificar cuáles s on las par tes cons titutivas del código es cr itas en
es te lenguaj e. Es to s e hace, como en otr os cas os , delimitando nues tr o código por
etiquetas . Podemos utiliz ar dis tintos modelos de etiquetas :
<? y ?>
<% y %>
< ?php y ?>
< s cr ipt languaj e= " php" >
- 57 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
E l ultimo modo es tá pr incipalmente acons ej ado par a tr abaj ar con Fr ont Page ya
que, us ando cualquier otr o tipo de etiqueta, cor r emos el r ies go de que la aplicación
nos la bor r e s in más debido a que s e tr ata de un código incompr ens ible par a ella.
Otr a car acter ís tica gener al de los s cr ipts en PHP es la for ma de s epar ar las dis tintas
ins tr ucciones . Par a hacer lo, hay que acabar cada ins tr ucción con un punto y coma
" ; " . Par a la ultima ex pr es ión, la que va antes del cier r e de etiqueta, es te
for malis mo no es neces ar io.
<?
$mens aj e= " hola! ! " ; //Comentar io de una linea
echo $mens aj e; # Es te comentar io también es de una linea
/* En es te cas o
mi comentar io ocupa
var ias lineas * /
?>
S i us amos doble bar r a // o el s ímbolo # podemos intr oducir comentar ios de una
línea. Mediante /* y * / cr eamos comentar ios multilínea. Par a compr ender el s cr ipt
adelantamos que las var iables en PHP s e definen anteponiendo un s ímbolo de dólar
($) y que la ins tr ucción echo s ir ve par a s acar en pantalla lo que hay es cr ito a
continuación.
Var i abl es en P H P
Par a PHP, las var iables s on definidas anteponiendo el s ímbolo dólar ($) al nombr e
de la var iable que es tábamos definiendo.
Dependiendo de la infor mación que contenga, una var iable puede s er cons ider ada
de uno u otr o tipo:
- 58 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
$s entido[3]= ”olfato”;
$s entido[4]= ”gus to”;
$s entido[5]= ”tacto”;
PHP pos ee una gr an flex ibilidad a la hor a de oper ar con var iables . En efecto,
cuando definimos una var iable as ignándole un valor , el or denador le atr ibuye un
tipo, p.ej .: $cadena= ”5”; //es to es una cadena , $enter o= 5; //es to es un enter o. S in
embar go hay que tener cuidado en no cambiar mayús culas por minús culas ya que,
en es te s entido, PHP es s ens ible.
Var i abl es de s is t em a
Dada s u natur alez a de lenguaj e de lado s er vidor , PHP es capaz de dar nos acces o a
toda una s er ie de var iables que nos infor man s obr e nues tr o s er vidor y s obr e el
cliente. La infor mación de es tas var iables es atr ibuida por el s er vidor y en ningún
cas o nos es pos ible modificar s us valor es dir ectamente mediante el s cr ipt. Par a
hacer lo es neces ar io influir dir ectamente s obr e la pr opiedad que definen.
Ex is ten multitud de var iables de es te tipo. Veamos algunas de es tas var iables y la
infor mación que nos apor tan:
- $HT T P_ REF ERER . Nos indica la URL des de la cual el inter nauta ha
tenido acces o a la página.
- $PHP_ S EL F. Nos devuelve una cadena con la URL del s cr ipt que es tá
s iendo ej ecutada.
T abl as en P H P
Un ar r ay es una var iable que es tá compues ta de var ios elementos cada uno de ellos
catalogado dentr o de ella mis ma por medio de una clave. E l ej emplo vis to antes
er a:
$s entido[1]= ”oído”;
$s entido[2]= ”vis ta”;
$s entido[3]= ”olfato”;
$s entido[4]= ”gus to”;
$s entido[5]= ”tacto”;
- 59 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
<?
$moneda[" es pana" ]= " Madr id" ;
$moneda[" fr ancia" ]= " Par ís " ;
$moneda[" italia" ]= " R oma" ;
?>
Otr a for ma de definir idénticamente es te mis mo ar r ay y que nos puede ayudar par a
la cr eación de ar r ays más complej os es la s iguiente s intax is :
<?
$moneda= ar r ay(" es pana" = > " Madr id" ," fr ancia" = > " Par ís " ,
" italia" = > " R oma" );
?>
<?
$pais = ar r ay
(
" es pana" = > ar r ay
(
" nombr e" = > " Es paña" ,
" lengua" = > " Cas tellano" ,
" capital" = > " Madr id"
),
" fr ancia" = > ar r ay
(
" nombr e" = > " Fr ancia" ,
" lengua" = > " Fr ancés " ,
" capital" = > " Par ís "
)
);
echo $pais [" es pana" ] [" capital" ] //S aca en pantalla: " Madr id"
?>
Es te pr ogr ama nos per mite almacenar tablas y, a par tir de una s imple petición,
vis ualiz ar un deter minado valor en pantalla. Per o la utilidad de los ar r ays no acaba
aquí, s ino que también podemos utiliz ar toda una s er ie de funciones cr eadas par a
or denar los por or den alfabético dir ecto o inver s o, por claves , contar el númer o de
elementos que componen el ar r ay además de poder mover nos por dentr o de él
hacia delante o atr ás . Algunas de es tas funciones s on:
- 60 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
Caden as
Las cadenas s on infor mación de car ácter no numér ico (tex tos , por ej emplo). Par a
as ignar a una var iable un contenido de es te tipo, lo es cr ibir emos entr e comillas
dando lugar a declar aciones de es te tipo:
Podemos yux taponer o concatenar var ias cadenas poniendo par a ello un punto
entr e ellas :
<?
$cadena1= " Hola" ;
$cadena2= " ¿Qué tal?" ;
$cadena3= $cadena1.$cadena2;
echo $cadena3 //E l r es ultado es : " Hola ¿Qué tal?"
?>
<?
$a= 55;
$mens aj e= " T engo $a años " ;
echo $mens aj e //El r es ultado es : " T engo 55 años "
?>
En es te cas o el s ímbolo $ define una var iable per o puede inter es ar nos meter lo por
r az ones comer ciales s ignificando dólar . Pues bien, par a meter és te y otr os
car acter es utiliz ados por el lenguaj e dentr o de las cadenas y no confundir los , lo que
hay que hacer es es cr ibir una contr abar r a delante:
- 61 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
Además , ex is ten otr as utilidades de es ta contr abar r a que nos per miten intr oducir
en nues tr o documento HT ML deter minados eventos :
Las cadenas pueden as imis mo s er tr atadas por medio de funciones de todo tipo,
ex is ten muchas pos ibles acciones que podemos r ealiz ar s obr e ellas : dividir las en
palabr as , eliminar es pacios s obr antes , localiz ar s ecuencias , r emplaz ar car acter es
es peciales por s u cor r es pondiente en HT ML o inclus o ex tr aer las etiquetas MET A de
una página web.
F u n ci on es
Una función puede s er definida como un conj unto de ins tr ucciones que ex plotan
cier tas var iables par a r ealiz ar una tar ea más o menos elemental.
Las funciones integr adas en PHP s on muy fáciles de utiliz ar . T an s ólo hemos de
r ealiz ar la llamada de la for ma apr opiada y es pecificar los par ámetr os y/o var iables
neces ar ios par a que la función r ealice s u tar ea.
Lo que puede par ecer liger amente más complicado, per o que r es ulta s in lugar a
dudas muy pr áctico, es cr ear nues tr as pr opias funciones . De una for ma gener al,
podr íamos cr ear nues tr as pr opias funciones par a conectar nos a una bas e de datos o
cr ear los encabez ados o etiquetas meta de un documento HT ML. Par a una
aplicación de comer cio electr ónico podr íamos cr ear por ej emplo funciones de
cambio de una moneda a otr a o de calculo de los impues tos a añadir al pr ecio de
ar ticulo. En definitiva, es inter es ante cr ear funciones par a la mayor ía de acciones
más o menos s is temáticas que r ealiz amos en nues tr os pr ogr amas .
<?
Function hacer _ encabez ado($titulo)
{
$encabez ado= " < html> \n< head> \n\t< title> $titulo< /title> \n<
/head> \n" ;
echo $encabez ado;
}
?>
- 62 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
Por s upues to, es tas funciones ha de s er definidas dentr o del s cr ipt ya que no s e
encuentr an integr adas en PHP s ino que las hemos cr eado nos otr os . Es to en r ealidad
no pone ninguna pega ya que pueden s er incluidas des de un ar chivo en el que
ir emos almacenando las definiciones de las funciones que vayamos cr eando o
r ecopilando.
Es tos ar chivos en los que s e guar dan las funciones s e llaman libr er ías . La for ma de
incluir los en nues tr o s cr ipt es a par tir de la ins tr ucción r equir e o include:
Con t r ol del f l u j o en P H P
La pr ogr amación ex ige en muchas ocas iones la r epetición de acciones s uces ivas o
la elección de una deter minada s ecuencia y no de otr a dependiendo de las
condiciones es pecíficas de la ej ecución.
• Con di ci on es I F
Cuando quer emos que el pr ogr ama, llegado a un cier to punto, tome un camino
concr eto en deter minados cas os y otr o difer ente s i las condiciones de ej ecución
difier en, nos s er vimos del conj unto de ins tr ucciones if, els e y els eif. La es tr uctur a
de bas e de es te tipo de ins tr ucciones es la s iguiente:
if (condición)
{
I ns tr ucción 1;
I ns tr ucción 2;
...
}
els e
{
I ns tr ucción A;
I ns tr ucción B;
...
}
if (condición1)
{
I ns tr ucción 1;
- 63 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
I ns tr ucción 2;
...
}
els e
{
if (condición2)
{
I ns tr ucción A;
I ns tr ucción B ;
...
}
els e
{
I ns tr ucción X
...
}
De es te modo podr íamos intr oducir tantas condiciones como quer amos dentr o de
una condición pr incipal.
De gr an ayuda es la ins tr ucción els eif que per mite en una s ola línea intr oducir una
condición adicional. Es te tipo de ins tr ucción s implifica liger amente la s intax is que
acabamos de ver :
if (condición1)
{
I ns tr ucción 1;
I ns tr ucción 2;
...
}
els eif (condición2)
{
I ns tr ucción A;
I ns tr ucción B ;
...
}
els e
{
I ns tr ucción X
...
}
• B u cl es
S ir ven par a r ealiz ar una deter minada s ecuencia de ins tr ucciones un cier to númer o
de veces .
while (condición)
{
ins tr uccion1;
ins tr uccion2;
...
}
- 64 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
<?
$s iz e= 1;
While ($s iz e< = 6)
{
echo" < font s iz e= $s iz e> T amaño
$s iz e< /font> < br > \n" ;
$s iz e+ + ;
}
?>
do
{
ins tr uccion1;
ins tr uccion2;
...
}
while (condición)
<?
For ($s iz e= 1; $s iz e< = 6; $s iz e+ + )
{
echo" < font s iz e= $s iz e> T amaño
$s iz e< /font> < br > \n" ;
}
?>
- 65 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
Recor damos que un ar r ay es una var iable que guar da un conj unto de
elementos (valor es ) catalogados por clave. La es tr uctur a gener al es
la s iguiente:
• Oper ador es
Las var iables , como bas e de infor mación de un lenguaj e, pueden s er cr eadas ,
modificadas y compar adas con otr as por medio de los llamados oper ador es .
+ S uma
- Res ta
* Multiplicación
/ Divis ión
Devuelve el r es to de la
%
divis ión
= = I gualdad
!= Des igual
< Menor que
< = Menor igual que
> Mayor que
> = Mayor igual que
And Y
Or O
! No
- 66 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
B ucles y condiciones s on muy útiles par a pr oces ar los datos dentr o de un mis mo
s cr ipt. S in embar go, en un s itio I nter net, las páginas vis tas y los s cr ipts utiliz ados
s on numer os os . Muy a menudo neces itamos que nues tr os dis tintos s cr ipts es tén
conectados unos con otr os y que s e s ir van de var iables comunes . Por otr o lado, el
us uar io inter acciona por medio de for mular ios cuyos campos han de s er pr oces ados
par a poder dar una r es pues ta. T odo es te tipo de factor es dinámicos han de s er
eficaz mente r egulados por un lenguaj e como PHP.
Las var iables de un s cr ipt tienen una validez ex clus iva par a dicho s cr ipt y r es ulta
impos ible cons er var s u valor cuando ej ecutamos otr o ar chivo dis tinto aunque
ambos es tén enlaz ados . Par a que la página des tino r econoz ca las var iables de otr a
página or igen es neces ar io intr oducir dichas var iables dentr o del enlace hiper tex to
de la página des tino. La s intax is en la página or igen s er ía la s iguiente:
<a hr ef= " des tino.php?var iable1= valor 1&var iable2= valor 2&..." > Mi
enlace< /a>
Como vemos es tas var iables no pos een el s ímbolo $ delante. Es to es debido a que
en r ealidad es te modo de pas ar var iables no es es pecífico de PHP s ino que es
utiliz ado por otr os lenguaj es .
Es te tipo de tr ans fer encia es de gr an utilidad ya que nos per mite inter accionar
dir ectamente con el us uar io.
E l pr oces o es s imilar al ex plicado par a las URLs . Pr imer amente, pr es entamos una
pr imer a página con el for mular io clás ico a r ellenar y las var iables s on r ecogidas en
una s egunda página que las pr oces a:
Pr imer a página:
< HT ML>
< HEAD>
< T I T LE> for mular io.html< /T I T L E>
< /HEAD>
< B ODY>
- 67 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
< FORM MET HOD= " POS T " ACT I ON= " des tino2.php" >
Nombr e< br >
< I NPUT T YPE= " T EXT " NAME= " nombr e" > < br >
Apellidos < br >
< I NPUT T YPE= " T EXT " NAME= " apellidos " > < br >
< I NPUT T YPE= " S UB MI T " >
< /F ORM>
< /B ODY>
< /HT ML>
S egunda página:
< HT ML>
< HEAD>
< T I T LE> des tino2.php< /T I T L E>
< /HEAD>
< B ODY>
<?
echo " Var iable \$nombr e: $nombr e < br > \n" ;
echo " Var iable \$apellidos : $apellidos < br > \n"
?>
< /B ODY>
< /HT ML>
U t i l i z aci ón de l as cooki es
Las cook ies s on unas infor maciones almacenadas por un s itio web en el dis co dur o
del us uar io. Es ta infor mación es almacenada en un ar chivo tipo tex to que s e guar da
cuando el navegador accede al s itio web.
Par a cr ear un ar chivo cook ies , modificar o gener ar una nueva cook ie lo podemos
hacer a par tir de la función S etCookie:
s etcook ie(" nombr e_ de_ la_ cook ie" ,valor ,ex pir acion);
Es impor tante que la cr eación de la cook ie s ea pr evia a la aper tur a del documento
HT ML. E n otr as palabr as , las llamadas a la función s etcook ie() deben s er colocadas
antes de la etiqueta HT ML.
Por otr a par te, es inter es ante s eñalar que el hecho de que definir una cookie ya
ex is tente implica el bor r ado de la antigua. Del mis mo modo, el cr ear una pr imer a
cook ie conlleva la gener ación automática del ar chivo tex to.
Par a utiliz ar el valor de la cook ie en nues tr os s cr ipts tan s ólo tendr emos que llamar
la var iable que define la cook ie. Hay que tener cuidado s in embar go de no definir
var iables en nues tr o s cr ipt con el mis mo nombr e que las cookies pues to que PHP
pr ivilegiar á el contenido de la var iable local con r es pecto a la cook ie y no dar á un
mens aj e de er r or .
- 68 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
S es i on es
Has ta ahor a hemos utiliz ado var iables que s ólo ex is tían en el ar chivo que er a
ej ecutado. Cuando car gábamos otr a página dis tinta, los valor es de es tas var iables
s e per dían a menos que nos tomás emos la moles tia de pas ar los por la URL o
ins cr ibir los en las cook ies o en un for mular io par a s u pos ter ior ex plotación. Es tos
métodos , aunque útiles , no s on todo lo pr ácticos que podr ían en deter minados
cas os en los que la var iable que quer emos cons er var ha de s er utiliz ada en var ios
s cr ipts difer entes y dis tantes los unos de los otr os .
Podr íamos pens ar que es e pr oblema puede quedar r es uelto con las cook ies ya que
s e tr ata de var iables que pueden s er invocadas en cualquier momento. E l pr oblema
es que las cook ies no s on aceptadas ni por la totalidad de los us uar ios ni por la
totalidad de los navegador es lo cual implica que una aplicación que s e s ir vier a de
las cook ies par a pas ar var iables de un ar chivo a otr o no s er ía 100% infalible. Es
impor tante a veces pens ar en " la inmens a minor ía" , s obr e todo en aplicaciones de
comer cio electr ónico donde debemos captar la mayor cantidad de clientes pos ibles
y nues tr os s cr ipts deben es tar pr epar ados ante cualquier eventual deficiencia del
navegador del cliente. Nos r es ulta pues neces ar io el poder declar ar cier tas var iables
que puedan s er r eutiliz adas tantas veces como quer amos dentr o de una mis ma
s es ión.
Pens emos en un car r ito de la compr a de una tienda vir tual donde el cliente va
navegando por las páginas del s itio y añadiendo los ar tículos que quier e compr ar a
un car r ito. Es te car r ito podr ía s er per fectamente una var iable de tipo ar r ay (tabla)
que almacena par a cada r efer encia la cantidad de ar tículos contenidos en el car r ito.
Es ta var iable deber ía s er obviamente cons er vada continuamente a lo lar go de todos
los s cr ipts .
Es te tipo de s ituaciones s on s olventadas a par tir de las var iables de s es ión. Una
s es ión es cons ider ada como el inter valo de tiempo empleado por un us uar io en
r ecor r er nues tr as páginas has ta que abandona nues tr o s itio o dej a de actuar s obr e
él dur ante un tiempo pr olongado o bien, s encillamente, cier r a el navegador .
PHP nos per mite almacenar var iables llamadas de s es ión que, una vez definidas ,
podr án s er utiliz adas dur ante es te laps o de tiempo por cualquier a de los s cr ipts de
nues tr o s itio. Es tas var iables s er án es pecificas del us uar io de modo que var ias
var iables s es ión del mis mo tipo, con dis tintos valor es , pueden es tar coex is tiendo
par a cada una de las s es iones que es tán teniendo lugar s imultáneamente. Es tas
s es iones tienen además s u pr opio identificador de s es ión que s er á único y
es pecífico.
Las var iables de s es ión s e difer encian de las var iables clás icas en que és tas r es iden
en el s er vidor , s on es pecificas de un s olo us uar io definido por un identificador y
pueden s er utiliz adas en la globalidad de nues tr as páginas .
Par a iniciar una s es ión podemos hacer lo de dos for mas dis tintas :
- Declar amos abier tamente la aper tur a de s es ión por medio de la función
s es s ion_ s tar t(). Es ta función cr ea una nueva s es ión par a un nuevo
vis itante o bien r ecuper a la que es tá s iendo llevada a cabo.
- Declar amos una var iable de s es ión por medio de la función
s es s ion_ r egis ter ('var iable'). Es ta función, además de cr ear o r ecuper ar la
s es ión par a la página en la que s e incluye también s ir ve par a intr oducir
una nueva var iable de tipo s es ión.
- 69 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
<?
s es s ion_ r egis ter ('contador ');
?>
< HT ML>
< HEAD>
< T I T LE> contador .php< /T I T L E>
< /HEAD>
< B ODY>
<?
I f (is s et($contador )= = 0)
{ $contador = 0; }
+ + $contador ;
echo " < a hr ef= \" contador .php\" > Has r ecar gado es ta página
$contador veces < /a> " ;
?>
< /B ODY>
< /HT ML>
La condición if tiene en cuenta la pos ibilidad de que la var iable $contador no haya
s ido todavía inicializ ada. La función is s et s e encar ga de dar un valor cer o cuando
una var iable no ha s ido inicializ ada
T R AB AJAR CON B AS E S D E D AT OS E N P H P
Una de las pr incipales ventaj as que pr es enta el tr abaj ar con páginas dinámicas es
el poder almacenar los contenidos en bas es de datos . De es ta for ma, podemos
or ganiz ar los , actualiz ar los y bus car los de una maner a mucho más s imple.
E l lenguaj e PHP, ya hemos dicho, ofr ece inter faces par a el acces o a la mayor ía de
las bas es de datos comer ciales y por ODB C a todas las bas es de datos pos ibles en
s is temas Micr os oft, a par tir de las cuales podr emos editar el contenido de nues tr o
s itio con abs oluta s encillez .
Es ta inter acción s e r ealiz a, por un lado, a par tir de las funciones que PHP nos
pr opone par a cada tipo de bas e de datos y, por otr o es tableciendo un diálogo a
par tir de un idioma univer s al: S QL (S tr uctur ed Quer y L anguage) el cual es común a
todas las bas es de datos .
La bas e de datos más ex tendida en combinación con PHP es MyS QL debido s obr e
todo a s u gr atuidad, eficiencia y s implicidad.
Una vez ins talado MyS QL s er á neces ar io llevar a cabo las s iguientes oper aciones :
- I ntr oducidos dentr o de MyS QL, cr ear emos la bas e de datos ej emplo con
la s iguiente s entencia: cr eate databas e ej emplo;
- 70 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
Ahor a ya dis ponemos de una tabla vacía a la que podr emos hacer le las s iguientes
oper aciones :
Una vez cr eada la tabla clientes en nues tr a bas e de datos ej emplo, el pas o
s iguiente s ea llenar la con r egis tr os . L os datos del r egis tr o pueden s er
r ecogidos , por ej emplo, a par tir de un for mular io.
Lo pr imer o que habr á que hacer es es tablecer un vínculo entr e el pr ogr ama
y la bas e de datos . Es ta conex ión s e lleva a cabo con la función
mys ql_ connect. A continuación, deber emos gener ar una or den de ins er ción
del r egis tr o en lenguaj e S QL. Es ta or den s er á ej ecutada por medio de la
función mys ql_ db_ quer y. En es ta función es pecificar emos pr imer amente la
bas e de datos s obr e la que quer emos actuar y a continuación intr oducir emos
la s entencia S QL.
<?
//Conex ion con la bas e
mys ql_ connect(" localhos t" ," tu_ us er " ," tu_ pas s wor d" );
//Ej ecucion de la s entencia S QL
mys ql_ db_ quer y(" ej emplo" ," ins er t into clientes
(nombr e,telefono) values ('$nombr e','$telefono')" );
?>
Dentr o de una bas e de datos , or ganiz ada por tablas , la s elección de una
tabla enter a o de un cier to numer o de r egis tr os r es ulta una oper ación
r utinar ia.
Los pas os a r ealiz ar s on, en un pr incipio, los vis tos par a la ins er ción de un
r egis tr o: Conex ión a la bas e y ej ecución de la s entencia. S upongamos que la
infor mación de dicha ej ecución es almacenada en la var iable ($r es ult).
E l s iguiente pas o s er á plas mar en pantalla la infor mación r ecogida en
$r es ult. Es to lo har emos mediante la función mys ql_ fetch_ ar r ay que
devuelve una var iable ar r ay con los contenidos de un r egis tr o a la vez que
s e pos iciona s obr e el s iguiente.
La función mys ql_ fr ee_ r es ult s e encar ga de liber ar la memor ia utiliz ada par a
llevar a cabo la cons ulta.
S upongamos que quer emos cambiar el numer o de teléfono de las dis tintas
per s onas pr es entes en nues tr a bas e. E l nombr e de es tas per s onas , as í como
el nuevo numer o de teléfono, s er án r ecogidos por medio de un for mular io.
E l ar chivo del for mular io puede s er un s cr ipt PHP en el que efectuar emos
una llamada a nues tr a bas e de datos par a cons tr uir un menú des plegable
donde apar ez can todos los nombr es .
- 71 -
Introducción a las tecnologías de la información
__________________________________________________________________________________________________________
La maner a de oper ar par a cons tr uir el menú des plegable es la mis ma que
par a vis ualiz ar la tabla, por ej emplo mediante un bucle while en combinación
con la función mys ql_ fetch_ ar r ay, y el s cr ipt de actualiz ación s er á
equivalente al de ins er ción.
Otr a de las oper aciones elementales que s e pueden r ealiz ar s obr e una bas e
de datos es bor r ar un r egis tr o. Par a hacer lo, S QL nos pr opone s entencias del
tipo Delete. U na opción s er ía cr ear un menú des plegable dinámico, como
par a el cas o de las actualiz aciones , y a continuación hacer efectiva la
oper ación a par tir de la ej ecución de la s entencia S QL que cons tr uimos a
par tir de los datos un for mular io.
- 72 -