Está en la página 1de 5

Webmaster

Curso (I)

ejora t con HP

Curso de PHP

sitio web

Comenzamos UA curso can et que queremos rnostrarte como et uso de PHP puede mejorar tu sitlo web. agregando elementos dimlmicos que se generan a partir de codigo ejecutado en e·[ servidor donde tengas alojadas tus paginas.

Gufa del curso

,

Cap. 1 Mejora tu silio web con PHP

Usa de variables y expresio/nes. Obtener information del vlsltante, Funciones para trabajar ton feohas y horas, Cookies y sesiones. PC! n° 52

Cap. 2 Prcceso de formularios

Composition de fnrmularjos con HTML. Recuperation de 10500105. Validaci6n de dalos.

Reception de archivo<s. PC! n° 53

Cap. 3 Almacenamiento de datos

TrabaJar con el sistema de archives. SOUle vs MySaL. Bases de datos SOLite. Bases de dalos

MySQL. PC! n° 54

Cap. 4 Generacl6n de gr.Uieos

Fundamentos de GD. Graticos nastcos. Textos que son graticos. Representacfen de datos. PC! rf 55

5 i eres de los que tiene web pmpia y, a pesar de que tu ():rovee.cfbr te ohece PH P, La

uti bzas iJ ni ca mr,mte pa 111 ini;tQ d uei r en e lla texto y quizii aLgunas imagenes, dehes saber que esfas 'rfesapro~eccha mio un mundo de PQsjbili~ades,. Generar el conteniclo de tu web, can PHP, en luqar de ofrecer solamente pagtnru; HTMLest1itrcas te p,ermite intmducir t!fecto~ irrteresantes y efreser funciones que, de otra forma, no serlan posibles, como recibtr informacion de los visitantes para, ' preparar un contenido a me:oirla. La primero que' debes hacer es asegu rarte de que tu proveedor te permit-e utilizar paginas PHP. Es un detalle que sueLe indicarse cua ndo se contrata eL servicio de aLojaniie)1to y que puedes, com pro bar de manera

LQue es PHP?

Estamos hablando de PHP y posiblemente te preguntes de que se trata, as]· que varnos a cornenzer por et principia: dej-ar clam que es PH!?, como puedes utilizarlo y, a grandel> rasgos, que es Lo que te va a permitir hacer.

PHP es un software, un pro.grama, disei'iado .p-ar~ ser i nstalade en ellui pas 'que opera n come servidores web, es decir, IIqueLLo:s en Le:s que esta n alojados los· decarnentos y que soh accesibles externamente a traves de unos protoeelos Q.e cemunicacicn estableddos como estaf)dar. PHP trabajaconjuntamente con el servidor web, que suele ser Apache 0 Internet Information Server, mediante una cornunicadcn bidireccional.

194

inmediata,cuand€l subas aL servidor un archive PH? y Lo s0ticites desde el navegarlor. Si puedes utilizer PHP, en el navegader veras el resultado que produzca La ejec:ucion de las sentendas en el servldet En ease contrario, todo Io que veras en eL navegadar sera el mlsme texto que contiene el archive,

sin mas. Para seguir estecurso no as necesaria ninguna expefiencia con PHP, Perc se supcne que sabes como subir un-archivo hasta tu servidor, si tienes una web La haras de forma mas 0 menos habitual, y te £era litiL G:ll.atquier CQnod mlento b~sic!l sabre programad6n que pudieras tener.

En principle, cuando a un servidor web Llega una soLicitLld, procedente deL naveqador de un usu_ario, Lo que se hace es identificar ~L archivo que esta pidiendcse, abrirlo, Leer su contentdo y devolverlo como respuesta al eliente. El navegad.or redbe esa infarmaeian y. La procesa como eerrespenda para mastrarla per ejernplo i ntE!rpr:etandq las rnarcas HTM L para ad.eCUaT

Los atri butes del texto, Los eq ui pas en Ios que est-a irlstaLado PH P se ccnfiquran de forma que euandcel servidor web rscibe una, solicitud,

:si esta haee referenda a un documento can extensiOI") .php el servidor no actua asi. En Lugar de abrir et archive, el serviderejecuta

PH? entre_gandole et hombre de ese.arcttivo y quedandese a laespsra. Sera PHP el que analice el, €ontenido, ttl procese adecuadarnente y devueLva aL servidor La informacion que este, a su vez, debe rernitir al cliente,

