0 evaluări0% au considerat acest document util (0 voturi)
72 vizualizări29 pagini
Este documento presenta un manual básico y avanzado de PHP dividido en varias secciones. En la parte básica explica conceptos como variables, operadores, instrucciones condicionales y bucles. La parte avanzada cubre temas como procesamiento de formularios, bases de datos, seguridad, sesiones y cookies.
Este documento presenta un manual básico y avanzado de PHP dividido en varias secciones. En la parte básica explica conceptos como variables, operadores, instrucciones condicionales y bucles. La parte avanzada cubre temas como procesamiento de formularios, bases de datos, seguridad, sesiones y cookies.
Este documento presenta un manual básico y avanzado de PHP dividido en varias secciones. En la parte básica explica conceptos como variables, operadores, instrucciones condicionales y bucles. La parte avanzada cubre temas como procesamiento de formularios, bases de datos, seguridad, sesiones y cookies.
Iniciacin a PHP - Conceptos Bsicos - Nuestro primer PHP - Sintaxis - Variables Operadores en PHP - Aritmticos - Comparacin - !icos Instrucciones en PHP - Condicionales - Bucles - Salida - Cadenas "unciones - "unciones - ibrer#as $%emplos prcticos - "ormateo de p!ina - $nlace externo Manual PHP Avanzado Procesado de &ormularios - $n'io ( recepcin - )et*od +$, ( POS, - $n'io de $mail Bases de -atos )(S. - Crear la base de datos - Conectarse a la B- - Consultas a la B- - Insertar re!istros - Borrar re!istros Se!uridad - /estrin!ir acceso - -istincin de usuarios Sesiones 0PHP12 - 3.u son4 - Iniciali5acin - 6n e%emplo - $rror com7n - Carrito compra Coo8ies - 3.u son4 - Cmo usarlas - $%emplo de uso Manual PHP Bsico Iniciacin a PHP Conceptos bsicos El lenguaje PHP es un lenguaje de programacin de estilo clsico, con esto quiero decir que es un lenguaje de programacin con variables, sentencias condicionales, bucles, funciones.... No es un lenguaje de marcas como podra ser HT!, "! o #!. Est mas cercano a $ava%cript o a &, para aquellos que conocen estos lenguajes. Pero a diferencia de $ava o $ava%cript que se ejecutan en el navegador, PHP se ejecuta en el servidor, por eso nos permite acceder a los recursos que tenga el servidor como por ejemplo podra ser una base de datos. El programa PHP es ejecutado en el servidor ' el resultado enviado al navegador. El resultado es normalmente una pgina HT! pero igualmente podra ser una pagina #!. (l ser PHP un lenguaje que se ejecuta en el servidor no es necesario que su navegador lo soporte, es independiente del navegador, pero sin embargo para que sus pginas PHP funcionen, el servidor donde estn alojadas debe soportar PHP. Nuestro primer PHP !a ventaja que tiene PHP sobre otros lenguajes de programacin que seejecutan en el servidor )como podran ser los script &*+ Perl,, es que nos permite intercalar las sentencias PHP en las paginas HT!, es un concepto algo complicado de entender si no se -a visto nunca como funciona unas paginas PHP o (%P. .amos a ver un ejemplo sencillo para comprenderlo mejor. En a/ul est el cdigo HTML ' en rojo el cdigo PHP. %eguiremos este criterio durante todo el manual. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> Pa"te de HTML no"mal. <#$><#$> <%php echo &Pa"te de PHP<b">&'
(o")*i+,'*i<-,'*i../ 0 echo &Linea &.*i.&<b">&' 1 %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente El cdigo PHP ejecutado tiene dos partes0 la primera imprime 1Parte de PHP1 ' la segunda es un bucle que se ejecuta 23 veces de 3 a 4, por cada ve/ que se ejecuta se escribe una lnea, la variable *i contiene el n5mero de lnea que se est escribiendo. No importa si no entiende mu' bien el programa este ejemplo solo es para ilustrar como se intercala el cdigo HTML y el cdigo PHP. Variables 6na variable es un contenedor de informacin, en el que podemos meter n5meros enteros, n5meros decimales, carcteres... el contenido de las variables se puede leer ' se puede cambiar durante la ejecucin de una pgina PHP. En PHP todas las variables comien/an con el smbolo del dlar * ' no es necesario definir una variable antes de usarla. Tampoco tienen tipos, es decir que una misma variable puede contener un n5mero ' luego puede contener carcteres. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php *a + -' *b + 2.23' *c + &Hola Mundo&' echo *a4&<b">&4*b4&<b">&4*c' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente En este ejemplo -emos definido tres variables, *a, *b ' *c ' con la instruccin echo-emos impreso el valor que contenan, insertando un salto de lnea entre ellas. E7isten 8 tipos de variables, las variables locales que solo pueden ser usadas dentro de funciones ' las variables globales que tienen su mbito de uso fuera de las funciones, podemos acceder a una variable global desde una funcin con la instruccin global nomb"e56a"iable' Operadores en PHP Aritmticos !os operadores de PHP son mu' parecidos a los de & ' $ava%cript, si usted conoce estos lenguajes le resultaran familiares ' fciles de reconocer. Estos son los operadores que se pueden aplicar a las variables ' constantes num9ricas. Operador Nombre Ejemplo Descripcin + Suma 7 . 8 Suma dos nmeros - Resta 9 - : Resta dos nmeros * Multiplicacin 8 ; 2 Multiplica dos nmeros / Divisin 3 < Divide dos nmeros % Mdulo 9 = > Devuelve el resto de dividir ambos nmeros, en este ejemplo el resultado es 1 ++ Suma 1 *a.. Suma 1 al contenido de una variable -- Resta 1 *a-- Resta 1 al contenido de una variable <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php *a + <' *b + 2' echo *a . *b4&<b">&' echo *a - *b4&<b">&' echo *a ; *b4&<b">&' echo *a *b4&<b">&' *a..' echo *a4&<b">&' *b--' echo *b4&<b">&' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente Comparacin !os operadores de comparacin son usados para comparar valores ' as poder tomar decisiones. Operador Nombre Ejemplo Devuelve cier!o cuando" !! "#ual *a ++ *b *a es i#ual *b $! Distinto *a !+ *b *a es distinto *b % Menor &ue *a < *b *a es menor &ue *b ' Ma(or &ue *a > *b *a es ma(or &ue *b %! Menor o i#ual *a <+ *b *a es menor o i#ual &ue *b '! Ma(or o i#ual *a >+ *b *a es ma(or o i#ual &ue *b <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php *a + <' *b + 2' *c + 2' echo *a ++ *b4&<b">&' echo *a !+ *b4&<b">&' echo *a < *b4&<b">&' echo *a > *b4&<b">&' echo *a >+ *c4&<b">&' echo *b <+ *c4&<b">&' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente Lgicos !os operadores lgicos son usados para evaluar varias comparaciones, combinando los posibles valores de estas. Operador Nombre Ejemplo Devuelve cier!o cuando" )) * )9>>/ ?? )><3/ Devuelve verdadero cuando ambas condiciones son verdaderas and * )9>>/ and )><3/ Devuelve verdadero cuando ambas condiciones son verdaderas ++ , )9>>/ @@ )><3/ Devuelve verdadero cuando al menos una de las dos es verdadera or , )9>>/ o" )><3/ Devuelve verdadero cuando al menos una de las dos es verdadera $ -o ! )9>>/ -ie#a el valor de la e.presin <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php *a + <' *b + 2' *c + 2' echo )*a ++ *b/ ?? )*c > *b/4&<b">&' echo )*a ++ *b/ @@ )*b ++ *c/4&<b">&' echo !)*b <+ *c/4&<b">&' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente Instrucciones en PHP Condicionales !as sentencias condicionales nos permiten ejecutar o no unas ciertas instrucciones dependiendo del resultado de evaluar una condicin. !as ms frecuentes son la instruccin i( ' la instruccin sAitch. %entencia i( ... else <%php i( )condicin/ 0 Bentencias a ejecuta" cuando la condicin es cie"ta. 1 else 0 Bentecias a ejecuta" cuando la condicin es (alsa. 1 %> !a sentencia i( ejecuta una serie de instrucciones u otras dependiendo de la condicin que le pongamos. Probablemente sea la instruccin ms importante en cualquier lenguaje de programacin. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php *a + <' *b + 2' i( )*a < *b/ 0 echo &a es meno" Cue b&' 1 else 0 echo &a no es meno" Cue b&' 1 %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente En este ejemplo la condicin no es verdadera por lo que se ejecuta la parte de cdigo correspondiente al else. %entencia sAitch ... case <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php *posicion + &a""iba&'
sAitch)*posicion/ 0 case &a""iba&D #loCue - echo &La 6a"iable contiene&' echo & el 6alo" a""iba&' b"eaE' case &abajo&D #loCue > echo &La 6a"iable contiene&' echo & el 6alo" abajo&' b"eaE' de(aultD #loCue 2 echo &La 6a"iable contiene ot"o 6alo"&' echo & distinto de a""iba ! abajo&' 1 %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente &on la sentencia sAitch podemos ejecutar unas u otras instrucciones dependiendo del valor de una variable, en el ejemplo anterior, dependiendo del valor de la variable*posicion se ejecuta el bloque 2 cuando el valor es 1arriba1, el bloque 8 cuando el valor es 1abajo1 ' el bloque : si no es ninguno de los valores anteriores. !ucles !os bucles nos permiten iterar conjuntos de instrucciones, es decir repetir la ejecucin de un conjunto de instrucciones mientras se cumpla una condicin. %entencia Ahile <%php Ahile )condicin/ 0 int"ucciones a ejecuta". 1 %> ientras la condicin sea cierta se reiterar la ejecucin de las instrucciones que estn dentro del Ahile. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> Fnicio<#$> <%php *i+,' Ahile )*i<-,/ 0 echo &El 6alo" de i es &4 *i4&<b">&' *i..' 1 %> Ginal<#$> <bod!> <html> Ejecutar ejemplo .er cdigo fuente En el siguiente ejemplo, el valor de *i al comien/o es ,, durante la ejecucin del bucle, se va sumando - al valor de *i de manera que cuando *i vale -, 'a no se cumple la condicin ' se termina la ejecucin del bucle. %entencia (o" <%php (o" )inicial ' condicin ' ejecuta" en ite"acin/ 0 int"ucciones a ejecuta". 1 %> <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> Fnicio<#$> <%php (o")*i+, ' *i<-, ' *i../ 0 echo &El 6alo" de i es &4 *i4&<b">&' 1 %> Ginal<#$> <bod!> <html> Ejecutar ejemplo .er cdigo fuente !a instruccin (o" es la instruccin de bucles ms completa. En una sola instruccin nos permite controlar todo el funcionamiento del bucle. El primer parmetro del (o", es ejecutado la primera ve/ ' sirve para iniciali/ar la variable del bucle, el segundo parmetro indica la condicin que se debe cumplir para que el bucle siga ejecutndose ' el tercer parmetro es una instruccin que se ejecuta al final de cada iteracin ' sirve para modificar el valor de la variable de iteracin. "alida Hasta a-ora -emos usado la instruccin echo para reali/ar salida a pantalla, esta instruccin es bastantelimitada 'a que no nos permite formatear la salida. En esta pgina veremos la instruccin p"int( que nos da muc-a ms potencia. %entencia p"int( <%php p"int()cadena (o"mato4 6a"iable-4 6a"iable>.../' %> !a cadena de formateo indica cmo se -an de representar las valores que posteriormente le indicaremos. !a principal ventaja es que adems de poder formatear los valores de salida, nos permite intercalar te7to entre ellos. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php p"int()&El nume"o dos con di(e"entes (o"matosD =d =( =.>(&4>4>4>/' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente !a cadena de formato puede incluir una seria de carcteres especiales que indican como formatear las variables que se inclu'en en la instruccin. Elemen!o #ipo de variable %s /adena de car0cteres %d -mero sin decimales %1 -mero con decimales %c /ar0cter 2S/"" 2un&ue e.isten otros tipos, estos son los m0s importantes <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php *6a"+&teHto&' *num+2' p"int()&Puede (Icimente inte"cala" <b>=s<b> con nJme"os <b>=d<b> <b">&4*6a"4*num/'
p"int()&<TK#LE #L$ME$+- NELLPKMMFOP+>,>&/' (o" )*i+,'*i<-,'*i../ 0 p"int()&<t"><td>=-,.d<td><t">&4*i/' 1 p"int()&<table>&/' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente Manejo de cadenas ;ado el uso del lenguaje PHP el tratamiento de cadenas es mu' importante, e7isten bastantes funciones para el manejo de cadenas, a continuacin e7plicaremos las ms usadas. st"len)cadena/. Nos devuelve el n5mero de carcteres de una cadena. split)sepa"ado"4cadena/. ;ivide una cadena en varias usando un carcter separador. sp"int()cadena de (o"mato4 6a"-4 6a">.../. <ormatea una cadena de te7to al igual que printf pero el resultado es devuelto como una cadena. subst")cadena4 inicio4 longitud/. ;evuelve una subcadena de otra, empe/ando por inicio ' de longitudlongitud. chop)cadena/. Elimina los saltos de lnea ' los espacios finales de una cadena. st"pos)cadena-4 cadena>/. =usca la cadena8 dentro de cadena2 indicndonos la posicin en la que se encuentra. st"5"eplace)cadena-4 cadena>4 teHto/. >eempla/a la cadena- por la cadena>en el te7to. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php echo st"len)&->237&/4&<b">&'
*palab"as+split)& &4&Esto es una p"ueba&/' (o")*i+,'*palab"asQ*iR'*i../ echo *palab"asQ*iR4&<b">&'
echo subst")&Me6uel6e una subcadena de ot"a&4:42/4&<b"><b">&' i( )chop)&Nadena SnSn &/ ++ &Nadena&/ echo &Fguales<b"><b">&' echo st"pos)&#usca la palab"a dent"o de la ("ase&4 &palab"a&/4&<b"><b">&'
echo st"5"eplace)&6e"de&4&"ojo&4&Tn peU de colo" 6e"de4 como 6e"de es la hie"ba.&/4&<b">&'
%> <bod!> <html> Ejecutar ejemplo .er cdigo fuente Funciones #unciones El uso de funciones nos da la capacidad de agrupar varias instrucciones bajo un solo nombre ' poder llamarlas a estas varias veces desde diferentes sitios, a-orrndonos la necesidad de escribirlas de nuevo. <%php (unction Oomb"e)pa"amet"o-4 pa"amet"o>.../ 0 inst"uccin-' inst"uccin>' inst"uccin2' inst"uccin3' "etu"n 6alo"5de5"eto"no' 1 %> ?pcionalmente podemos pasarle parmetros a las funciones que se trataran como variable locales ' as mismo podemos devolver un resultado con la instruccin "etu"n 6alo"' Esto produce la terminacin de la funcin retornando un valor. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php
%> <bod!> <html> Ejecutar ejemplo .er cdigo fuente Librer$a El uso de libreras es tremendamente 5til, nos permiten agrupar varias funciones ' variables en un mismo fic-ero, de manera que luego podemos incluir esta librera en distintas pginas ' disponer de esas funciones fcilmente. <!-- Manual de PHP de WebEstilo.com --> <%php (unction Nabece"aPagina)/ 0 %> <GLOT BFVE+&.-&>Esta cabece"a esta"I en todas sus pIginas.<GLOT><#$> <h"> <% 1
(unction PiePagina)/ 0 %> <h"> <GLOT BFVE+&--&>Este es el pie de pIgina.<GLOT><#$> Kuto"D WoaCuin P"acia <% 1 %> .er cdigo fuente (-ora vamos a crear 8 pginas que usan la librera definida anteriormente para conseguir que las dos paginas tengan la misma cabecera ' pie de pagina. !a instruccin para incluir una librera en nuestra pgina es include)&nomb"e de lib"e"Xa&/ <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php include)&lib"e"ia,-.phtml&/ %> <%php Nabece"aPagina)/' %> PIgina - <#$><#$><#$><#$><#$> Nontenido blalbl blalb alb<#$><#$> mIs cosas...<#$><#$> (in<#$><#$> <%php PiePagina)/' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php include)&lib"e"ia,-.phtml&/ %> <%php Nabece"aPagina)/' %> Esta es ot"a pIgina<#$><#$> completamente distinta<#$><#$> pe"o compa"te el pie ! la cabece"a con la ot"a.<#$><#$> <%php PiePagina)/' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente Ejemplos prcticos #ormateo de pgina En este ejemplo vamos a usar el PHP ' la capacidad de definir libreras para conseguir que todas nuestras pginas tengan el mismo formato de pgina, inclu'endo las partes comunes en libreras. (s mismo modificando la librera modificaramos tambien todas las pginas de una manera mu' rpida. libpagina.phtml <!-- Manual de PHP de WebEstilo.com --> <%php (unction Nabece"aPagina)/ 0 %> <GLOT BFVE+&.-&>Esta cabece"a esta"I en todas sus pIginas.<GLOT><#$> <h"> <% 1
(unction PiePagina)/ 0 %> <h"> <GLOT BFVE+&--&>Este es el pie de pIgina.<GLOT><#$> Kuto"D WoaCuin P"acia <% 1
(unction Fndice)/ 0 %> <K H$EG+&ejem,8a.phtml&>Pagina -<K><#$> <K H$EG+&ejem,8a>.phtml&>Pagina ><K><#$> <% 1 %> .er cdigo fuente ejem,8a.phtml <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php include)&libpagina.phtml&/ %> <%php Nabece"aPagina)/' %> <TK#LE> <T$> <TM><%php Fndice)/ %><TM> <TM> Esta es ot"a pIgina<#$><#$> completamente distinta<#$><#$> pe"o compa"te el pie ! la cabece"a con la ot"a.<#$><#$> <TM> <T$> <TK#LE> <%php PiePagina)/' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente ejem,8a>.phtml <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php include)&libpagina.phtml&/ %> <%php Nabece"aPagina)/' %> <TK#LE> <T$> <TM><%php Fndice)/ %><TM> <TM> PIgina - <#$><#$><#$><#$><#$> Nontenido blalbl blalb alb<#$><#$> mIs cosas...<#$><#$> (in<#$><#$> <TM> <T$> <TK#LE> <%php PiePagina)/' %> <bod!> <html> Ejecutar ejemplo .er cdigo fuente %nlace e&terno con 'rame &on este ejemplo damos solucin al problema de los enlaces e7ternos ' de forma que la @eb e7terna queda en la parte inferior del frame ' as no se sale de nuestra @eb. ejem,8b.html <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <K H$EG+&ejem,8b>.phtml%di"e+httpDAAA.Aebestilo.com&>AAA.Aebestilo.com<K><#$><#$> <K H$EG+&ejem,8b>.phtml%di"e+httpDAAA.te""a.es&>AAA.te""a.es<K> <bod!> <html> Ejecutar ejemplo .er cdigo fuente ejem,8a>.phtml <!-- Manual de PHP de WebEstilo.com --> <!-- ("ames --> <G$KMEBET $LWB+&-,,4;&> <G$KME OKME+&a""iba& B$N+&ejem,8b2.html& MK$PFOWFMTH+&-,& MK$PFOHEFPHT+&-,& BN$LLLFOP+&auto& G$KME#L$ME$+&,&> <G$KME OKME+&abajo& B$N+&<%php echo *di"e %>& MK$PFOWFMTH+&-,& MK$PFOHEFPHT+&-,& BN$LLLFOP+&auto& G$KME#L$ME$+&,&> <G$KMEBET> .er cdigo fuente Manual PHP Avanzado Procesado de formularios %nv$o y recepcin de datos El lenguaje PHP nos proporciona una manera sencilla de manejar formularios, permiti9ndonos de esta manera procesar la informacin que el usuario -a introducido. (l diseAar un formulario debemos indicar la pgina PHP que procesar el formulario, as como en m9todo por el que se le pasar la informacin a la pgina. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de p"ocesado de (o"mula"ios<H-> Fnt"oduUca su nomb"eD <GL$M KNTFLO+&p"ocesa.phtml& METHLM+&PET&> <FOPTT TYPE+&teHt& OKME+&nomb"e&><#$> <FOPTT TYPE+&submit& ZKLTE+&En6ia"&> <GL$M> <bod!> <html> Ejecutar ejemplo .er cdigo fuente (l pulsar el botn Enviar el contenido de cuadro de te7to es enviado a la pgina que indicamos en el atributo KNTFLO de la etiqueta GL$M. En versiones anteriores a B.8.3 PHP creaba una variable por cada elemento del GL$M, esta variable creada tena el mismo nombre que el cuadro de te7to de la pgina anterior ' el valor que -abamos introducido. Pero por ra/ones de seguridad a partir de entonces para acceder a las variables del formulario -a' que usar el arra' de parmetros *5PLBTQRo *5PETQR dependiendo del m9todo usado para enviar los parmetros. En este ejemplo se -a creado una entrada en el arra' *5PETQR con el ndice [nomb"e[' con el valor que -a'a introducido el navegante. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de p"ocesado de (o"mula"ios<H-> El nomb"e Cue ha int"oducido esD <%php echo *5PETQ[nomb"e[R %> <b"> <bod!> <html> .er cdigo fuente Met(od )%T y P*"T En la pgina anterior -emos comentado que los datos de un formulario se enva mediante el m9todo indicado en el atributo ETH?; de la etiqueta <?>, los dos m9todos posibles son *ET ' P?%T. !a diferencia entre estos dos m9todos radica en la forma de enviar los datos a la pgina, mientras que el m9todo *ET enva los datos usando la 6>!, el m9todo P?%T los enva por la entrada estndar %T;+?. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de p"ocesado de (o"mula"ios<H-> <GL$M KNTFLO+&p"ocesa>.phtml& METHLM+&PET&> Fnt"oduUca su nomb"eD<FOPTT TYPE+&teHt& OKME+&nomb"e&><#$> Fnt"oduUca sus apellidosD<FOPTT TYPE+&teHt& OKME+&apellidos&><#$> <FOPTT TYPE+&submit& ZKLTE+&En6ia"&> <GL$M> <bod!> <html> Ejecutar ejemplo .er cdigo fuente <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de p"ocesado de (o"mula"ios<H-> <GL$M KNTFLO+&p"ocesa>.phtml& METHLM+&PLBT&> Fnt"oduUca su nomb"eD<FOPTT TYPE+&teHt& OKME+&nomb"e&><#$> Fnt"oduUca sus apellidosD<FOPTT TYPE+&teHt& OKME+&apellidos&><#$> <FOPTT TYPE+&submit& ZKLTE+&En6ia"&> <GL$M> <bod!> <html> Ejecutar ejemplo .er cdigo fuente procesa8.p-tml <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de p"ocesado de (o"mula"ios<H-> El nomb"e Cue ha int"oducido po" PET esD <%php echo *5PETQ[nomb"e[R4& &4*5PETQ[apellidos[R %><b"> El nomb"e Cue ha int"oducido po" PLBT esD <%php echo *5PLBTQ[nomb"e[R4& &4*5PLBTQ[apellidos[R %> <b"> <bod!> <html> .er cdigo fuente El resultado final es el mismo, solo que con el m9todo *ET podemos ver los parmetros pasados 'a que estn codificados en la 6>!. %nvio de emails PHP nos ofrece la posibilidad de enviar emails de una manera sencilla ' fcil, para ello el lenguaje nos proporciona la instruccin mail) / <%php mail)destinata"io4 tema4 teHto del mensaje/' %> En el parmetro destinata"io pondremos la direccin de email a donde se enviar el mensaje, en el parmetro tema el tema o subject del mensaje ' el parmetro teHto del mensaje el cuerpo del mensaje en formato te7to plano. E7iste una sinta7is e7tendida de la instruccin mail) / que nos permite aAadir informacin adicional a la cabecera del mensaje. <%php mail)destinata"io4 tema4 teHto del mensaje4 in(o"macin adicional de cabece"a/' %> En la informacin de cabecera podremos incluir parmetros adicionales al mensaje como$epl!- ToD, G"omD, Nontent-t!peD... que nos permiten tener un ma'or control sobre el mensaje. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de en6io de email<H-> Fnt"oduUca su di"eccion de emailD <GL$M KNTFLO+&email.phtml& METHLM+&PET&> <FOPTT TYPE+&teHt& OKME+&di"eccion&><#$><#$> Go"matoD <#$> <FOPTT TYPE+&"adio& OKME+&tipo& ZKLTE+&plano& NHEN\EM> TeHto plano<#$> <FOPTT TYPE+&"adio& OKME+&tipo& ZKLTE+&html&> HTML<#$><#$> <FOPTT TYPE+&submit& ZKLTE+&En6ia"&> <GL$M> <bod!> <html> .er cdigo fuente email.p-tml <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de en6io de email<H-> <% *di"eccion+*5PETQ[di"eccion[R' *tipo+*5PETQ[tipo[R'
i( )*di"eccion!+&&/0 i( )*tipo++&plano&/0 En6io en (o"mato teHto plano
mail)*di"eccion4&Ejemplo de en6io de email&4&Ejemplo de en6io de email de teHto planoSnSnWebEstilo.SnhttpDAAA.Aebestilo.comSn Manuales pa"a desa""ollado"es Aeb.Sn&4&G$LMD P"uebas <Aebmaste"]hotmail.com>Sn&/' 1 else 0 En6io en (o"mato HTML mail)*di"eccion4&Ejemplo de en6io de email&4&<html><head><title>WebEstilo. Manual de PHP<title><head><bod!>Ejemplo de en6io de email de HTML<b"><b">WebEstilo.<b">httpDAAA.Aebestilo.com<b"> <u>Manuales<u> pa"a <b>desa""ollado"es<b> Aeb.<bod!><html>&4&Nontent-t!peD teHthtmlSn&4 &G$LMD P"uebas <Aebmaste"]hotmail.com>Sn&/' 1 echo &Be ha en6iado un email a la di"eccionD &4*di"eccion4& en (o"mato <b>&4*tipo4&<b>.&' 1 %> <b"> <GL$M> <bod!> <html> .er cdigo fuente Bases de Datos M!"# Crear la base de datos Para la reali/acin de este curso sobre PHP con acceso a base de datos -emos elegido la base de datos '%C! por ser gratuita ' por ser tambi9n la mas empleada en entornos 6N+", para lo cual el servidor donde tenemos alojadas las pginas nos tiene que proporcionar -erramientas para crearla o acceso al Telnet para que la creemos por nosotros mismos. El comando para crear una base de datos '%C! es el siguiente0 m!sCladmin -u "oot c"eate base5datos &on este comando conseguimos crear la una base de datos en el servidor de bases de datos de nuestro servidor. 6na ve/ conseguido esto debemos crear las tablas en la base de datos, la descripcin de las tablas contienen la estructura de la informacin que almacenaremos en ellas. Para lo cual usaremos en lenguaje de consultas %C! com5n para todas las bases de datos relacionales. En este ejemplo creamos una tabla llamada prueba con : campos0 un campo identificador, que nos servir para identificar unvocamente una fila con el valor de dic-o campo, otro campo con el nombre de una persona ' por 5ltimo un campo con el apellido de la persona. Para crear la tabla puede usar la -erramienta de administracin de '%C! de su servidor @eb o puede escribir un fic-ero de te7to con el contenido de la sentencia %C! equivalente ' luego decirle al motor de base de datos que la ejecute con la siguiente instruccin0 m!sCl -u "oot base5datos <p"ueba.sCl prueba.sql N$EKTE TK#LE p"ueba ) FM5P"ueba int)--/ MEGKTLT [,[ OLT OTLL auto5inc"ement4 Oomb"e 6a"cha")-,,/4 Kpellidos 6a"cha")-,,/4 P$FMK$Y \EY )FM5P"ueba/4 TOF^TE FM5P"ueba )FM5P"ueba/ /' &one7in a la base de datos 6na ve/ que tenemos creada la base de datos en nuestro servidor, el siguiente paso es conectarnos a la misma desde una pgina PHP. Para ello PHP nos proporciona una serie de instrucciones para acceder a bases de datos '%C!. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <%php (unction Nonecta"se)/ 0 i( )!)*linE+m!sCl5connect)&localhost&4&usua"io&4&PassAo"d&/// 0 echo &E""o" conectando a la base de datos.&' eHit)/' 1 i( )!m!sCl5select5db)&base5datos&4*linE// 0 echo &E""o" seleccionando la base de datos.&' eHit)/' 1 "etu"n *linE' 1 *linE+Nonecta"se)/' echo &NoneHin con la base de datos conseguida.<b">&' m!sCl5close)*linE/' cie""a la coneHion %> <bod!> <html> .er cdigo fuente Ejecutar ejemplo (l ejecutar la instruccin m!sCl5connect creamos un vnculo entre la base de datos ' la pagina PHP, este vnculo ser usado posteriormente en las consultas que -agamos a la base de datos. <inalmente, una ve/ que -emos terminado de usar el vnculo con la base de datos, lo liberaremos con la instruccin m!sCl5close para que la cone7in no quede ocupada. &onsultas a la base de datos 6na ve/ que nos -emos conectado con el servidor de bases de datos, 'a podemos reali/ar consultas a las tablas de la base de datos. Para facilitar la programacin -emos separado la funcin de cone7in en una librera a parte, de tal manera que la incluiremos en todas las pginas que accedan a la base de datos. cone7.p-tml <!-- Manual de PHP de WebEstilo.com --> <%php (unction Nonecta"se)/ 0 i( )!)*linE+m!sCl5connect)&localhost&4&usua"io&4&PassAo"d&/// 0 echo &E""o" conectando a la base de datos.&' eHit)/' 1 i( )!m!sCl5select5db)&base5datos&4*linE// 0 echo &E""o" seleccionando la base de datos.&' eHit)/' 1 "etu"n *linE' 1 %> .er cdigo fuente <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de uso de bases de datos con PHP ! M!B^L<H-> <%php include)&coneH.phtml&/' *linE+Nonecta"se)/' *"esult+m!sCl5Cue"!)&select ; ("om p"ueba&4*linE/' %> <TK#LE #L$ME$+- NELLBPKNFOP+- NELLPKMMFOP+-> <T$><TM>?nbsp'Oomb"e<TM><TM>?nbsp'Kpellidos?nbsp'<TM><T$> <%php Ahile)*"oA + m!sCl5(etch5a""a!)*"esult// 0 p"int()&<t"><td>?nbsp'=s<td><td>?nbsp'=s?nbsp'<td><t">&4 *"oAQ&Oomb"e&R4*"oAQ&Kpellidos&R/' 1 m!sCl5("ee5"esult)*"esult/' m!sCl5close)*linE/' %> <table> <bod!> <html> Ejecutar ejemplo .er cdigo fuente En este ejemplo -emos utili/ado : instrucciones nuevas0 m!sCl5Cue"!,m!sCl5(etch5a""a! ' m!sCl5("ee5"esult. &on la instruccin m!sCl5Cue"! -emos -ec-o una consulta a la base de datos en el lenguaje de consultas %C!, con la instruccin m!sCl5(etch5a""a! e7traemos los datos de la consulta a un arra' ' conm!sCl5("ee5"esult liberamos la memoria usada en la consulta. +nsertar registros Hasta a-ora nos -emos conectado a una base de datos ' -emos -ec-o consultas a la misma, a-ora presentaremos como introducir nuevo registros en la base de datos. Para ello usaremos un formulario ' en el KNTFLO del GL$M <GL$M KNTFLO+&p"og"amaPHP&> indicaremos que debe ser procesado una pagina PHP, esta pgina lo que -ar ser introducir los datos del formulario en la base de datos. ejem3Dd.p-tml <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de uso de bases de datos con PHP ! M!B^L<H-> <GL$M KNTFLO+&p"ocesa".phtml&> <TK#LE> <T$> <TM>Oomb"eD<TM> <TM><FOPTT TYPE+&teHt& OKME+&nomb"e& BFVE+&>,& MK_LEOPTH+&2,&><TM> <T$> <T$> <TM>KpellidosD<TM> <TM><FOPTT TYPE+&teHt& OKME+&apellidos& BFVE+&>,& MK_LEOPTH+&2,&><TM> <T$> <TK#LE> <FOPTT TYPE+&submit& OKME+&accion& ZKLTE+&P"aba"&> <GL$M> <h"> <%php include)&coneH.phtml&/' *linE+Nonecta"se)/' *"esult+m!sCl5Cue"!)&select ; ("om p"ueba&4*linE/' %> <TK#LE #L$ME$+- NELLBPKNFOP+- NELLPKMMFOP+-> <T$><TM>?nbsp'<#>Oomb"e<#><TM> <TM>?nbsp'<#>Kpellidos<#>?nbsp'<TM><T$> <%php Ahile)*"oA + m!sCl5(etch5a""a!)*"esult// 0 p"int()&<t"><td>?nbsp'=s<td> <td>?nbsp'=s?nbsp'<td><t">&4 *"oAQ&Oomb"e&R4 *"oAQ&Kpellidos&R/' 1 m!sCl5("ee5"esult)*"esult/' m!sCl5close)*linE/' %> <table> <bod!> <html> Ejecutar ejemplo .er cdigo fuente procesar.p-tml <%php include)&coneH.phtml&/' *linE+Nonecta"se)/' *nomb"e+*5PETQ[nomb"e[R' *apellidos+*5PETQ[apellidos[R' m!sCl5Cue"!)&inse"t into p"ueba )Oomb"e4Kpellidos/ 6alues )[*nomb"e[4[*apellidos[/&4*linE/'
heade")&LocationD ejem,9d.phtml&/' %> !a primera pgina PHP ejem,9d.phtml es un formulario que nos permite introducir nombre ' apellido para aAadirlo a la base de datos, seguido de una consulta que nos muestra el contenido de la tabla prueba. El formulario llama a la pagina p"ocesa".phtmlque aAadir los datos a la tabla. !a segunda pgina p"ocesa".phtml se conecta a la base de datos ' aAade un nuevo registro con la instruccin inse"t del lenguaje de base de datos %C!. 6na ve/ el registro se -a aAadido se vuelve a cargar la pgina ejem,9d.phtml =orrar registros E finalmente, para cerrar el ciclo, nos queda el borrado de registros. El borrado de registros el uno de los procesos ms sencillos. Para indicar que elemento vamos a borrar -emos usado un enlace a la pgina bo""a.phtml pasndole elFM5P"ueba de cada registro, de esta manera la pgina bo""a.phtml sabe que elemento de la tabla -a de borrar. ejem3De.p-tml <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de uso de bases de datos con PHP ! M!B^L<H-> <%php include)&coneH.phtml&/' *linE+Nonecta"se)/' *"esult+m!sCl5Cue"!)&select ; ("om p"ueba&4*linE/' %> <TK#LE #L$ME$+- NELLBPKNFOP+- NELLPKMMFOP+-> <T$><TM>?nbsp'<#>Oomb"e<#><TM> <TM>?nbsp'<#>Kpellidos<#>?nbsp'<TM> <TM>?nbsp'<#>#o""a"<#>?nbsp'<TM><T$> <%php Ahile)*"oA + m!sCl5(etch5a""a!)*"esult// 0 p"int()&<t"><td>?nbsp'=s<td><td>?nbsp'=s?nbsp'<td><td><a h"e(+S&bo""a.phtml%id+ =dS&>#o""a<a><td><t">&4 *"oAQ&Oomb"e&R4*"oAQ&Kpellidos&R4*"oAQ&FM5P"ueba&R/' 1 m!sCl5("ee5"esult)*"esult/' m!sCl5close)*linE/' %> <table> <bod!> <html> Ejecutar ejemplo .er cdigo fuente borra.p-tml <%php include)&coneH.phtml&/' *linE+Nonecta"se)/' *id+*5PETQ[id[R' m!sCl5Cue"!)&delete ("om p"ueba Ahe"e FM5P"ueba + *id&4*linE/'
heade")&LocationD ejem,9e.phtml&/' %> !a pgina bo""a.phtml se conecta a la base de datos ' borra el registro indicado en la variable *id que -a sido pasado desde la pgina ejem,9e.phtml. 6na ve/ el registro se -a borrado se vuelve a cargar la pgina ejem,9e.phtml !e$uridad +estringir el acceso En esta seccin vamos a e7plicar cmo podemos restringir el acceso a seg5n qu9 pginas, para que solo las personas autori/adas puedan acceder a ciertas partes del nuestro sitio @eb. Atencin0 El acceso restringido a pginas usando las variables globales*PHP5KTTH5TBE$, *PHP5KTTH5PW '*PHP5KTTH5TYPE solo funciona si PHP -a sido instalado como un mdulo de (pac-e, si -a sido instalado como un &*+ los ejemplos de 9sta seccin no funcionarn. Para conseguir la autentificacin en las pginas usaremos el sistema de autentificacin del protocolo HTTP, este sistema se basa en las variables globales *PHP5KTTH5TBE$ '*PHP5KTTH5PW. *PHP5KTTH5TBE$. Nombre de usuario introducido. *PHP5KTTH5PW. &ontraseAa introducida. Para que el navegador nos muestre la ventana de peticin de nombre de usuario ' contraseAa basta con enviar la siguiente cabecera0 <%php Manual de PHP de WebEstilo.com i( )!isset)*PHP5KTTH5TBE$// 0 heade")[WWW-KuthenticateD #asic "ealm+&Kcceso "est"ingido&[/' heade")[HTTP-., 3,- Tnautho"iUed[/' echo [Kutho"iUation $eCui"ed.[' eHit' 1 else 0 echo &Ha int"oducido el nomb"e de usua"ioD *PHP5KTTH5TBE$<b">&' echo &Ha int"oducido la cont"ase`aD *PHP5KTTH5PW<b">&' 1 %> Ejecutar ejemplo .er cdigo fuente Esto provoca que se muestre la ventana de nombre de usuario ' contraseAa ' los datos introducidos se asignen a las variables *PHP5KTTH5TBE$ ' *PHP5KTTH5PW. ( partir de aqu reali/aremos las comprobaciones necesarias para asegurarnos que los datos introducidos son los correctos. En el siguiente ejemplo pediremos autori/acin ' comprobaremos si el nombre de usuario es Woe ' la contraseAa ->2, si es as tendremos acceso al resto de la pgina. <%php Manual de PHP de WebEstilo.com i( ))*PHP5KTTH5TBE$!+&Woe&/ @@ )*PHP5KTTH5PW!+&->2&// 0 heade")[WWW-KuthenticateD #asic "ealm+&Kcceso "est"ingido&[/' heade")[HTTP-., 3,- Tnautho"iUed[/' echo [Kutho"iUation $eCui"ed.[' eHit' 1 %> <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> Ha conseguido el acceso a la <#>Uona "est"ingida<#>. <bod!> <html> Ejecutar ejemplo .er cdigo fuente ,istincin de usuarios En la anterior pgina todo el mundo que tena acceso a la parte restringida entraba con el mismo nombre de usuario ' contraseAa, esto evidentemente no es una buena solucin, es mejor que cada persona tenga un nombre de usuario ' contraseAa, 'a que de esta forma podemos in-abilitar a un usuario sin ver comprometida la seguridad de nuestro sitio. En esta pgina veremos la forma de reali/ar esto, teniendo un fic-ero separado con los nombres de usuario ' las contraseAas vlidas. ;ic-o fic-ero podra tener el siguiente formato0nomb"e5de5usua"io@cont"ase`a. Por ejemplo0 pass@ords.t7t Woe@->27 Ped"o@CAe" Ooe@Pt!37e Ee"mit@"Ae36 En este ejemplo se pide la autori/acin al comien/o de la pgina si no se -a establecido con anterioridad ' se comprueba con el fic-ero de contraseAas que -emos llamado pass@ords.t7t, si el nombre de usuario ' contraseAa coincide con alguna entrada del fic-ero se nos permite ver el resto de la pgina. <%php Manual de PHP de WebEstilo.com i( )!isset)*PHP5KTTH5TBE$// 0 heade")[WWW-KuthenticateD #asic "ealm+&Kcceso "est"ingido&[/' heade")[HTTP-., 3,- Tnautho"iUed[/' echo [Kutho"iUation $eCui"ed.[' eHit' 1
*(ich + (ile)&passAo"ds.tHt&/' *i+,' *6alidado+(alse' Ahile )*(ichQ*iR ?? !*6alidado/ 0 *campo + eHplode)&@&4*(ichQ*iR/' i( ))*PHP5KTTH5TBE$++*campoQ,R/ ?? )*PHP5KTTH5PW++chop)*campoQ-R/// *6alidado+t"ue' *i..' 1 i( )!*6alidado/ 0 heade")[WWW-KuthenticateD #asic "ealm+&Kcceso "est"ingido&[/' heade")[HTTP-., 3,- Tnautho"iUed[/' echo [Kutho"iUation $eCui"ed.[' eHit' 1 %> <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> Ha conseguido el acceso a la <#>Uona "est"ingida<#> con el usua"io <%php echo *PHP5KTTH5TBE$%>. <bod!> <html> Ejecutar ejemplo .er cdigo fuente !esiones %PHP&' -.u son las sesiones/ Por0 $ose .alle %i e7iste una consulta repetida en las listas de PHP, es la relativa al uso de las sesiones. El uso de sesiones es un m9todo ampliamente e7tendido en cualquier aplicacin de cierta entidad. =sicamente una sesin es la secuencia de pginas que un usuario visita en un sitio @eb. ;esde que entra en nuestro sitio, -asta que lo abandona. El t9rmino sesin en PHP, session en ingl9s, se aplica a esta secuencia de navegacin, para ello crearemos un identificador 5nico que asignamos a cada una de estas sesiones de navegacin. ( este identificador de sesin se le denomina, com5nmente, como la sesin. El proceso en cualquier lenguaje de programacin podra ser algo as0 E7iste una sesinF %i e7iste la retomamos %i no e7iste creamos una nueva *enerar un identificador 5nico E para que no perdamos el -ilo de la navegacin del usuario deberemos asociar esta sesin a todas las 6>!s ' acciones de formulario. Podemos tambi9n crear un cooGie que inclu'a el identificador de sesin, pero es conveniente recordar que la disponibilidad o no de las cooGies depende del usuario, ' no es conveniente fiarse de lo que un usuario pueda o no tener -abilitado. !o contado -asta a-ora es teora pura ' es aplicable a cualquier lenguaje de programacin &, Perl, etc. !os que programamos en PHPB tenemos la suerte de que toda la gestin de sesiones la -ace el mismo PHP. Por lo tanto lo comentado a partir de aqu es solo aplicable a PHP0. %i a5n desarrollas PHP:, tendrs que crear tus propias libreras de gestin de sesiones o recurrir a alguna de las e7istentes, como la de PHP!+= . 1niciali2acin de la sesin Por0 $ose .alle Para utili/ar sesiones en PHP lo primero es iniciali/arlas. Podemos -acerlo e7plcitamente, mediante la funcin session5sta"t)/, o al registrar una variable en una sesin mediantesession5"egiste")[miZa"iable[/. En ambos casos se crea una nueva sesin, si no e7iste, o se retoma la sesin actual. .eamos un sencillo ejemplo0 <%php Manual de PHP de WebEstilo.com session5sta"t)/' echo &He inicialiUado la sesin&' %> Ejecutar ejemplo .er cdigo fuente Esta es la forma ms bsica, si el usuario tiene los cooGies activados, PHP -abr insertado de forma automtica la sesin ' 9sta ser pasada de una pgina a otra sin -acer nada ms. ;esde un punto de vista prctico la sesin es operativa, pero no vemos nada. Podemos obtener la sesin en cualquier momento mediante la funcin session5id)/. +nserta en las sucesivas pginas la siguiente lnea para ver si la sesin est disponible0 <%php Manual de PHP de WebEstilo.com session5sta"t)/' echo [La sesin actual esD [.session5id)/' %> Ejecutar ejemplo .er cdigo fuente En este caso session5sta"t)/ comprueba en los cooGies que e7iste una sesin ' continua con ella, session5id)/ devuelve el identificador actual. Ejemplo prctico Por0 $ose .alle .eamos otro ejemplo que, tal ve/, te lo aclare un poco ms0 <%php Manual de PHP de WebEstilo.com session5"egiste")[contado"[/' echo [<a h"e(+&[.*PHP5BELG.[%[.*BFM.[&>Nontado" 6aleD [...*5BEBBFLOQ[contado"[R. [<a>[' %> Ejecutar ejemplo .er cdigo fuente &omo dije anteriormente la sesin se crea o recoge mediante session5sta"t)/, o tambi9n cuando se registra una variable de sesin mediante session5"egiste")/. %i no -as utili/ado nunca las sesiones, el concepto de variable de sesin, puede resultar un poco abstracto. =sicamente es una variable, como cualquiera de las que gestiona PHPB, pero que reside en un espacio especfico en el servidor, junto con el identificador de sesin, ' que pertenece 5nicamente a un usuario. En nuestro ejemplo anterior, registramos la variable *contado" en la primera lnea del script. En la segunda lnea, entre otras cosas, cada ve/ que recarguemos la pgina o -agamos clicG sobre el enlace, el valor de *contado" se incrementar en 2. En esta lnea -acemos uso de la variable reservada *PHP5BELG, que -ace referencia al propio script en ejecucin ' una constante propia de PHPB, *BFM, que contiene el nombre de la sesin ' el identificador de la misma. Podemos averiguar tambi9n el nombre de la sesin, o modificarlo, mediante la funcinsession5name)/. .eamos una prueba prctica0 <%php Manual de PHP de WebEstilo.com session5name)[misesion[/' session5"egiste")[contado"[/' echo [<a h"e(+&[.*PHP5BELG.[%[.BFM.[&>Nontado" 6aleD [...*5BEBBFLOQ[contado"[R.[<a><b">[' echo [Kho"a el nomb"e es [.session5name)/.[ ! la sesin [.*misesion.[<b">[' %> Ejecutar ejemplo .er cdigo fuente !a asignacin del nombre de sesin debe reali/arse antes que ninguna otra funcin con sesiones, antes que session5sta"t)/ o session5"egiste")/. %rror com3n Por0 $ose .alle 6no de los errores ms comunes cuando se utili/an sesiones es dejar lneas en blanco antes de la iniciali/acin de PHP o enviar alguna salida a la pantalla. Para probarlo crea una lnea en blanco o con cualquier cosa antes de <%php. %i tienes los cooGies activados, te encontrars un error de este tipo0 Wa"ningD Nannot send session cooEie - heade"s al"ead! sent b! )output sta"ted at homesession.phpD>/ in homesession.php on line 3 PHP est informando de que no puede activar los cooGies en el navegador del usuario, porque las cabeceras 'a -an sido enviadas. %implemente por la e7istencia de una lnea en blanco. &omo medida prctica, no dejes espacios ni antes del inicio del script, ni despu9s de la finali/acin. Te a-orrar muc-os disgustos. %i despu9s de todo lo comentado a5n no entiendes para que sirven las sesiones, veamos un ejemplo prctico. +magina que quisieras crear un sistema de cesta de la compra... Carrito de compra Por0 $ose .alle %i despu9s de todo lo comentado a5n no entiendes para que sirven las sesiones, veamos un ejemplo prctico. +magina que quisieras crear un sistema de cesta de la compra, en su forma bsica podra ser algo as0 <%php Manual de PHP de WebEstilo.com session5sta"t)/' session5"egiste")[itemsEnNesta[/' *item+*5PLBTQ[item[R' *cantidad+*5PLBTQ[cantidad[R' *itemsEnNesta+*5BEBBFLOQ[itemsEnNesta[R' i( )*item/0 i( )!isset)*itemsEnNesta//0 *itemsEnNestaQ*itemR+*cantidad' 1else0 (o"each)*itemsEnNesta as *E +> *6/0 i( )*item++*E/0 *itemsEnNestaQ*ER.+*cantidad' *encont"ado+-' 1 1 i( )!*encont"ado/ *itemsEnNestaQ*itemR+*cantidad' 1 1 *5BEBBFLOQ[itemsEnNesta[R+*itemsEnNesta' %> <html> <bod!> <tt> <(o"m action+&<%+*PHP5BELG.&%&.*BFM%>& method+&post&> Mime el p"oducto <input t!pe+&teHt& name+&item& siUe+&>,&><b"> Nuantas unidades <input t!pe+&teHt& name+&cantidad& siUe+&>,&><b"> <input t!pe+&submit& 6alue+&K`adi" a la cesta&><b"> <(o"m> <% i( )isset)*itemsEnNesta//0 echo[El contenido de la cesta de la comp"a esD<b">[' (o"each)*itemsEnNesta as *E +> *6/0 echo [K"tXculoD [.*E.[ udD [.*6.[<b">[' 1 1 %> <tt> <bod!> <html> Ejecutar ejemplo .er cdigo fuente 6na breve e7plicacin. En la lnea B comprobamos si el usuario -a pasado alg5n artculo, desde el formulario. En la H si el arra' itemsEnNesta no e7iste, lo creamos con el nuevo producto ' la cantidad indicada. %i el arra' e7iste recorremos su contenido, entre las lneas I ' 2:, ' si encontramos un artculo igual, aAadimos la cantidad en la lnea 23. %i no lo encontramos, es un nuevo artculo, por lo tanto, aAadimos el nuevo producto con la correspondiente cantidad a itemsEnNesta en la lnea 2B. E a continuacin imprimimos el formulario ' los resultados, si los -ubiera, a partir de la lnea 2I, donde empie/a el HT!. JTe imaginas las posibilidades de un sistema de almacenamiento de informacin de estas caractersticasF. No necesitas fic-eros, ni bases de datos, ni tienes que andar pasando valores de una pgina a otra. PHP va gestionando estos datos por nosotros, -asta el momento en que decidamos almacenar la informacin donde ms nos interese. Estas son las funcionalidades bsicas de las sesiones, espero que te -a'a resultado ilustrativo ' no olvides consultar el resto de funciones asociadas al uso de sesiones en elmanual de PHP. (oo)ies -.u son las coo4ies/ Por0 &arlos *all5s !a-o/ ' $oaquin *racia. !a principal utilidad de las cooGies )galletas, es la de solventar el problema de la falta de estado en la navegacin a trav9s de las paginas @eb. &on las cooGies, pequeAas porciones de informacin se quedan registradas en el navegador permitiendo identificar a este a trav9s de diferentes pginas de un mismo sitio e incluso durante visitas entre distintos das. >ealmente las cooGies no son mas que cadenas de te7to que son enviadas desde el servidor al cliente )navegador, ' almacenadas en este, luego el navegador enva estas cooGies al servidor permitiendo as la identificacin del cliente en el servidor. #uncionamiento !a cooGie es enviada al navegador desde el servidor ' si este la acepta permanece en 9l. !as pginas piden la cooGie al navegador... El navegador las enva, permitiendo la identificacin del usuario por parte del servidor. ( continuacin vamos a ver como usar las cooGies para nuestro beneficio. Cmo usar las coo4ies Por0 &arlos *all5s !a-o/ ' $oaquin *racia. El manejo de cooGies en PHP se reali/a mediante el uso de la funcinsetcooEie, esta funcin esta disponible a partir de la versin : de PHP. int setcooEie )st"ing Oomb"e Q4 st"ing Zalo" Q4 int EHpi"e Q4 st"ing Path Q4 st"ing Mominio Q4 int Becu"eRRRRR/ BetcooEie)/ define una cooGie que es enviada junto con el resto de la informacin de la cabecera)-eader,. !as cooGies deben ser enviadas antes de cualquier tag de -tml, por lo tanto deberemos reali/ar la llamada a estas funciones antes de cualquier tag <HTML> o<HEKM>. Esta es una restriccin de las cooGies no de PHP. Todos los argumentos e7cepto el nombre son opcionales. Oomb"e. Nombre de la cooGie. %i creamos una cooGie solamente con el nombre, en el cliente se eliminara la cooGie que e7ista con ese nombre. Tambi9n podemos reempla/ar cualquier argumento con una cadena vaca )11,. Zalue. .alor que almacenar la cooGie en el cliente. EHpi"e. El argumento e7pire es un argumento entero que indica la -ora en que se eliminara la cooGie en el formato de -ora que devuelven las funciones 6N+" time), ' mGtime),. Normalmente se usa time)/ . O. segundos de du"acin, para especificar la duracin de una cooGie. Path. %ubdirectorio en donde tiene valor la cooGie. Mominio. ;ominio en donde tiene valor la cooGie. %i ponemos como dominioAAA.domain.com la cooGie no se transmite para domain.com, mientras que si ponemos domain.com la cooGie se transmite tanto para domain.com como paraAAA.domain.com Becu"e. El argumento secure indica que la cooGie solo se transmitir a trav9s de una cone7in segura HTTP%. Ejemplo setcooEie)&usua"io&4 &Luis&4 time)/.28,,4&&4&Aebestilo.com&/' En este ejemplo establecemos una cooGie de nombre usua"io que contiene el valorLuis, que dura - ho"a ):K33 segundos, vlida para todo el dominio Aebestilo.com %jemplo de uso de coo4ies Por0 &arlos *all5s !a-o/ ' $oaquin *racia. En este ejemplo vamos a ver como establecer una cooGie ' cmo se recupera el valor establecido. Para ello pediremos al usuario que introdu/ca su nombre, que guardaremos en una cooGie. Primero pedimos al usuario que introdu/ca el valor de su nombre, usamos un formulario que procesar la pgina p"ocesa"5cooEie.phtml. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de uso de cooEie<H-> Fnt"oduUca su nomb"eD <GL$M KNTFLO+&p"ocesa"5cooEie.phtml& METHLM+&PET&> <FOPTT TYPE+&teHt& OKME+&nomb"e&><#$> <FOPTT TYPE+&submit& ZKLTE+&En6ia"&> <GL$M> <bod!> <html> Ejecutar ejemplo .er cdigo fuente %e establece la cooGie ejemusua"io con el valor introducido anteriormente, ' cu'a duracin es una -ora. <%php Manual de PHP de WebEstilo.com setcooEie)&ejemusua"io&4 *5PETQ[nomb"e[R4 time)/.28,,4&&4&&/' %> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de uso de cooEie<H-> Be ha establecido una cooEie de nomb"e <b>ejemusua"io<b> con el 6alo"D <b><% p"int *5PETQ[nomb"e[R' % ><b> Cue se"I 6Ilida du"ante - ho"a. <bod!> <html> .er cdigo fuente En este ejemplo vemos lo fcil que es recuperar el valor de la cooGie establecida anteriormente. <!-- Manual de PHP de WebEstilo.com --> <html> <head> <title>Ejemplo de PHP<title> <head> <bod!> <H->Ejemplo de uso de cooEie<H-> Be ha establecido la cooEie de nomb"e <b>ejemusua"io<b> 6aleD <b><% p"int *5NLL\FEQ[ejemusua"io[R' % ><b> <bod!> <html> Ejecutar ejemplo .er cdigo fuente 3ttp4//5555ebestilocom/p3p/p3p66p3tml 3ttp4//5555ebestilocom/p3p/p3p16ap3tml