Diferencia entre revisiones de «PHP Paso de variables entre páxinas»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página blanqueada)
 
(No se muestran 11 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
== A través da URL ==
 
  
* Unha forma de pasar información de unha páxina a outra é a través dunha [https://es.wikipedia.org/wiki/Localizador_de_recursos_uniforme 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&param2=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 [http://php.net/manual/es/reserved.variables.get.php $_GET['param']].
 
 
: Vexamos un exemplo de código:
 
 
'''Arquivo: UD2_Ex1_eleccion_pelicula.php'''
 
::<syntaxhighlight lang="php" line enclose="div" highlight="11" >
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
 
<html>
 
    <head>
 
        <meta charset="UTF-8">
 
        <title></title>
 
    </head>
 
    <body>
 
        <?php
 
        printf("Mandamos un nome de película fixo na url:<a href='UD2_Ex1_datos_pelicula.php?pelicula=SUPERMAN'>PELICULA</a>");
 
        ?>
 
    </body>
 
</html>
 
</syntaxhighlight>
 
 
 
'''Arquivo: UD2_Ex1_datos_pelicula.php'''
 
::<syntaxhighlight lang="php" line enclose="div" highlight="12" >
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
 
    <head>
 
        <meta charset="utf-8" />
 
        <title>Exemplos de códigos php</title>
 
    </head>
 
    <body>
 
 
<?php 
 
 
    printf("A película pasada como parámetro na URL é: <b>%s</b>",$_GET['pelicula']);
 
 
 
?>
 
    </body>   
 
</html>
 
</syntaxhighlight>
 
 
 
* 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 [http://php.net/manual/es/function.urlencode.phpfunción urlencode].
 
 
* Para facer a función inversa: [http://php.net/manual/es/function.urldecode.php 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_Ex1_eleccion_pelicula.php'''
 
::<syntaxhighlight lang="php" line enclose="div" highlight="11" >
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
 
<html>
 
    <head>
 
        <meta charset="UTF-8">
 
        <title></title>
 
    </head>
 
    <body>
 
        <?php
 
        $pelicula=urlencode("E.T. El extraterrestre");
 
        echo "Mandamos un nome de película fixo na url:"
 
                . "<a href='UD2_Ex1_datos_pelicula.php?pelicula=$pelicula'>PELICULA</a>";
 
        ?>
 
    </body>
 
</html>
 
</syntaxhighlight>
 
 
 
'''Arquivo: UD2_Ex1_datos_pelicula.php'''
 
::<syntaxhighlight lang="php" line enclose="div" highlight="12" >
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
 
    <head>
 
        <meta charset="utf-8" />
 
        <title>Exemplos de códigos php</title>
 
    </head>
 
    <body>
 
 
    <?php 
 
 
        $pelicula=$_GET['pelicula'];
 
        echo "A película pasada como parámetro na URL é: <b>$pelicula</b>";
 
 
    ?>
 
    </body>   
 
</html>
 
</syntaxhighlight>
 
 
 
 
 
* Vexamos agora un exemplo de código de decodificación dunha cadea:
 
::<syntaxhighlight lang="php" line enclose="div" highlight="12" >
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
 
    <head>
 
        <meta charset="utf-8" />
 
        <title>Exemplos de códigos php</title>
 
    </head>
 
    <body>
 
 
    <?php 
 
 
        $cadeaCodificada="<br/>Espero + que + esto + se lea + ben";
 
        echo $cadeaCodificada;
 
        echo urldecode($cadeaCodificada);
 
       
 
    ?>
 
    </body>   
 
</html>
 
 
</syntaxhighlight>
 
 
 
== Utilizando sesións ==
 
 
* <u>Pódese empregar para pasar información 'importante'</u> 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 [http://php.net/manual/es/session.configuration.php#ini.session.gc-maxlifetime 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 [https://es.wikipedia.org/wiki/Cookie_(inform%C3%A1tica) 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'''
 
 
: <u>Nota:</u> Se estamos non aloxamento compartido, non teremos acceso ao arquivo php.ini, polo que poderemos crear un [http://php.net/manual/es/configuration.changes.php arquivo .htaccess] no noso sitio web e engadir dita directiva ao mesmo.
 
 
 
 
 
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2016).
 

Revisión actual del 08:42 10 oct 2016