Diferencia entre revisiones de «PHP Paso de variables entre páxinas»
Ir a la navegación
Ir a la búsqueda
Línea 177: | Línea 177: | ||
: Despois deberemos de eliminar o ID da sesión, que se estamos a utilizar cookies deberemos chamar á [http://php.net/manual/es/function.setcookie.php función setCookie]. | : Despois deberemos de eliminar o ID da sesión, que se estamos a utilizar cookies deberemos chamar á [http://php.net/manual/es/function.setcookie.php función setCookie]. | ||
− | |||
Revisión del 22:10 9 oct 2016
A través da URL
- Unha forma de pasar información de unha páxina a outra é a través dunha URL.
- Se vos fixades cando facedes unha busca en google (por exemplo buscade 'php') na url aparecerá algo coma isto: https://www.google.es/search?q=php&ie=utf-8&oe=utf-8&client=firefox-b&gfe_rd=cr&ei=a1XgV4CmOu6s8wfuibOQAQ
- Os datos que aparecen despois do signo '?' son parámetros:?q=php&ie=utf-8&oe=utf-8
- O formato que teñen este tipo de parámetros é: param1=valor¶m2=valor&.....
- Desvantaxes:
- Calquera persoa pode ver os valores das variables polo que dito método non é moi seguro.
- O usuario pode cambiar o valor de ditas variables polo que pode suceder que o sitio amose ou faga algo diferente do permitido.
- O usuario pode obter información non actual se usa unha URL con datos non actualizados.
- O tamaño do que podemos enviar na URL está limitado (depende de cada navegador, pero pode estar entre 2KB-8KB)
- Vantaxes:
- A través da URL podemos pasar datos dunha páxina a outra sen necesidade de ter un formulario por medio (o veremos no exemplo seguinte).
- As variables que se pasan desta forma poden ser referenciadas en PHP a través da matriz global $_GET['param'].
- Vexamos un exemplo de código:
Arquivo: UD2_paso_var_Ex1_eleccion_pelicula.php
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title></title> 8 </head> 9 <body> 10 <?php 11 printf("Mandamos un nome de película fixo na url:<a href='UD2_paso_var_Ex1_datos_pelicula.php?pelicula=SUPERMAN'>PELICULA</a>"); 12 ?> 13 </body> 14 </html>
Arquivo: UD2_paso_var_Ex1_datos_pelicula.php
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"> 4 <head> 5 <meta charset="utf-8" /> 6 <title>Exemplos de códigos php</title> 7 </head> 8 <body> 9 10 <?php 11 12 printf("A película pasada como parámetro na URL é: <b>%s</b>",$_GET['pelicula']); 13 14 15 ?> 16 </body> 17 </html>
- Podedes comprobar como se modificades a url e poñedes outra valor, premendo a tecla 'enter' para que volva a cargar a páxina aparece o novo valor posto.
Pasando caracteres especiais na URL
- O problema que podemos ter pasando valores desta forma, é que ditos valores teñan espazos en branco ou caracteres especiais.
- Para poder pasar estes valores podemos facer uso da urlencode.
- Para facer a función inversa: urldecode. Pero isto non é necesario no caso de asinar o valor a unha variable na segunda páxina.
- Vexamos unha modificación do código anterior, pasando un nome de película con espazos:
Arquivo: UD2_paso_var_Ex1_eleccion_pelicula.php
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title></title> 8 </head> 9 <body> 10 <?php 11 $pelicula=urlencode("E.T. El extraterrestre"); 12 echo "Mandamos un nome de película fixo na url:" 13 . "<a href='UD2_paso_var_Ex1_datos_pelicula.php?pelicula=$pelicula'>PELICULA</a>"; 14 ?> 15 </body> 16 </html>
Arquivo: UD2_paso_var_Ex1_datos_pelicula.php
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"> 4 <head> 5 <meta charset="utf-8" /> 6 <title>Exemplos de códigos php</title> 7 </head> 8 <body> 9 10 <?php 11 12 $pelicula=$_GET['pelicula']; 13 echo "A película pasada como parámetro na URL é: <b>$pelicula</b>"; 14 15 ?> 16 </body> 17 </html>
- Vexamos agora un exemplo de código de decodificación dunha cadea:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"> 4 <head> 5 <meta charset="utf-8" /> 6 <title>Exemplos de códigos php</title> 7 </head> 8 <body> 9 10 <?php 11 12 $cadeaCodificada="<br/>Espero + que + esto + se lea + ben"; 13 echo $cadeaCodificada; 14 echo urldecode($cadeaCodificada); 15 16 ?> 17 </body> 18 </html>
- Nota: Tamén é posible codificar a cadea utilizando a función rawurlencode.
- Neste caso utiliza unha codificación segundo o estándar RFC3986. Os espazo en branco son codificados con %20, por exemplo.
Utilizando sesións
- Pódese empregar para pasar información 'importante' ou confidencial.
- Para facer un pouco máis 'interesantes' os exemplos utilizando variables de sesións, imos mirar previamente a sección de formularios
- 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 dito 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 se se ten habilitados o uso de cookies.
- 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 de 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, teremos que chamar á función unset($_SESSION['var');] dentro dunha páxina coa sesión iniciada.
- Despois deberemos de eliminar o ID da sesión, que se estamos a utilizar cookies deberemos chamar á función setCookie.
- Vexamos un exemplo:
- Arquivo UD2_paso_var_Ex2_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='UD2_paso_var_Ex2_paxina2.php'> para ver o seu valor</a> noutra páxina...</h2>. 19 20 21 </body> 22 </html>
- Arquivo UD2_paso_var_Ex2_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='UD2_paso_var_Ex2_paxina3.php'> para borrar o seu valor</a>...</h2>. 19 20 </body> 21 </html>
- Arquivo UD2_paso_var_Ex2_paxina3.php:
1 <?php 2 session_start(); 3 unset($_SESSION['nome']); 4 session_destroy(); 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='UD2_paso_var_Ex2_paxina1.php'> para volver a darlle un valor</a>...</h2>. 22 23 </body> 24 </html>
-- Ángel D. Fernández González -- (2016).