You are on page 1of 7

Qu es PHP?

PHP es un acrnimo recursivo que significa PHP Hypertext Pre-processor. Subjetivamente el mejor lenguaje para desarrollar sitios web dinmicos (aunque python intenta ser mi amigo... :-P

PHP es un lenguaje interpretado de propsito general ampliamente


usado y que est diseado especialmente para desarrollo web y puede ser incrustado dentro de cdigo H !"# $eneralmente se ejecuta en un servidor web% tomando el cdigo en PHP como su entrada y creando pginas web como salida# Puede ser desplegado en la mayor&a de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno# PHP se encuentra instalado en ms de '( millones de sitios web y en un milln de servidores# Aplicaciones desarrolladas con PHP: drupal% wordpress% faceboo)% mediawi)i% moodle% etc% etc###

Modelo Cliente - Servidor con PHP


Qu sucede detrs del malvolo click? *# +olicita una Pgina al servidor: ya sea cuando escribimos www#algo#com#ar o cuando ,acemos clic) en alg-n enlace% o bien cuando presionamos el botn submit .enviar/# '# 01s una pagina #p,p2 3ue el compilador de p,p se arregle# 4# 1l compilador ejecuta la pagina para convertirse en cdigo xhtml vlido .o eso deber!a/ 5# "a pgina 6,tml .o resultado/ se env&a al cliente como respuesta a su peticin .no les voy a mentir el servidor web intercede en este proceso" aunque no #igure en el diagrama/#

Test 1: Hola mundo.


7reo que queda bastante claro lo que ,ace la linea8 de programa# 9ncluso es cuestionable el ,ec,o de el resultado es e6actamente el mismo de poner <p>Hola Mundo!</p># Pero lo importante es entender que el cdigo PHP esta embebido en el documento ,tml#

Test 2: HTML embebido en PHP!?


1sta prctica se desaconseja% pero es posible e incluso probable que se use con cierta frecuencia para casos concretos donde es imposible o improductivo embeberlo en un documento 6,tml#

Test 3: l!o un "oco m#s com"le$o.


: a,ora2### esa l&nea si que rinde;;### : bastante -til para saber de que tecnolog&as podemos valernos dentro del servidor que se nos alquila .,osting/# 1l resultado es el volcado de toda la informacin disponible del servidor y del compilador de PHP#

Tip: Comentarios

%structura del Servidor &eb con al!unos servicios b#sicos.

1ste esquema esta ms completo y es ms preciso que el anterior# +olo queda mencionar que un servidor web pude tener muc,os interpretes% uno de p,p% otro de pyt,on% otro de asp#net% etc% etc% por eso es muy necesario incluir en la etiqueta el nombre del lenguaje <2p,p = 2>#

%nv'os de datos al servidor. %nv'os mediante P(ST.


"a etiqueta para armar un formulario en 6,tml que ser enviado al servidor mediante el m?todo post es: <form action@8guardar#p,p8 met,od@8post8> <Aform> "a ventaja de enviar los datos mediante post es que viajan ocultos dentro de la cabecera y no son le&bles a simple vista# "os formularios por post son usados obligatoriamente por ej% en los formularios de login#

%nv'os mediante )%T.


"a etiqueta para armar un formulario en 6,tml que envi? datos al servidor mediante el m?todo get es: <form action@8guardar#p,p8 met,od@8get8> <Aform> 1l problema .o ventaja% depende/ que tiene el m?todo $1 es que los datos ingresados en el formulario viajan en la BC"% por lo cual pueden ser le&dos en la barra de navegacin del navegador de internet# "as BC" con los datos se concatenan de la siguiente manera: www#misitio#comAscript#p,p2nombre@!arcosDapellido@Henning

7omo ven los datos son fcilmente le&bles por ello es totalmente desaconsejable utiliEar $1 como m?todo para transferir datos confidenciales como las contraseas# 3u? pasa cuando tenemos acentos o signos de interrogacin en nuestros datos a enviar por get2# Hay toda una norma para convertir esos caracteres especiales a BC"# F nuestros fines% utiliEaremos un comando en p,p llamado urlencode.Gurl/H que ,ar el trabajo de codificar la url escrita a lo bestia8 a los caracteres correspondientes para una BC"#

%nv'os mi*tos+ P(ST , )%T.


Hay ocasiones en donde necesitamos enviar datos por $1 y por PI+ # 1j: <form action@8despac,ante#p,p2accion@guardarDusuario@juan8 met,od@8post8> <Aform> 1n este caso estar&amos enviando la variable: accion% usuario ms todos los campos que se especifiquen dentro del formulario# 1s un m?todo prctico muc,as veces para no tener que recurrir a los campos de te6to ocultos en un formulario#

Como de-inir los nombres de cam"os?


9mportante;% el atributo name de los input% select% te6tarea y dems es el identificador que se utiliEar para recuperar los datos que ingreso el usuario# Jo ,ay que definir atributos name iguales dentro del mismo formulario ni olvidarse de definirlos# <form action@8guardar#p,p8 met,od@8get8> <input type@8te6t8 name@8nombre8 A> <input type@8te6t8 name@8apellido8 A> <input type@8submit8 A> <Aform> Para e6plicar como llegan los datos al servidor tomaremos como ejemplo que el usuario escribio en el formulario +ilvio8 $onEales8 en los campos#

Como lle!an los datos al servidor? %l arra, ./)%T.


"os datos que recopila el servidor son: GK$1 LMnombreMN O +ilvio8 GK$1 LMapellidoMN O $onEales8

%l rra, ./P(ST.
1n caso de que ,ubi?ramos especificado el formulario con m?todo post# 1l array ser&a el siguiente# GKPI+ LMnombreMN O +ilvio8 GKPI+ LMapellidoMN O $onEales8

Me0clando P(ST , )%T.


<form action@8despac,ante#p,p2accion@guardarDusuario@juan8 met,od@8post8> <input type@8te6t8 name@8nombre8 A> <input type@8te6t8 name@8apellido8 A> <input type@8submit8 A> <Aform>

%n ./)%T tendr'amos1
GK$1 LMaccionMN O guardar8 GK$1 LMusuarioMN O juan8

2 en ./P(ST tendr'amos1
GKPI+ LMnombreMN O +ilvio8 GKPI+ LMapellidoMN O $onEales8 Itros arrays interesantes son GK+1CP1C% GK7IIQ91% GK+1++9IJ y GKR9"1+% los veremos ms adelante# NOTA: nviando archivos al servidor: <form action@8guardarFrc,ivo#p,p8 met,od@8post8 enctype@SmultipartAform-dataS > <input type@8file8 name@8arc,ivo8 A> <Aform> Hay que especificar el encode type a multipartes# I no va a llegar nuestro arc,ivo porque no entra en la cabecera de transferencia del 6,tml#

Mane$ando Sesiones.
"as sesiones son un m?todo seguro y eficaE de guardar y mantener datos del usuario durante toda su visita# Podemos guardar por ejemplo sus datos una veE que se autentifico en el sitio# !"PO#TANT : 1l manejo de sesiones debe ,acerse antes de enviar cualquier carcter al navegador del cliente# 7ualquier troEo de ,tml o alg-n ec,o perdido ,ar que sea imposible modificar la cabecera donde se guardan los valores de sesin#

)uardar 3ariables de Sesi4n.


<2p,p sessionKstart./H GK+1++9IJLTusuarioTN @ +ilvio $onEales8H 2>

Restaurar Variables de Sesin.


<2p,p sessionKstart./H ec,o GK+1++9IJLTusuarioTNH ?$ "uchas "s !n%o: ,ttp:AAus4#p,p#netAmanualAenAboo)#session#p,p

Mane$o de Coo5ies.
1l uso de coo)ies es muy frecuente para cosas como recordar la contrasea de una rea de usuarios% saber cuantas visitas ,emos recibido de un mismo usuario o para distinguir a ese usuario entre otros muc,os# !"PO#TANT : 1l manejo de coo)ies debe ,acerse antes de enviar cualquier carcter al navegador del cliente# 7ualquier troEo de ,tml o alg-n ec,o perdido ,ar que sea imposible modificar la cabecera donde se guardan los valores de los coo)ies# Para asignar un coo)ie utiliEamos la siguiente funcin setcoo)ie.nombre% valor% tiempoKe6piracin/ 1j: <2p,p setcoo)ie.SusuarioS%8+ilvio $onEales8%time./U4(V'5VW(VW(/H 2> 7on esta sentencia pondremos una coo)ie llamada usuario% con el valor +ilvio $onEales8 y que e6pirar dentro de 4( d&as# ambi?n tenemos que tener en cuenta que la coo)ie no la tendremos disponible ,asta que el usuario recargue la pgina# Para leer una coo)ie lo podemos ,acer con la variable GK7IIQ91LMnombrecoo)ieMN# Por ejemplo: <2p,p ec,o GK7IIQ91LMusuarioMNH 2> "ucha "s !n%o: ,ttp:AAus4#p,p#netAmanualAenAfeatures#coo)ies#p,p