I Para el navegado:r y eL propio servidor web ne hay diferencia alquna entre prosesar un document!il HTM L eorrient~D un docu menta PH P; el primerose li mita aenvisr la so[icitud, esperar La: respuesta y procesar La informad0n rectbida. mientras queel segundo recioe La soltcitud, Ia process y espera a que PHP Le facitite La informacion a devoLver. Lo que haga PHP sohre ese archive dependera deL contenido de Elste, con-

cretamente de las ordenes existentas entre las marc.a:s<1php y '1>, que pueden apsrecer tantas vece.$ homo 'sea preciso.

Los an::htvos con extension .php suelen denominarse (guion~s), COlnbina ndoseen ellcs las marcas habituales de eualauier p~gin~ Web con bLoques de tnstrucciones eseritss en (Lenguaje) PHI': COil 8$a5 tnstrucdones piJedes Uevar a I4.bb muLti.tud de tal'eas, prtldu_dend9 un res1Jlt;adn q_ue.

SERVlDOBWB

CUEHTE CO.N HAVEG:AOOII

Curso(l) I Webmaster IUt£ .•

Obten.er e instalar PAP

El sofMare PHP es codigo abJerto '1. en ccnaecuendil, puede.s cbtanerlc, inslill'ar!o 'I u1tuzariD libramen Ie. No cbsta n Ie. Ie Sera lim Ian s6\0'!ii li~l'1es

un equipo con un servidar wecb inslala.do, Apache tambiel'1 as c.6,digo IIbre. 'I besitamertte para realltar prueeas de forma local. antes de sublr los guiOrH!S al s'ervidor dande ~engas lu ~eb_

En www.php.net puede5 encentrar et c6digo fuema cOmplelo de PHp. as! como verslones 'la, .compila,~s para wslinlos sistemas eperativos, Windows. Mac as x, Solaris. etc. En Ui"U.llC Ie habitUal es compHar III c6digo rUllnte eptirnlzade para el sistemaenque se va a insta.la r. p.ara to cua I flO hay maS que segu 1 r las lnstrucciones que se tnduyen en al propio paquete.

sustitllira al ccntenidoque habla prjgjnalmente entre las mar\TIIs<?php:J 7>. Cuando se haya heche esto COr} todcs los bloques de instn.u:;.ciolJe;;, PHP devolverfi el decumentealsewider yeste 1.0 enviar~ al clierrte,

ba diferenc:ia funda merrtal de u rra Ragi r'ia PH P resp-e-cto a una pagin-a HfML., por tanto, es que parte de su contenid{),. e tncluso tcdo, se ha elaborado 'en el mismo rnomsntoan que se procesabela solkitud, came resultado de la oejecudtlfl

Usa de variables y ex.presiones

....... ....,.

