Diferencia entre revisiones de «PHP Paso de datos con formularios»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 30: Línea 30:
 
* Vexamos agora un exemplo <u>utilizando un formulario</u>:
 
* Vexamos agora un exemplo <u>utilizando un formulario</u>:
  
−
'''Arquivo: UD2_Ex2_eleccion_pelicula_formulario'''
+
'''Arquivo: UD2_Form_Ex1_eleccion_pelicula.php'''
 
::<syntaxhighlight lang="php" line enclose="div" highlight="27" >
 
::<syntaxhighlight lang="php" line enclose="div" highlight="27" >
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
Línea 58: Línea 58:
 
     </head>
 
     </head>
 
     <body>
 
     <body>
−
         <form id="frmPelicula" class="formularios" method="get" action="UD2_Ex2_datos_pelicula_formulario.php">
+
         <form id="frmPelicula" class="formularios" method="get" action="UD2_Form_Ex1_datos_pelicula.php">
 
             <div>     
 
             <div>     
 
                 <div class='etiqueta'>Película preferida:</div>
 
                 <div class='etiqueta'>Película preferida:</div>
Línea 79: Línea 79:
 
:* Fixarse que enviamos os datos utilizando o '''método get'''.
 
:* Fixarse que enviamos os datos utilizando o '''método get'''.
  
−
'''Arquivo: UD2_Ex2_datos_pelicula_formulario'''
+
'''Arquivo: UD2_Form_Ex1_datos_pelicula.php'''
−
::<syntaxhighlight lang="php" line enclose="div" highlight="27" >
+
::<syntaxhighlight lang="php" line enclose="div" highlight="13,14" >
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Línea 102: Línea 102:
 
</html>
 
</html>
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
 +
  
 
== Método POST ==
 
== Método POST ==
  
 +
* No método post de envío de datos, os mesmos van 'dentro' da páxina web e polo tanto non son visibles para o usuario.
 +
 +
* Tamén está limitado o tamaño do que se pode enviar (por exemplo se enviamos un arquivo adxunto) a un tamaño de 8MB.
 +
: Podemos cambiar dito límite:
 +
::* Modificando a directiva [http://php.net/manual/es/ini.core.php#ini.post-max-size post_max_size] do arquivo php.ini de PHP.
 +
::* Modificando o arquivo .htaccess do noso sitio web e engadindo a directa: php_value post_max_size 20M (isto é necesario no caso de aloxamentos compartidos ou se non temos acceso ao arquivo php.ini).
 +
 +
* 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.post.php $_POST['param']].
 +
 +
 +
* Modificamos o exemplo anterior para que envíe os datos con POST:
 +
 +
'''Arquivo: UD2_Form_Ex2_eleccion_pelicula.php'''
 +
::<syntaxhighlight lang="php" line enclose="div" highlight="27" >
 +
<!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>Formulario</title>
 +
        <style>
 +
            .formularios{
 +
                width: 30%;
 +
                margin: 0px auto;
 +
            }
 +
            .etiqueta{
 +
                float: left;
 +
                width: 190px;
 +
            }
 +
            .botonesformularios{
 +
                width: 50%;
 +
                margin: 30px auto;
 +
                text-align: center;
 +
            }
 +
            select {
 +
                width:50%;
 +
            }
 +
        </style>
 +
    </head>
 +
    <body>
 +
        <form id="frmPelicula" class="formularios" method="post" action="UD2_Form_Ex2_datos_pelicula.php">
 +
            <div>   
 +
                <div class='etiqueta'>Película preferida:</div>
 +
                <select name="lstPelicula"><option>E.T. El extraterrestre</option><option>Supermán</option></select>
 +
            </div>               
 +
            <div>
 +
                <div class='etiqueta'>Xénero preferido:</div>
 +
                <select name="lstXenero"><option>Acción</option><option>Ciencia ficción</option></select>
 +
            </div>               
 +
            <div class="botonesformularios">
 +
                <input type='submit' value="ENVIAR" />
 +
            </div>
 +
        </form>
 +
 +
    </body>   
 +
</html>
 +
</php>
 +
</syntaxhighlight>
 +
 +
:* Fixarse que enviamos os datos utilizando o '''método post'''.
  
 +
'''Arquivo: UD2_Form_Ex2_datos_pelicula.php'''
 +
::<syntaxhighlight lang="php" line enclose="div" highlight="13,14" >
 +
<!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
 +
        echo 'Os datos que escolliches son:<br/><br/>';
 +
       
 +
        $pelicula = $_POST['lstPelicula'];
 +
        $xenero = $_POST['lstXenero'];
  
 +
        printf("PELICULA:%s<br/>XÉNERO:%s",$pelicula,$xenero);
 +
        ?>
 +
       
 +
    </body>
 +
</html>
 +
</syntaxhighlight>
  
  

Revisión del 10:24 20 sep 2016

