0% encontró este documento útil (0 votos)
42 vistas8 páginas

¿Qué es una sesión en navegación web?

Manejo de Sesiones con PHP
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas8 páginas

¿Qué es una sesión en navegación web?

Manejo de Sesiones con PHP
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

4

t,Que es' una Sesjón? 1-- t -l


9 e>*,P{/ -/tu/P - 5' i?aY'l
lnformalmetlte' una sesiÓn en
la navegación web, es er periodo de
una maquina en particular, navega tiempo en er que una percona, sentada
poirñ númeró oá óatr.r web.en e,
caso patticularen elt!.;l* su Navegaáor hasta que ro cierra En
gl utuar]o inoreia-alun s¡t¡o \rieÉ,'Jr"tu er
persona hace la peticirin iuriooo un en
cle la primer."paiil. hasta que etque esa
Por ejemplo' la pagina web de rrá* lá ietición "oriánJa
un HoteíJJicar¡¡e, u'p"rril"'ülu,.
"rror"nto
oe ra utiirná'antes oe crejar er sitio web.
sus habitaciones e instalaciones y u, sitioweb comprero con ra descripción cre
toi sárv¡c¡os qr. oiü.á, .áto g"n"rrrá
ingresÓ al sistema cle reservacion una sesión desde que er usuario
Éasiá que recibiósu conr¡rmac¡ón,
deiando a un lado el resto de"laspáqinas.
ot¡.' 4 (-* v4 ox')t w /in lLl'tÜ
'nv'v'tt'|L't' :f'or,*
pro,or*P =
¿cwates e/ f""^et
t(,"', t/0 LoA/ ln ¡'' b"L'P'i'-Á ;f
El protocolo HTTP' con el que se comunican hO
¿
y no posee el manejo rle estados, por el.navegadory er servidorweb, fue concebido
lo que el servidor w"n
muy primitivame.te
reaccione de forma inrlependiente'a de memoria a rargo prazo. Esto hace c¡ue
"*ua"
cada una de las peticiones individuares que recibe y no tiene forma cre

Pl-lP Nivel2 - program,r"¡¿ffi


Pag 21
asoclarlas' inclusiver si se lleva el Log de
Transacciones. Ejempro, si una persona ingresa
otra persona ingres;r desde Francia yinrbas desrje \/enezuera y
solicitan rn, piiÁ"r, pagina y luego solicitan
el protocolo HTTP no ofrece ninguriá uyuJu una seguncla pagina,
puru determinar que dos persónas
rrnico c¡ue se podrÍa saber es qüe uirion ,rou páginas cacra uni. Lo
se réalrzaron cuatro soricitúdes inci'ividuates,,
a cada una. No solo ésta información no lo identin"u i"r".."ación variac.ra adiunta
".,nomnre,
electrÓnico' teléfono' o cualquier información periánalmente 1p,or clirección cle cá,reo
dos cle las cuatro peticiones'rr"ton
o" orir"ollr;;;" ofrece ¡nioimac¡on confiabre
para
for [u,t" ,i. un usuário v ili otrr. por partr: de oiro lotarmente indicar que
cristirrto

¿,Par qué no{i inferesa esfa inforrnación?


Si la Única misión de nuestro sitio web
es la cle ofrecer varias páginas ir varios
despreocupar clel hecho de saber.rrnáo usuarios, nos podemos
comienzan y finalizan [as-sesiones. por otro
lazones ¡:or el que nos podría interesar. por laclo, hay muchas
Ejemplo
¡ Queremos personalizar la.experiencia del
usuario mientras navega por nuestro sitio
manera que pueda ir cambiando dependiendo web, cle
de las paginas q¡ue ha visiiado y la canticlacl.
c Queremos mostrar publicidad al usuario, pero
no queremos que se repita más de una vez por
visita a nuestro sitio y asímostrarla
mayoi.antio-ao de produclos posible.
" Queremos que la sesiÓn acumule información
acerca de las acciones del usuario durante
como el carrilo de compra de u.na tienda su
v¡rtuar o rai;;;i;;"r escosidas duranre
il;:flf=" s'
' fft['J;;;lt"Ji:X'::;?¡I,'^19i'-ar la cantidad de personas clue navesan en
nuestro sistema
marcaron como ravorí,, , §:!'*;l{?i
,o:ü:,*:il,".:,:,á",=T: ,§i?":*;:l*,:,üi,l¡
ingresa directamentu a uni sección o por ra peti., de inicio.
" Queremos establecer niveles de §eguridad
en un sistema que requiera autenticación y
autorizaciÓn, de manera de proteger .
oe'l ac"áro pruti"o cierta información
Por todas estas razones y más, es clelicada.
necesario asociar todas aquellas peticionr:s
sesiÓn a la cual perternecen, y como hechas por un usuario con la
valor agregado, almacenar'información
progresa asociada con clicha sesión mientras

Coma trabaja/? ,as sesiones en ptip


Pl-lP permite iniciar una sesión y
almacenar v.ariables en eila que podrán
web de nuestro sistema. Rara que I; ser utirizacras en todas ras páginas
r;;;án esté crisponibru, pnÉ hace ro siguiente:
1. pHp asigna un número de identificación de sesión.
Este número es una cadena de caracteres
puedir ser adivinaclo' Esta cadena única para cada usuario haciendo imposible
qr,re
pH p:'EsstD. ,tmr""nada en una variable c.le sistema llamacia
", gáuiozr s s+oas+
Ejenrpro. 0f39567dbd 1 r c"oe¿o
2 las variables que el programador desea
5i3, |ff;:l' resguerrdar en ra sesió, en un archivo
El arc;hivo es llamado con el número
de identificación de sesión, el cual se encontrará
especiflcada en ra variar¡re sessior"sa"";;;;; err la rt¡ta
er archivo ph¡p.ini.
3' PFIP ¡lasa el numero de identificación
de la sesión a cada una de las páginas
si el navegador web del cliente tiene activada. el
indicarle al navegador cual es su uso de c;ookies, pl-lp las utilizará para
número'0"-¡o"ntiflcación .1" rur¡on, en caso corrtrario,
de la forma en la que t" configurado et servidor para et manejo cre ras
:§3.;H::' "n"u"ntr"

PHP Nivei2 - prograrna",offi


Pag ')2
4. PHP obtiene las variables almacenadas en el archivo de sesión para cada nueva página
visitada por el usuario.
cuando un usuario abre una pagina de nuestro sltio web que pertenece
PHP obtiene las variables del.nueva a Ia sesión,
archiv'o üianoo el número oe ioenti¡caf¡on ae
fueron pasadas desde q3gina¡..3nteriores por la seiion que
cookies o por los métodos GET y posr. Estas
variaLrles estarán disponibles utilizando el
aireglo $_SESSION

Creando y Destruyendo Sesíones


se deberÍa crear una sesión ar principio de cada págína
siguiente códioo:
web. para crear una sesión, es necesario utilizar
el

sessr-on_start ( )

Esta función busca erl número de identificación


de sesión en ras cookies o en las variables de paso
información GET y posr. si lo consiguá,
r""rpura las variables de sesión atmacenaoa en ella, en de
contrario inicia una nueva sesión creandó un caso
númáro nráuo v ,Jénenooselo al usuario.

Toda inicialización de sesio


igual q.ue el uso de cookies explicado en la sección
Encabezados de página.

se le puede indicar a PHP que inicialice automáticamente


nuestro web site' Esto se logra modificando la sesión en cada una de las páginas contenidas en
ser logrado por el administrador. si estamos
el.archivo áu del pHp ttámaoo php.ini y solo puede
"onr'grrrción
utilizando et serv¡cio de algún prou""oái,
sea activado o referirse a Ia documentación para necesario pedirle que
variable llamada sessiion'auto-start y tá t"
"s archivo, se busca
ver si es posible hacerlo. Dentro de este
la
web para que esta configuración tenga erecto. con"i ,ál6i-.ñ'1. es necesar¡o eñünces reiniciar er servido¡
coloca
sentencia session_starrtfl al com¡enzo"de
ta in¡c¡áiización automática, no es necesario añadir
ta
cada pagina
La mayoría de los casos, los sistemas requieren
restringir el acceso a un sistema mediante de
un nombre de
de ."'iáná.l pJiL"s"n"rrr requieren rambién que
§Hi1J,'J.'::oj:l:'j."::3::f
su sesión en er sistema v por eno se ,:st^e lleo er usuario cierre
coroca ,n *efáo.o'eiri;';rj;.'p#""ffii$:ifilXT."'r:::il'r",;::
específicamente para clestruir la sesión
es nelgsqllq ulitizar ta siluiente instrucción_
session_destroy ( ) ,.

Estainstrucciónsedeshacedetodaslasvariablesdesesión,l

§!|:t::lTffi;H:lJ,i:i:''""e pásina sin embarsó:;;;;;"n arecradas ras variabres que sé un",uñr.,n

Usando las varia0fes de sesió n en pHp

:f,i:#1[f::li:J:il"*:il,f"*"^::"r:*l B"g"l*lkarra.deposreriormenre
finido llamado $_SESSION, la siguiente
en otras pásinas web, es necesario ra
manera:
$*sussrou l'nombre de -la variable,) = ,,vaLor
de _za variat¡f e,,;

PHP Nivel 2 - Programación de nplicaciones WuO


Pág 23
cuando se abre la sesiÓn en una página poslerior, los valores
almacenados en el arreglo estarán disponibles.
se desea eliminar el valor de este-arregto para'que deje d;
inslrucción:
;;;;iróá"i[rá'lu"iruo. utitizar ta siguientesi
unset($_SESSION[,:rorabre de La rzaria-ble,7
= ,,Valor de la waxiab!¿,,1 ;
En el siguiente ejemplo se puede observar la fonna de pasar
la información de una pagi*; otr*

<?php , ---[ ,
session start O ,. Lllho fo *¿/r_U { )
$_sussrox [,rzariabJe_".;í"; íi :,;;;;"2"rí r,
?>
<hLm].>
(head)
(title>probando Las sesiones _ pagina 1</title>
</head>
<body>
<p>Esta es una prueba de las sesiones.
(f,orm action="prueba_sesion2 . php" method.=tr pOSTn)
{input type=" textñ name=il variable formulario,, value="pf ueba2,r)
. (input type=rrsubmiL'r rralue=,, Ir a ]a Siguiente Pagina'r >
</form>
</body>
</hLml>

En este script se inicia una sesiÓn e inrnediatamente es almacenada


variable-sesion' un formulario de una variable de sesión llamada
§uat rorma ái áá,|1"Ño' con un campo de texto er cuar re permite ar
usuario ingresar información- cuandó el botón sunmii, q"üi¡"n.
presionado' únicamente es enviada la información la etiquéra ,,lr a Ia siguiente pagina,, es
evi vq'lrr¡'v de texto ,ivariable_formulario,, y comienza la
del
ejecución del segundo prograrna. "áápo

rueba seston
<?php
session_startO;
?>
<htrrrl>
{head}
{tit1e)Testj-ng Sessions page 2<,/tit1e>
</head>
<body>
<?php
$var sesion = $_sEssIoN[,variair_le sesion,],.
$var form : $_póSf [,1,ariabJe t"r*;rr.:Z'il,'
echo ,,VaLor a,lmacenado en _la sesión :
echo "Vafor proveniente deJ formuLari" §var ses-ion<br)\n.,;
: i;r._form(br>\nn,,.
$_sussrou[,rzaria.b_? e_fornt,] : $_posT[,variab].
print_r (g_sEssfoN) fo.rr:ario,l
;
?>
</body>
</htm]->

PHP Nivet 2 - programación de Arlir-ac¡ones Web


Pá9.24
*1' Á'
5ü->'/lOU ' UIE ---tv'q.,') ' A
Valor almacenado ,en la sesión :
VaIor proven-ieni_e del- formufarlo pruebal
Array = prueba2
(

lvariable sesionl => pruebal


Ivariak¡]-e forml :> p.L"buá--
)-

Usando sesirones srn cookies


Muchos usuarios' p-or. razo.nes de seguridad, desactivan
la propiedad de utilizar cook¡es
en su navegador. pHp
:;H:?,ffi,H:iru?i§,','.?"Ts;:,¿y,?:ixilHi;f:ffiÁi{"Jffgiüll,"1ilffiJ,§,, que e,sisrema runcionará

" Le as'igna a ra variabre


$pHpsEssrD er número de sesión
' Hace uso de las cooKlEs para
moverelvalorde $pHpsEsslD de
una pagina a otra
si el navegador del us;uario esfá
configurado para rechazarras
cookies, pHp se comporta de
forma distinta:
' lnicializa una constante
orgle.[nida llarnada
de la :;esión al ígualque el pHpSEsSiüslD. La Ld constante
Lionslante contie
contiene el valor de identificación

' de
Pued*r o no automáticamente
Ia configuración delenviar el número.desesión
pr'ü"i"ir""']iirrao entre- página y página, dependiendo
tran-s-id esta apagado por defeito- trans-id'-Én. er archivo php.ini.
su piuou'incender buscanáo ta
conrrsuración que dice session.r";j;;;_io. oer¡n¡c¡on en elarchivo de
s¡ ,p";;;;";;n-er varor 0, se encuenrra
l3:3fÍ'?,1 .:iJl"?ffi", ff ,'. -:"."'Jil:i
ffi ;É;;a
qu e ra co nns u ra ció n rom e ;i;t. i"-J" .*,
Utilizar trans-id tiene sus ventajas y desventajas:
' ventaias: las sesiones trabajan
independientemente de que
recibir cookies. La programación er usuario tenga o ra posibiridad
se dr;;;;;cil rur ya que no es de
el usuario reciba o no la, cookies necesario
nece: preocuparse por que
' Desventajas: el número
situacir¡nes' por razones oe-de sesión ocasionarmente es pasado en
direccirSn del navegador, ya
seguridao,-ái de sesión no'áao*r,, .er uRL. En argunas
que se ",i**ro. ser mostradc en la
número, to que rupi".unia un punro expone ar-sistema q; ;rñiera pueda manejar ese
vutn.erabte. D;l;;;i;r*üill.o"
SE EI et número dssesión

rf i[:,r,H:n*x'§H'f#,#ffi :?trimii:T¿Hir*?:*T!,rr:".,?,"ffi s
Sesrones con trans-id encend¡do
cuando la opción trans-id está
encendida y el usuario tiene
envía el número de identifica"¡on desactivada ras cookies, pHp automáticamente
una siguiente pagina
Lrli'üñL o un campo ocurto en un formurario.
r'ip"ruintrlo, "oro
una trn.¡án
sier usuario se mueve a
-us;3ndo 'n
de ¡dentif¡caciÓn es añadido
un[. rr'i"caso d" que er áÉ"u"*abezado o usando er método GET, er núrnero
;;r;;, se mueva a una siguiente págrna usando urr
'i
PHP Niverz - Prograrruiffi
Pás 25
formulario con el método Posr, el número se envía a través de un campo oculto del formulario. pHp
reconoce
de identincación de ra sesión v hace er mane¡o ie ra sesión
;iJrffir1::J]":'rT:,r:r:fj,iS sin tenei"que

{a trref='r nueva_pagina . php ">

PHP añadirá el número de sesión. Sin emba


el link es corno
{a href="http :/ / www.oLroservidor com/nueva_pagina , php ")

PHP no añadirá el núrnero de identificación de sesión.

Sesíones con trans-id apagado

(a href="proxima_pagina.php?<?php echo
SID ?> ) próxj_ma página </a>_

Este hipervínculo incluye la marca de pregunta (?)


alfinal del nombre del archivo y t, sto añadida
al URL' el cual contiene el numero de'ioe-ntificaüán o" "o*t*t* deberÍa
como lo siquiente:
ü rá.ió.. El resultado cte la operación ", ser algo
Proxima-pagina 'php ? pHpsESS rD:Bi't c221 63dBdf9deb3 42 c7 3 33 cfe3 B aT

<?php
$pHpsessrD = session ídO;
ec.ho "{form ac.tíon:,iroxima_pagina.php t meffo6¿!7,
(iaput t¡pei=' hídden, nem€¡:,l)I{p.5.Ess-rD, 1OST, > pHps.ESS
tr¡a-Lue=' $
(ia¡:ut type=,submjt, rra-l.rre=, proxima pagina, ID' >
</fot n>" ; )
?>

Estas instrucciones hacen lo siguiente:


1. La función session_idfl retorna
el número de la sesión actual y entonces se almacena en la
va ¡iable llaniada
$pHpSfSSln
La variable definida es colocada como valor del campo-oculto
luego a la próxima pagina.
en el formulario y es enviada

PHP Nivel 2 - programación de npicaciones WeO


Pás 26
En la nueva página, PHp automáticamente encuentra el pHpsESSlD sin la necesidad
i nstrucción especial adicional.
de ejecutar alguna

Creando se$ro nes Vtp


Las funciones de sesión de PHP son ideales para sitios web que son
restringidos y requiere que los usuarios
ingresen un nombre cle usuario y contraseña. Estos sitios web indudablemente poseen
muchas páginas, y no se
desea que el usuario se identifique en cada una de ellas. Las sesiones en pHF pueden
llevar el control de los
usuarios que se han iautenticado con el sistema y rechazar aquellos que
no lo han hecho. Usando las sesiones
en PHP, se puede hacer lo siguiente:
1. Mostrar al usuario una página de Login
2' Si el usuario hace su proceso de autenticación correctamente, se inicializa una variable de
sesión y se almacena indicando que el usuario tiene et permiso de ingreso y uso del
sistema.
3. Cuanrlo un' usuario se dirija a una nueva página dentro de nueslro sistema, se verifica
Ia
variahle de sesión para estar seguro que el usuario se ha autenticado.
4. Si el usuario se ha autenticado, mostramos la página.
5- si el usuario no ro está, le enseñamos en cambio la página de login.
Para hacer la verificaciÓn de login de un usuario, se debe agregar el siguiente código
al priniipio de cada

<?php
session start O ;
if ( G$_SnSsION[rlogin'] != true ){
header (t,Lo,:ation : Jogin php,,l ;
.

exit();
l
?>

En estas instrucciones, PHP verifica que la variable de sesión llamada login


proceso de autenticación - la cual fue inicializada en el
- sea verdadera. si esto no se cumple, significa que et usuario no ha pasado por
proceso de autenticación, y el usuario es redireccionado a página el
la d'e login.'
Si LSESSIoN['login'll es verdadera, se salla el redireccionamiento y
continúa con el resto de las inslrucciones
de la página Web,

Autenticacién HTT?

<?php

.$usuario-autor.lzado: ,admin,; ll SOto como ejemplo!


/ / ta autorización debe venir de una BD

PHP Nivel2 - Programación de Aplicaciones Web


Paq 27
$contrasena :,123456, ; // SAto como ejemplo!

if ( ! isset ( $pup AUTH USER)


){
header (,,V{WWlAuthE¡Licate.. -Basic rea-Zm:\,pHp
header (',Hl.Tp,/ f . 0 401 .Unauthorized,,l baok\,,,,)
;

exit;
l elseif ( (§pup AUTH_USER
== gusuario_autorizado)
&& ($pHp_eut¡¡_p¡4 _= gcontrasena) ) {
print ( "Entrada autorizada(.BR>,,) ;
) else {
print,("Usted no tiene permiso para ingresar(-BR),,).-
l
?>

si se visita este progmma la primera vez, nos saldrá una


de usuario y su contrasela ventana emercente solicitándole al cliente el nombre
vez ingiesada esta inrormacián, la pajina se aciual¡za
-u!9
las nuevas variabres ttpHp-AUTH-usEh (conteniendo automáticamente con
er n;;bre de uluario) v spirp_aurH_pAsswD
la contraseña)' Lo bueno de tooo esto es que el (con
navegador seguirá indicandÍo los valores indicados por
usuario cada vez que se le solicite, y no se el
tendrá qu" ñ""", atgó adicio;;f ;,;;i;.grama para propagartas
durante todo el sistema' En pocas palabras,
una vez autenticaoo, no es necesario volver a colocar
información. la

El códigoanterior.u"i*
ffi
nte deben ser ver¡¡f¡caOas.

En ese código' simplem.ente.se comparan


los valores ingresados por el usuario con unos
definidos dentro del cÓdigo, lo cual éi ,n" varores que
muy.mala ioéa poi muchas razones de seguridad. para han sido
esto realmente sea una verificación, la información hacer que
un registro obtenido de la Base de Datos
del usuário de.hería ser enr:riptada y luego cornparada
o del archivo o" áonirá.uñas que tamr¡áñ con
áene estar encriptado.
EI mecanismo t^/ww-Authenticate opera
solo con el servidor web Apache, el cual tiene
módulg y no como cGr asociado y tampoco instalado pHp como
funciona con Irs de Microsoft.

Ejercicio:
'1' Hacer un móduro
de autenticación de usuarios er cuar incruya:
a' una página de inicio donde se le pida al usuario el nornbre
(inicio.php) de usuario y contraseña
b' una página de veriflcación de la infornación indicada
por el usuario en donde se
comprueba que er usuario tiene permiso
de ingreso arsistema lrogin.pnpj
c' una página interna en la que el sistema verifique que
el usuario ya se ha aulenlicado,
de no ser así lo envie at formulariá coriesponoiente para realizar
proceso. (interna. php) el

PHP Nivel2 - programaciOn Oe nñl¡cac¡oneiWeO


Pag 28

También podría gustarte