._~IIIIr-.j --';"".I1011"~~""U"~"""''''''''''

~I __ ~,rnII_

---

==-===, ~~~~~Pv4I~

0_

del ,gui5n. De ahi que a este c;ontenido sele Itame dinamico, puesto !fue puede petencielmenee cambi.ar ton (:,ada solicitud.

Conociendo PHP puedes lntroducir en las paginas la fscha y hera actuates, un eantador de visitas, resaltar tb~. tem~r; que mas interesan .<1 cada vi~itante del sitio, reeopilar informacion mediante

If.ormularros, et .• c. 5i te. parece que todas estas posibiLidades bien rnerecen sl esfuerzo, no fienes ma:s que seguir Le_yenEio.

Antes siquiera de conocer La 1J,;,mera instruc_cion dellenguj'lje PHp, te lTite.resata saber E6mo .se compnnen expresione~ quI' permitan resotver operaci.ones ;;Iritmeticali 0 e:vaLuar re_laciones par<r comprobar si son dertas 0 falsas, Tilmbi~n te ·sera trn prescindible sa bar tomo all'nacena r esss resultados y Como recuperarLos posteriormente, utilizanda to que en programact6f\ secormce

co mo (va riabLih).

En PItP las variables s-e clifeleneia-n facHmeI1tl!. de cualquier otro elemento pOI' irsiempre precedidas del sfmboLo $,1'10 e:xistiendo una-cernprebecion estricta de tipns :de, datos, es deeir, puades crsar una variable cuando necesites !Juardar Una iljformacion, sin preo(uparlie de dedafClrla previamerlte en ~L guion ni de esperifiear cual sera ta categona de datos Que podra contener,

las exprestorres son se(;uentias de aperando.s: y opera do res, al menus un eperandn 'oj un opera.dor, que ellenguaje eVBLuarn devolviendo eL ~esultada que produce 5U re50lucion. Ese r-esultado puede Ser conS('rvadoen ulla vliriable, utiL1;:ado 1:;01110 oper-rndo en otr~ ~preS'i6n mas compteja 0 utilizada como argumeIliro para imtocar a una funcio,n de las queofrece PHP.

1 Trabajo con, variables

Salvo en glliorles ~xtremadamente' 5e:ndlLos,

to habitual es que necesites guardar de forma temporal infurmaEi-6n que vas a netesitar mas ai:lelarrte, en el mismp guion, para producir e~ ccntenido dinanrico de la pagina .. Con est,e fin l1oHz,as variabLes, POT ejem pLa:

$1'1 ~ J .1-4LS~2 71 $Radi'o - 1Z;

Es.tas son e.xpresion~s muy !;imples en las que partidpan dos operando$ y un operador. Elope-

r;;ldor es el s1mboLo =. encargada de tamar la infO.rmad6n qUe_nay a su d~cha y guardarLa.en La variable tndieada a III izqulerda. "En este easo concrete Los valerese lJ~s~g:nar sen dos ccastantes, eont::r~tamente.dos numeros, mientras que $PI y $R_adi~o son des variables treadas en sse misrno In'$tarite.

Para recuperarel contenido de una variable, por ejemplo .(1 fin de utilizarlo c_omo eperandean una expresi6n 0 utiLizarLo (emil pa.riimetro de Una funci6n, no tienes mas que cotcesr el identificador, el Tlombre pre"edido del simboio $, donde te i ntere&e.. Por ejempl.o:

"$Diiome,tc .. ~ ~R .. rii" ~ :I; eo:.h<> S»1"",.,.,tr<>;

En La primeraexpreliion 51! recupera 10 que cantuviase Iii variable $Radio, SI!. murtlplica por 2 y el resultado se asigna a una Itariabl'il llamada

I $Oiametro .. En La segunda, al contenido de $DiaI metro se enVia como tesuLta:do, introdudendo

sU vaLor e-nlapagina que sec devtlLvera a1 diente. Puedes util~lar La· ii'lstrucd6neCho siempre qU.e nBcesite; in5ertar in f,?,rma ci6n en ta pagina. puedl:'! d~rseelcaso de que rlecesites alma~-enar en una misma variable m-a~ de un valor; ima_gina porejemptc que quieres teneT guardados los n:OnllHes de los; meses para que te sea Facil reClJ-

( pemrlos en cualquier momento. Enestos casos 5e utili Zan vana bLes cono.cidas como (matrices) o (lteciores), capaceS' dE!' c.ontener un numero arbitrario. de llaLores. Estils va,riables 5e CJean de Lasiguie nte fOrma:

(on La palabra carray se indica, a PHP que $Mes e~ un.a. variabl-eque (·ontendr:i La sucesi6n de valores indicados entre los parentesis .. Para

hater referenda a un valor eencretese dispone el nOmbN! de Ia variable seguido de un lndtca, numsrico 0 alfanumerlco segun los casus, entre corehetes, De ser numericor dicho ~ndke de'oer.3 estar comprendido entre 0 y el ruimero

I de valores fotales menos t. Es dedr, en l:a reI ferenda ~Mes[1J ?btendrias et segundo tiE: los valores: Febrero.

A 10 Largo de u h g uien escsito con PH P puedes

Icrea r todas Las variables que necasites para

ir guatdando informacion. Mernas. tamlJien

uti li za ras ncrmalmente etras va riables que ya existen cuandoeL guion cnmienzs a ejecutaJ5e, varia:tlles que podria ctecitse esta.n predefinidas parel prerpia lenguaje. La mayalia de ellas son vertores, es deci r, variables que eo ntisnen tistss de va\ores, tenien~o Lil pa rticularidad de que sus flomores comienzan con et ca ,acter _ y se escri-

I ben complstsmente en I'nllyuscu.las.

I A mSd.ida. que va. Y'a.·l'1 .5iendo aecesarias, pil ra los ejercicios que te propondremos, conoceras muchas de estas variables, algunas de eLIas enesta mismaentrega para recuperar infotmaci6nsobre

el visitante, leer y eSl:ribir cookies.

2 Operadores

Conjuntamente con las variables, uno de los

I aspeCctos fLmda.mentates de cualquler l.enguqje sO.n LIJS opr:radores, _ya q lle: 5?n ellos los que p.ermlten mampuiar la 1l'lformao6n, muclias veces contenida enesas- variables. Va COnOces al menes

dos dperadol'es-: '" pal'aasignaf un val.or a una variable, y .. para efectU.;Ir la ml!ltiplicaci6n dej dos valores num.e_ricIl5. Este _uLtimo fo~ pattE! I del gru po de los operadores a~trneticos, al que til. rnbien perteneol"n -f,-, I 'oj ·.X, I'ncarg;&dos de

efectuar ta Sllma, diferencia, di\.i:isi6n y teste de , division l"ntl"raentre dos ope-randos.

195

Practico

Web master

Curso (I)

Otro conjunto de operadotes-es el denominado (relacional), que se caracteriza por cpmprobar

si una relaci6n es dena a no y devolver true 0 false :;egun correspcnda, La relacion il. comprobar se indica con el eenjunto de opsradores recogi· dos en lel tabla adjunta,

DI'ERADOR I RELACION QUE Sf COMI'RUEBA

Igl.leldacd

!-of) <:> Oesigualdacl

'" Primer operando rnener que et sJ!gl.lndo

<:= Primer operando rnener o igual que "I s<lgundo

:> ,Primer operan do ma~or que el segu~do

!>= Prl me r opera n QO mayor "lguQ,1 que el 5.egundo

Todos estes cperadores 'son binaries, lo que siqnifica que compruecan una relacion sobre dos

o perandos: el primero disouestc a la izquierda del operador y et segundo a su derecha.

Si las retaciones a comprobsr implican a m~s de dos operandos, sera precise ir verificandolas dos a des y despues urrirtas mediante los epsraderes (l{jgicos). Dichos eperadores utitiz'an la €onocida (algebra de Boole) para llegar a qenerar un resultade que sera true 0 false a partir de varies va-

May(isculas. minusculas y punta y coma

Al escribir guiones con PHP no solamente necesitas conocer \a forma en que se utilizan las variables 0 saber que. instrucciones hay que usar para cada tarea concreta. sino que tambieh has de estar al tanto de una saria de.f1ormas que IWdrias denominar basiPls. Aunque en general PHP no diferencia entre mayllsculas y mlnusctllas a la hera de inti!rpr-etar tas 6rdeRe5 de un gUion. 10 que permite escribir las ordenes segon el est1lo al que este habituado cada usuario, existe una excepclon que afectla los nornbres de las variables. Estos delles escriblrtos sigutendo siempre el mismo orden de minuscules y mayoscutas ya que, de III contrario, PHP sUpondra que Ie retieres a dos variables di.stlntas. otra regia afect" a la forma en que se indica el final d.e carla una de las senlencias del guion, ya que para PHP el retorno de carro es un tarflcter mas y, por tanto. una sentencia podna ocupar mas de una line .. ffsica, ES la razon de quese utiticeel punto y coma, un

<~

$M.~s ~ arra.y"{ ~ Ener'o r, ~ FebX-8:l'O' I, I ~"£o j , ~.Abril', 'Mayo', lJun.io', Ia'UUOI, 'Agbsto', 'Septi.emhr.e', 'Ootubre;, 'NovJ .. enUtX'e-', lD.tci~re')i

echo ·<hl>~Me:s[ll<lhl>h; ?>

teres del mismo tipo, sobre la base de una sene de tablas de verdad. LeiS eli! usa mas 'habitual en

~ Obtener informacion del visitante

simbolo que para PHI" establece que en ese punta sa termina una acd6n y va a ccrnenzar otra. Un ejemplo -padrla ser et que muestra el cuadre de c6dlgo ~djunto, Este guion se cornpone unicamente de dos sententias, si bien la prlmara de etlas ocupa cuatro lln~s ffsica-s, Frjale. sin !lmb"rgo. que hay un Linil;:o punto y coma al final de la cuarta Linea. Es un guion complete, por 10 que si escribes es~as lineas en un edilor. las guatdas en UJl archivo con extenslon .php, [0 subes a tu servider y accedes al rnlsmo desda 11,1 nave!lador. podras verel resultado- una pagina con at nornbre del segundo mes del aflo. No es nada especialmente ltsrnafive. pero se trata de IU primer §uiao funcional en PHP.

.......

I"""' • _ ........ ..:... - "';" ,,~~ ~ . . ~ ..

, .... ~~_~tWoF""',--T .. ,. ....1l~ ... _ ..

j1'",lkCF()

! estes cases -son && '::/ II, ~:ormcidos como Y logko yO logic.o,

Una de las prirneras apticaciones utiles que puedes darle a PHP, censlquiende un resultado que en una pagina web estatica no seria pcsibls, consiste en obtener i nforrnacian sabre el visitants que em accedfende 11 tu p~gin3 '::/ .a provecharla para i ntroducir en eUiI rontenlde pe r· sonalizado. Este puede ir desde lo mas ,'entilla" sorejemplo indicando al U5uarl<l !'jut! navegador esta utilizande 0 desde que direccion IPconecta, haste 10 mas elaborado, U5.lIndo esa informacion p~ ra identifjcar de manera unic8 a l usuario y oftecerle losternas que mas leint.eres.an s.egun el registfp de sus ultimas visitas,

Entre las variables predefinidas de PHP que

se indicaban anterlormente hay una, llamad:a $_SERVER, que almacena gran cantidad de informari6n relative tanto al servidor web como al 'cliente que esta ae.cediendo ael, Cemo muehas de las va riables predefinidas de PH Pi esta ell un (vector aseciatfvo), Io que significa que rontiene multiples elementos csda uno de tos cuales es

un par nombre-vator. H nembm se utiliz8: como indice, para recuperar el valor, pm ejemiJto:

Eh este caso HlTP _UA_CPU es eL nQmb.re de

uno de los elementos que hay en la variable $_SERVER, elementlll que como- valor contieRE! til denomin.aciol1 de la CPU del equipo del uSl)1nio que te esta visitando.

atms eLementos interesantes sonREMOTE_ ADDR, que contiene la direcci6n IP del diente y podda servir, par ejem pto, pa,ra determinar el pais de procedencia, 0 HTTP_USER_AGENT,

en et que se almacena la descripci6n del navegapor que utiliza et vi sitil nte. La list<! 'cornpleta de eLementos que contiene La variable $_SER-

196

<ht:mJ.:>

<h.tali><tiltl ... >1nfol'Dlacion PHP</tit;le></hllad> <body>

~re><stl:ong>

<:'1'

J,>rint_r ($_5ERVER) ; 1>

</stroDq></pre> <lbod~

</M.".1:>

VER es bastante amplia y no tiene mucho sentido enurnerarlos uno a uno aqui. Segura mente ta sera mucho mas util tener una pagin~ de (eferencia que be permita ver.ctraL es .eL nombre de esos elementos y SI.! contenido habitual. Para aUo no tienes mas que intrcducir el texto' que muestra

el cusoro de c6uigo superior en un archivo con extension .php, subirlo a tu s-ervidor y sollcitarlo des de et navegador.

Fijate an que este archiv~ contie.!lEl' un.a mezcla de marcas HTML y cocligg PHP, lo cual es muy habitual al componer paginas P.H~. El c()litenido esU.tico se ascribe directamente~t-1 HTM L, utWzando PHP lini· camente para l~ partes que cambian de una :solicitud a otra. En e,ste caso dil::ha [larte es la sentel'ICia print_r($_SERVER), encarga:da de introducir en la pagina w€'h el ,cc)ntenido que p,tJedes veT detaLlatio en la figura adjunta.

print_rO es una funcibn, pgr eso va seguida de unos pare.ntesls entre los que se facilitan los argument05 que necesita: el

! nombre de un v_ector aseciativc. La que hace

I esta furrcien es devolver como una secuencia de texto el contenido de la variable, incluyen.do Los nernbrss de lo's elementos y sus valeres. De esta forma, en La fiquea de ejemplo iaferior pusdes Iter que la direcci6n del s'eMGlGtfes 192.1681.2, mientras qlIe la de! clients que esta accediendo a La pagina es 192.168.1.9. Tambien queda patente en esta pantalla que el naveqador utilrzado lOS Internet Explcrer 7, que el ssrvidor web es Apache 1.3., '::/ un largo etcetera de caraeteristrcas.

1.1JQCtajIDi'1_:tLQP'71 -0> 11.n'tr"':rx~.'fv1!I:J'/.tI1;!~(lt_ (ij."'~l Q ".

I BIJii' ~N:CAPr 1~ljlC:UU'»QI --,. uJp~ d;Dn6~ f'!'P"I"p-~-t.ANtlCiIr.GII') ~ tllI'-1Il1i fltt'rJll-~OI:fJ ~ ~~.ulYQ.

1lJt'fT1l-~' -> C(:Iit;~~ Vl!ltta;al..I'J'SS~4 [lft'I'l'.=IID5'l'] .... lUIllw.bMJ''''~cx. nrr"r''pQ",~->,K

