Sunteți pe pagina 1din 29

Manual de PHP (Bsico y Avanzado)

Manual PHP Bsico


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">&'

*"esultado+sp"int()&<H7 + =d <b">&4<;7/'
echo *"esultado4&<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

(unction media5a"itmetica)*a4 *b/
0
*media+)*a.*b/>'
"etu"n *media'
1

echo media5a"itmetica)348/4&<b">&'
echo media5a"itmetica)2>3>47>3732/4&<b">&'

%>
<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

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