PHP Sesións
Revisión del 16:07 23 oct 2016 de Wiki (discusión | contribuciones)
- 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.
- É importante sinalar que as variables de sesión SE GARDAN NO SERVIDOR a diferenza das cookies que se envían ao cliente e se gardan no seu computador.
- 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.
- Para iniciar ou reanudar unha sesión necesitamos chamar á función session_start().
- É 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:
- Podemos chamar á función unset($_SESSION['var');] dentro dunha páxina coa sesión iniciada.
- Por exemplo:
1 <?php 2 unset($_SESSION['nome']); 3 unset($_SESSION['id']); 4 ?>
- Podemos chamar á función session_destroy.
- 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>
- 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>
- 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>
-- Ángel D. Fernández González -- (2016).