~"~.AGEIW] ~ ... ,..n .. '4.11 c~tJn~16: KflII.: "1,111 Niam.,n .,. iii.!

PA..,e- __ ~ ,... • .,. .1 i.: UIT i1b~D~/.h

,II .A.bMI.:~ .a. 1.12.1"8.1.2

1~-:!iQt"'nOoJFJtl -> ~bJ!lI)-..s.n ~~lD)< :P'I[P'J.:..Il~:;t t~UWAi_~J _', CGl/l.~

t~ UO!'Cl!C!ltl..) -:.- 'ftHP/1 • .l-

~ >IItHoII01 -> Il1:'O

l-_~~ ,

ru:.QCBS'r 0Ill1 .. ,. j 1 nnC1 ROfy.r1 Bbl~ rpllp

t~ ~l -> , fJ<uGJ. .. 'CO!vG.rillhJ.m..p3!Ip

IP:A.TB ~S1.A.J -> (fJMW./t'C'Oa,lla1SOfj/Stita"/v,,",,,i«bleari!IIP [FBP :Sln.r} _, 1~"UClli .co./V.rl..w.u~p!p

! • .,p.~ --> -A,ri.y

I

Practico

Web master

Curso (I)

, Funciones para trabajar con fechas y horas

La funcien print_rO es solamente una del arnpH6 conj unto cen qu e c uenta PH P, existiendo fu n cienes pa fa a perar sobre vecto res 0 ea de nas de caracteres, fu nciones que rea lizan operadanes miltem~fica5 compieias .0 Que marripulan f~eh<1s y tlo ras, E,stas u~tirn as suelen resu Ltar tltiles cuando se recopila informaci6n sobre

los visitantes, porque normalmente interesa conocer La fecha y hera de cada visita a de la ultima visita.

Para obtener la fecha actual, segun el servidor, no hay mas que llamar a La funci6n timeO. Si corrsultas esta fUf)cion en el manual Ife referenda de PHP, quiz'8 te serprenda saber que eL valor que devueLve es nurnerico y que-a partir de e[ puedeextraerse tanto La fe'~ha como la hora actuates. Ese valor as eL n(imero de sequndos que han transcurrldo desde [as: cero horas dell de' enero de 1970,por 10 que bastan una serie de operaciones aritmeticas para saber cuat es

el ano actual, el mes, eL dial la hera, los minutos y Los sequndos.

Otra cpcion, a la hora de recuperar informacion ~olire fecha y nora, es ta futlcioo getdaleO que, a diferencia de tlmeO, se encarg:a de realizer todas Las cperadones arttmeticas y ts ofrece illdividllalme:nte 105 componentes de La fecha y hors alrnacenadas en un vector ascciativc. Yasahes c6mo irrtrodueir eL 'contenido de un vecter de este ti po en u ria p~ qina. no ti-e-

'" ~ !~~~~'" -~c~~~FH'

lor'''' j

, An",

!

r~I .... :H!-

!'1ir.l-A1Io't. ... 1-.l<16 t~~1 -~ J..5,

fIiIHY1 ~ll 'wIII.y<1...;!to

~"j..q."

UO-i'"l _. j-l!ill:"l

C,jdIW) 'V i,OO ~~)oO>~~ ~iii;liD.~1 _]0 <¥*,"-'.1

"Ii, .... ~ H. ~4):In"

Referenda de funcianes de PHP

PHP cuenta con una biblioleca de funcrones muy exl'en!;.8 que. afQrtun<ldamente. se eneuentra exhaustlvarnente documenlada. En www.php.net

no hay mas que introducfr el nombre de cualquiar funcion. en el recuadro que hay en la parte superior derecha de la pagiAa. y obtendras deinmediato todos tos detatles sobre la misma. asl como una Ilsta, en la parte iZlluierda. de otras funciones que formen parte del mismo grupo.

Mienlras aprendes PHP te sera muy utillenet abierta esta pa9ina de referenda. locallzando en ella las funclones que puedas if necesitando. En et manual de PHP se lnduyen asirnismo una referencia complata dellenguaje PHP, informacion sabre [as variables predefinidas. et proceso de instalacion. etc.

nes mas que sustituir La llamada a print_rO del ejernplo de-l punta anterior per prinL r(getdateO); y veras que te ofrece getdateQ.

Si anaLizamos el ejemplo, el elemento mday es el dfa del rnes, mierrtras que wday esel tndice de diade La sem.ana que, por defecto, aS1gn~

el valor 0 al dorninqc, tal tunes y asi sucesivamente. En yday .se encuentra el dia deL afro, de' forma- que al dta 25 de marzo de 2007 le corrssponde el dia iB deL ana, al no haber sido este bisiesto.

...... ~iI'~_ .. oI Um. *._.....,--.._ ... _.01: .~~ ...... .- .....

.....

._.

.:;:_

._.<+ ._

._

.... ......,. ._

._ ._

Cookie·s y sesiones

El ultimc terns que vamos a abordar en esta primsra entrega del curse seguramente te resulte el mas interesante, ya que es el que te permits asociar La informa,ei6n que quietas cen cada visitante de forma individual, de manera que el usuario, alLlegar a tu web, tendra La sensacisn de q\.l€ es recooccido. Esa informacion raalrnente va a almacenarse en el equipo del usuario. no en el servidor deride tienes alojada tu web, al menas no par el momento.

La imprestcn del usuario sera que reanuda una sesien de trabajo que deja en' suspenso durante su ultima visita,

Como prabablenrente ':Ia sepas, Las cookies son pequertos fra-gmentos de informacion almacenados en el ordenador del diente a p.etici6n del sitio web que esta vlsitarrdo en cada momente; Son muchos los sities que funcionan correctamente s6lo si el nav;egador per-mite eL lISO de cookies, una situac~6!l cada vez: mas frecuente dada La difusion de tecnicas como AJAX. Esta es la rilzen de !!Iue, en La praetica, sean muy pocos los usuarios que desactivan las cookies en su navegador y, par tqntG.estas puedan ser uti LizadaS' can basti!Ttte confianzl;! por parte de los d.esarrolladores web, que es eL papel en el ewe te li!flWentras en este momento.

.1 Establecer una cookie

Desde una pilglna PHP oasicamenle plledes hacer dos cosa.s con una ;;Qokie.: a!;ignarLe un vator y recupetar el valor asignada La uLtima vez.

198

En el pri mer caso tienes que utilizer La fu n do n setcookteQ, a La que fac.ilita.s tres argumentes dis-tiritos: 'el nornbre que quieres darle a La cookie,. el valor a aLmacenar en etta y La fecha y bora de eXllira66n.

El ndmbr€' de ta cookie te permits iderrtificarLa de forma (inica, ya que una misma pa£lina PHP puede-utilizar rmlltiples cookies. El valor ascciads a t1l cookie puede ser practicamente cuaiquier informacion: una cadena, un numero, una fecha, etc.

En cuants a la fecha y hora de eXJ'li~Ei0n, ha.y que esteblecerla en el rnisrno formato con que devuelve este dato La fUJlcian timeQ, es decir, coma rHimeTO de segundos i"ranscunietoS de"s,de La median-ache dell de enero de 1'970. La cookie permanecera basta e:se rnomento en eL equipo de Los visitantes, siendo eiiminada una vez se supsre· el mOmento d~ expi.raci6n. Pm ejemJ'lLo:

setcookie-( ,j'-NaveqadorH , $_SERVSRI'H~P_PSER_AGENW'J, ti .. e«) + 3600 " 120.;

La expresion timeO + 3600 • 120 e·stablece que La cookie es valida durante 120 dlas a partir de La fecha actuaL, devuelta por ti.meQ. 3600 es el riume~o de se,gundos que tielle un dia.

Ufla petuliarida~ ,de La fund6nsetcookieO, aSI como deotras que afectan a La informacion que se envia ee n Los en ca beza.dos H T'TP Y no

ill contenido en sf cie La pagina, e$ que debe colocarse en eL archivG .php antes de, cualquier marC<l HTML, instrucd6n echo, print_r £) simiLar, €Os decir, ant-es de que se gellere contenido

cil<juno en La pagina. Ie rtiostrarncs de inmediato como h a cerlo en La practice.

5.2 Recuperar una cookie

De I'IOC9 te servira atmacerrar una cookie .en los navegadores de los dientes si. con posterieridad, no sabes c6mo recuperar esa informacion cuando. te interese utilizarla. Para leer cualquier cookie proesdente del cliente tienes que usar otra. de las v.ariables predefinidas con que cuenta PijP: $_COOKIE.

Al \gual que $_SERVER, La variable $_COOKIE es un vector aso.oi·ativ(J en el que cada elernento eentiene el nombrs y valor de una caekie, Pod nas recu perM e;t vaLu r tie l.a cookie l'4avegador, supuestamente tJead~ en ei-apartado previo, y almacenarLa en una variable cuaLquiera con un.a sentencla cnmo esta,;

$Ulti .. olfa.vesador = $_COOKl:E{ rlfaveglild.Qr' J)

Esto te permitiria sab~rctJijL era el navegador que utili:z6 €It usuario en su ultima visita a

t..u pagina, un vaLor ql:le pue.de.s comparar con $_SERVER['HTIP _USEUGENT'] para saber si ha cambiado desne entiimces a aho navegad.or.

5.3 Un ejemplo final.

Para terminar esta primera entrega te proponem6s el de~arrolLo de un ejeml'llo final, una sencilLa pagina en La que utiLizar variables,

Otra forma de acceder a las cookies

51 consultas algun manualsobre PHP. 0 exaf'I1inas-ei c6digo de guiones escrites per 0111110 personas. es posible que Ie l!ncuel'1tres c-on etras formas de obtr!nc).6n de las Cook!!!s. Una de ellas es a lraves de iii variable S_SERVER qlJe ya conoces, en Is que el elemento H11P _COOKIE conliene eeme valor un vector asocfativo con las cookies. Podriamos declr que S_SERVER['HTTP _ COOKIE'] = $_COOKIE Otra allernafi~a es ulillzar la vanatta predefinida $ .... REQUEST. un vector aSdl:i,alivo que, Ill}1re otro! elementos. eOl1lendrii las cookies reclbidas del dien!!!. Podrlarnes haber utilizado. por tamo, $_REQUESTfNaveclador1 en Lugar de.$_COOKlEt'NlMIgadorl para bblener el valor de la cookie.

Curso (I)

Webmaster

Practico

21 22

else {

~o IitSt.l\ e.5 tu ..,ialt'llIlUmero $(on" .. liar, eliIt\1vlJit.e "qui por .wltima vu

el "'

ec:ho ~Ji'ecba [ • mday' J . ' I

, • $Fecal 'JIIOD' I . ' /' . $Peeha I 'yea!;,' 1 i

Como puepes ver, entre las marca;s HT/¥\L axisten dos bloaues 'de sentenciesescritas en P HP: U ne al ; nicic; para trata r las ceokies. 'i otto mas ade.La 11tJ:! para inttoduCir en La pagina rssultante el conteniQJl. dinamko.

En Las lineas 2 '119 aparece la instruccilin If., cuya fi natidad es,ejecutar urras i-nstrmlc:10nes

u otr""s dependrendo de que La ~valtJaciqn de una ex.presWn sea eierta 0 falsa. Esa expresitm se

fa cilita- entre pa rl§ntesis

y puede tomar mudras furrnas. En la linea 2, por

ejemplo, La expresi6n es

$_COOKIE£'Contador·). una ... - -'

referenda qU.e sera true

::::~c:!..;>~-:t ... ''''·- si esa cookie ya existe., es deeir, si r=1~=.:;..,.":~;!!"J.:;:.!= .... '~' IIUJl 7.U ........ .,.. • ..,. O.l/ .1Il!? eh cliente que te visita [0 ha heche

~_J,lX\Ol ... >:0:1,,", e, '.' previaments y ya habtarnos creado

=:~/:,... _ .. #r .. cl_.w."".", •• ,. l_ ... _ esa cookie antes. En la 11nEia 19 se

~~=: :~ ~:~"'':'''~!r~<!;:-'''-...u......... uriliza el operador = para tom pro·

[~-I - Ui..' .... 1 • bar si La variable .$Contador cantle-

1~-..&r.iIlUI1 ~ 1.II1:II .addroe •• I,JI"nllli

1SDn>t 1 _ •• ,.>;l.~_., .. " ne el vator 1.

l~ I'CM:fI-]IoII!D

icI-==::.-.::UlIIIlI=~"....:=:L..:: ... ~ _j Si t~ expresi6n factlitada entre pa-

fel1tesis es cierta, La irtstruccion If Pfocedera a eJecutar La instruccten siguiante. mientras que si es·falsa ejec.utara la Instruccidn que haya tras La palabrs else. En eualqutera de los. des cases, .si se qutera ejet:utal' milS de Una

2S

1>

26 </p>

27 </bady> ·28 <Jhbi.l>

i nstrucc:i6n 5er~ precise intrgdudrlas entre llaves. De la linea 2 a La 6, per tanto, se camprueba si et usuerte te ha visitado antes 0 rio. EA caso aflrmativo recupera el ccntador de visitas de La ..cookie donde estaba .guardado y le sumes uno, recup:ersnpa. tamhien La fecha de La ultima vis; tao Si es LiI> pri rnera visita, sancilla mente damos el valor 1 a La vmallle $ContadDr. La linea 8 ul:Hi~a una expr~si61l aritmetica para calcular ta fecha deexpirabon, que se guardiJ en una variable. En las lfneas 9 y 10 "teas las des cockies, 0 las actualieas si ya ex)snan, .quatdando

Gudget.

:-:;.:;;- ~ _.1..nT"- '.""~ ~~\\ .. -=- - H'''''~ ..... /i'-.:~ .',' .,\ ·.Y ••• '\ 'F~' .' ~Y.

>!!hrui'CllJ:!J\"rofll' "',. .. t

lJJQt'lRl:lT 1tQO't1 _,. 1ut,!'.AfY"~ryl)J!'~U J1f";p._~ ~ ./:1

~-"I~_mc:m;UO] ~ 01:*0. ~ 1fl'M·_~_~1 ., ._~

1.- -.aort ~ __ lUI ...

tanto prppias como pre.definidas; Las funciones de fec:ha y tambien LIn par de cookies, Una ex~rest(if'l aritmeti'c:a y una tnstruccten de PHP que hasta ahora rro conoces. El objetivo es que cada visitante que Uague a tlJ sitio ohteng<t

una Tl'ldicacion de cuantas veces te ha visitado 'i mal fue La fecha de La ultima visita. . El ccnterrtdc de asta pagina es el deL Listado Qlje muestra at cuadro de c6digo inferior, en el que se han numerado Las lfneas pa'ra Inu;er mas fficit la referencia·en Las expliGacioh:es posterior,es:

1 <lphp

2 tf ($_COCllttB[ 'CQnt.ador' J )

3 $Cunt ... <j.ol' = $_COOIU~1 'Colltadq.r' 1 S;Vi·sitll. .. ~_C:OOKIl1r 'vidtB'l j

5 } alai! 6

$CoDtjldor - ~;

1

9 $1'eCthahp'" thle () .. 360\1 • nO I

9 &etcQOkLa('CoDta~or', ~Contndor. $Pe~

OWtp!,

10 setaook!ej'vi.itB', t~m~I" ~Pech.~pJ, 11 1~

12 <IItlII1>

13 <boad><tit~ web ean PHP</titlo></bea4>

1/10 <bodYl> 15

<bl>G.adg:et." y tJ;ioks</II,1>

16 11 1.8 19 20

<p> <1pbp

$F .... ha ~ ge.f:l1al:.e CW.i.s.i t;l)1 Lf($Contai1or =- 1)

eClio '·Bil!DVOllido, e:st. e!l ttl pr~ra

p.

tdcks

lel contader de vi~itas. y ta ff:r:ha actual, lss

I sentsncias de las Llneas 18 a 24 se limitan a intrcducir en la paginll que Viii iii devoLverse al diente un contenido dinarniro, un texto que

dependera de que esta ,sea 0 no ta primera visits. Para poder extraer el dia, mes y afro de tOt tilti rna visita, que tenias guarctada en La variable $Vl.sila. procesa\a con [a hrnd6n gelciate'Q explicadca antes. E!1 la imagen superior puedes ver eL resuttade de una primera visita y el obtenido tras varias vtsitas de un mismo usuaric,

El mes qu.e viene explit~lrl?:mos detaLladamente los pesos :3. s~guir en el proeeso de form ula rios.

Cad nas de caraderes

Gadgets y tricks

+ 1;

En PHP las cadenas de caraeteres pueden delimilarse tante con comllIas simples como dcblas. perc dabas teneren CtlBnta que et In.tamlenlo qUI! sa les da djfiere segul'l utilices un Upo u atrn de

de1lmilador: Es algo que puedes apredar en este u~timo ejemplo. concretamenle en las dOlO sentencias echo del nnel Eo la primera de eUas .56 han utmzado corplllas dobles para dellmitar u(!a ca·dena comllt.eta. mientras que enJa siguienle las commas simpll!s detl.mi'lan Las dIstintas cadeoa5 de ta elCpresi6n.

La difenmcla fundamental entre Un lipo de tomillas y otras 51! encuentra en que PHP no etectua ninguna ioterpretadon de 10 que Gontiene La cadena 'cuando

se deHmfta con c·omtUas simples, eilliliindola tal cua.l a la pagina. 5i La.5 comlllas SOr:! dobles. por el conlrario, 5e sustlluye cualqUier variable qLII! apa-

rezca entre las comillas p·or su valor. de

forma que lacadena enviada a la pagi-

na no contlene I!I nombre de variable

sino at data asignado a 8sta. Puedes ver rapidaml!nte la difer1!ncla entre un U50

y Dire cambiando la(> camillas d'obles

, del primer eelio· por commas .simples. comprobaras, alsolicftiirla p~gina. que

10 que obtienes no es al numero de visiias sino [a cadena $Cadsna.

El operador . (punto), empleado tarnbien enesle ejemplo. liene La fundon de tQncatel'lar dll£.cadenas. d~e5las 13 izquierda 'I dereclla. generando una sola. Bta pUl!dl! guardarse en una variable, emplearse como arglJtnenlo para !lamar a una funcl'6n O. como en este ca~O. ser enViada comO resUttado a la pagfna.

199

También podría gustarte