PHP Sesións

De MediaWiki
Ir a la navegación Ir a la búsqueda
  • Pódese empregar para pasar información 'importante' ou confidencial.
  • Unha sesión 'dura' mentres un usuario está conectado a un sitio web.
  • Empeza cando se conecta por primeira vez.
  • Remata cando sae do sitio web ou leva un tempo de inactividade indicado pola directiva session.gc_maxlifetime no arquivo php.ini. Por defecto está establecido en 1440 segundos (24 minutos).
  • Dentro da sesión dun usuario é posible crear variables que manterán o seu valor mentres o usuario teña a sesión activa, e poderemos obter ditos valores dende calquera páxina do sitio web.


  • Cada vez que se inicia unha sesión, se crea un identificador único (ID) o cal pode ser pasado dunha páxina a outra pola URL ou por medio de cookies, se se ten habilitado o uso das mesmas.
  • Por motivos de seguridade se recomenda pasar o ID a través de cookies e non da URL.


  • Se se quere 'obrigar' ao usuario que utilice as cookies para pasar o ID se pode modificar o arquivo php.ini:
session.use_only_cookies = 1
Nota: Se estamos non aloxamento compartido, non teremos acceso ao arquivo php.ini, polo que poderemos crear un arquivo .htaccess no noso sitio web e engadir dita directiva ao mesmo.


É importante lembrar que debemos chamar a dita función sempre que fagamos uso de variables de sesión.
Dita chamada ten que facerse ao principio da páxina php e antes de enviar nada ao explorador.


  • Unha vez chamada podemos crear / utilizar as variables de sesión da forma: $_SESSION['variable'] = "valor";
  • Se queremos borrar os valores gardados nas variables de sesión:
Por exemplo:
1 <?php
2     unset($_SESSION['nome']);
3     unset($_SESSION['id']);
4 ?>
Por exemplo:
1 <?php
2 session_destroy();
3 ?>


  • Vexamos un exemplo:
  • Arquivo UD4_session_Ex1_paxina1.php:
 1 <?php
 2     session_start();
 3 ?>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 5     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 6 
 7 <html>
 8     <head>
 9         <meta charset="UTF-8">
10         <title></title>
11     </head>
12     <body>
13 <?php
14     $_SESSION['nome']='angel';
15 
16 ?>
17         <h1>Posto o valor da variable session 'nome' a Angel.</h1>
18         <h2>Pulsa <a href='UD4_session_Ex1_paxina2.php'> para ver o seu valor</a> noutra páxina...</h2>.
19         
20         
21     </body>
22 </html>

Php session 1.jpg

  • Arquivo UD4_session_Ex1_paxina2.php:
 1 <?php
 2     session_start();
 3 ?>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 5     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 6 
 7 <html>
 8     <head>
 9         <meta charset="UTF-8">
10         <title></title>
11     </head>
12     <body>
13 <?php
14      printf("<h1>O valor da variable sesión é: %s</h1>",$_SESSION['nome']);
15      printf("<h2>O valor do ID de sesión é: %s</h2>",  session_id());
16 
17 ?>
18      <h2>Pulsa <a href='UD4_session_Ex1_paxina3.php'> para borrar o seu valor</a>...</h2>.
19         
20     </body>
21 </html>

Php session 2.jpg


  • Arquivo UD4_session_Ex1_paxina3.php:
 1 <?php
 2     unset($_SESSION['nome']);
 3     unset($_SESSION['id']);
 4     // session_destroy();   // Tamén se poden eliminar as variables de sesión desta forma.
 5 
 6 ?>
 7 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 8     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 9 
10 <html>
11     <head>
12         <meta charset="UTF-8">
13         <title></title>
14     </head>
15     <body>
16 <?php
17     printf("<h1>O valor da variable sesión é: %s</h1>",$_SESSION['nome']);
18     printf("<h2>O valor do ID de sesión é: %s</h2>",  session_id());
19 
20 ?>
21      <h2>Pulsa <a href='UD4_session_Ex1_paxina1.php'> para volver a darlle un valor</a>...</h2>.
22         
23     </body>
24 </html>

Php session 3.jpg





-- Ángel D. Fernández González -- (2016).