Introdución

  • Sabemos que a través da etiqueta <form> podemos enviar datos dunha páxina a outra.
  • Dentro de esta etiqueta temos o atributo method que pode tomar os valores get ou post.

Método GET

Os datos que aparecen despois do signo '?' son parámetros:?q=php&ie=utf-8&oe=utf-8


  • 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.


  • As variables que se pasan desta forma poden ser referenciadas en PHP a través da matriz global $_GET['param'].


  • Vexamos agora un exemplo utilizando un formulario:

Arquivo: UD2_Form_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 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
 4     <head>
 5         <meta charset="utf-8" />
 6         <title>Formulario</title>
 7         <style>
 8             .formularios{
 9                 width: 30%;
10                 margin: 0px auto;
11             }
12             .etiqueta{
13                 float: left;
14                 width: 190px;
15             }
16             .botonesformularios{
17                 width: 50%;
18                 margin: 30px auto;
19                 text-align: center;
20             }
21             select {
22                 width:50%;
23             }
24         </style>
25     </head>
26     <body>
27         <form id="frmPelicula" class="formularios" method="get" action="UD2_Form_Ex1_datos_pelicula.php">
28             <div>    
29                 <div class='etiqueta'>Película preferida:</div>
30                 <select name="lstPelicula"><option>E.T. El extraterrestre</option><option>Supermán</option></select>
31             </div>                
32             <div>
33                 <div class='etiqueta'>Xénero preferido:</div>
34                 <select name="lstXenero"><option>Acción</option><option>Ciencia ficción</option></select>
35             </div>                
36             <div class="botonesformularios">
37                 <input type='submit' value="ENVIAR" />
38             </div>
39         </form>
40 
41     </body>    
42 </html>
43 </php>
  • Fixarse que enviamos os datos utilizando o método get.

Arquivo: UD2_Form_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 
 4 <html>
 5     <head>
 6         <meta charset="UTF-8">
 7         <title></title>
 8     </head>
 9     <body>
10         <?php
11         echo 'Os datos que escolliches son:<br/><br/>';
12         
13         $pelicula = $_GET['lstPelicula'];
14         $xenero = $_GET['lstXenero'];
15 
16         printf("PELICULA:%s<br/>XÉNERO:%s",$pelicula,$xenero);
17         ?>
18         
19     </body>
20 </html>



Método POST

  • No método post de envío de datos, os mesmos van 'dentro' da páxina web e polo tanto non son visibles para o usuario.
  • Tamén está limitado o tamaño do que se pode enviar (por exemplo se enviamos un arquivo adxunto) a un tamaño de 8MB.
Podemos cambiar dito límite:
  • Modificando a directiva post_max_size do arquivo php.ini de PHP.
  • Modificando o arquivo .htaccess do noso sitio web e engadindo a directa: php_value post_max_size 20M (isto é necesario no caso de aloxamentos compartidos ou se non temos acceso ao arquivo php.ini).
  • As variables que se pasan desta forma poden ser referenciadas en PHP a través da matriz global $_POST['param'].


  • Modificamos o exemplo anterior para que envíe os datos con POST:

Arquivo: UD2_Form_Ex2_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 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
 4     <head>
 5         <meta charset="utf-8" />
 6         <title>Formulario</title>
 7         <style>
 8             .formularios{
 9                 width: 30%;
10                 margin: 0px auto;
11             }
12             .etiqueta{
13                 float: left;
14                 width: 190px;
15             }
16             .botonesformularios{
17                 width: 50%;
18                 margin: 30px auto;
19                 text-align: center;
20             }
21             select {
22                 width:50%;
23             }
24         </style>
25     </head>
26     <body>
27         <form id="frmPelicula" class="formularios" method="post" action="UD2_Form_Ex2_datos_pelicula.php">
28             <div>    
29                 <div class='etiqueta'>Película preferida:</div>
30                 <select name="lstPelicula"><option>E.T. El extraterrestre</option><option>Supermán</option></select>
31             </div>                
32             <div>
33                 <div class='etiqueta'>Xénero preferido:</div>
34                 <select name="lstXenero"><option>Acción</option><option>Ciencia ficción</option></select>
35             </div>                
36             <div class="botonesformularios">
37                 <input type='submit' value="ENVIAR" />
38             </div>
39         </form>
40 
41     </body>    
42 </html>
43 </php>
  • Fixarse que enviamos os datos utilizando o método post.

Arquivo: UD2_Form_Ex2_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 
 4 <html>
 5     <head>
 6         <meta charset="UTF-8">
 7         <title></title>
 8     </head>
 9     <body>
10         <?php
11         echo 'Os datos que escolliches son:<br/><br/>';
12         
13         $pelicula = $_POST['lstPelicula'];
14         $xenero = $_POST['lstXenero'];
15 
16         printf("PELICULA:%s<br/>XÉNERO:%s",$pelicula,$xenero);
17         ?>
18         
19     </body>
20 </html>




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