rc6ivos enviados "or el usuario.


Para manejar los arc,ivos en p,p vamos a recurrir al array GKR9"1+ que contiene todos los datos del arc,ivoAs en cuestin# Primero empecemos creando el formulario% enviarKarc,ivo#,tml <,tml> <body> <form action@ScargarKarc,ivo#p,pS met,od@Spost8 enctype@SmultipartAform-dataS> <label for@SfileS>Frc,ivo:<Alabel> <input type@SfileS name@Sarc,ivoS id@Sarc,ivoS A> <br A> <input type@SsubmitS name@SsubmitS value@S+ubmitS A> <Aform> <Abody> <A,tml>

Mane$ando el arc6ivo enviado en PHP.


1l formulario anterior llama a cargarKarc,ivo#p,p para que post-procese la informacin% nuestro arc,ivo PHP entonces podr&a ser algo similar a esto: <2p,p if .GKR9"1+LSarc,ivoSNLSerrorSN > (/X ec,o SBps;###1rror: S # GKR9"1+LSarc,ivoSNLSerrorSN # S<br A>SH Y elseX ec,o SJombre Iriginal del Frc,ivo: S # GKR9"1+LSarc,ivoSNLSnameSN # S<br A>SH ec,o S ipo de arc,ivo .!9!1- :P1/: S # GKR9"1+LSarc,ivoSNLStypeSN # S<br A>SH ec,o S amao: S # .GKR9"1+LSarc,ivoSNLSsiEeSN A *('5/ # S Qb<br A>SH ec,o SFlmacenado temporalmente en: S # GKR9"1+LSarc,ivoSNLStmpKnameSNH Y 2> 7omo muc,os usuarios pueden estar levantando simultneamente arc,ivos con el mismo nombre% PHP asigna un nombre -nico dentro del directorio temporal del servidor web# 1s trabajo del programador llevar ese arc,ivo a la posicin correcta dentro del directorio que se desee o bien volcarlo a una base de datos# 7on toda la informacin que tenemos sobre el arc,ivo podemos crear los validadores% por ejemplo si type @@ imageAjpeg8 sabemos que es un arc,ivo de imagen y mas precisamente un jpg# 7on siEe podemos limitar el tamao de los arc,ivos que nuestro sitio esa recibiendo% igualmente% el servidor tiene un l&mite que suele ser de 'mb como m6imo# +i se desea cambiar esto ,ay que modificar el arc,ivo de configuracin de p,p el p,p#ini dentro de la seccin recursos dice uploadKma6KfilesiEe @ '!# +i necesitan copiar% mover% recorrer% etc% etc un arc,ivo o un directorio% vean las funciones de Rile +ystem8 de p,p: ,ttp:AAar'#p,p#netAmanualAenAref#filesystem#p,p o bien de la api que les deje :-Z

You might also like