Diferencia entre revisiones de «Plantilla:PHP/FormulariosConceptosGenerales»
De WikiEducator
(→Creando un formulario) |
(→Validando valores en el servidor) |
||
(41 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
+ | <div id=parrafo> | ||
<div class="slide"> | <div class="slide"> | ||
===Introducción=== | ===Introducción=== | ||
Línea 7: | Línea 8: | ||
#Leer valores del teclado | #Leer valores del teclado | ||
#Mostrar resultados en pantalla | #Mostrar resultados en pantalla | ||
− | [[Archivo:InteracutandoPrograma.png|300px]] | + | [[Archivo:InteracutandoPrograma.png|300px|center]] |
</div> | </div> | ||
Línea 14: | Línea 15: | ||
*En el caso de PHP, hemos visto alguna primitiva para mostrar valores por pantalla (En realidad lo que hace es escribirlas al fichero html que entrega al cliente). | *En el caso de PHP, hemos visto alguna primitiva para mostrar valores por pantalla (En realidad lo que hace es escribirlas al fichero html que entrega al cliente). | ||
*Estas instrucciones son '''''echo''''' y '''''print'''''. | *Estas instrucciones son '''''echo''''' y '''''print'''''. | ||
− | *Ambos dos son son instrucciones del lenguaje, | + | *Ambos dos son son instrucciones del lenguaje, como ya hemos visto en el tema anterior |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
===Cómo leer datos de usuario=== | ===Cómo leer datos de usuario=== | ||
*Nos falta ver cómo podemos hacer que el cliente (a través del navegador) aporte valores al programa escribiéndolos por el teclado. | *Nos falta ver cómo podemos hacer que el cliente (a través del navegador) aporte valores al programa escribiéndolos por el teclado. | ||
− | *Hay que partir de la situación. | + | *Hay que partir de la situación en la que estamos desarrollando nuestra aplicación '''''Aplicación web'''''. |
+ | El script lo ejecuta el servidor | ||
+ | (en nuestro caso el programa apache ejecutándose en un ordenador) | ||
+ | cuando un cliente (un navegador en un equipo) solicita una página o recurso que tiene código php. | ||
*No puedo detener el programa esperando que el usuario aporte un valor. Esto no es posible en una programación web. | *No puedo detener el programa esperando que el usuario aporte un valor. Esto no es posible en una programación web. | ||
− | * | + | {{Tip|Típico ejemplo que el programa me pide un nombre, y su ejecución espera a que introduzca el nombre y presione intro para continuar}} |
+ | *Lo que la programación web nos va a permitir es '''''enviar junto con la solicitud de la página, valores,(o parejas variable, valor) que aporte el usuario''''', mediante un formulario. | ||
+ | *De alguna manera enviaremos parejas '''''variable, valor'''''. | ||
*El formulario será parte de la página del cliente, código '''''html'''''. | *El formulario será parte de la página del cliente, código '''''html'''''. | ||
− | [[image: | + | [[image:FormularioPHP.png |center]] |
+ | |||
</div> | </div> | ||
Línea 68: | Línea 35: | ||
<div class="slide"> | <div class="slide"> | ||
;Leyendo del usuario | ;Leyendo del usuario | ||
− | *En el formulario tendremos | + | *En el formulario tendremos elementos gráficos de entradas de valores '''''(input)''''' donde, en el navegador, el usuario podrá escribir contenido(text, ...), o de alguna forma aportarlo (radio, select, ...) |
*En los diferentes elementos de entrada de un formulario , como una texto, el usuario podrá escribir valores. | *En los diferentes elementos de entrada de un formulario , como una texto, el usuario podrá escribir valores. | ||
− | *Al darle el botón enviar '''''(submit del formulario)''', dichos valores irán al servidor para ser leídos y usados en un script; *Porteriormetne veremos | + | *Al darle el botón enviar (u otro elemento submit) '''''(submit del formulario)''', dichos valores irán al servidor para ser leídos y usados en un script; |
− | *Repasemos cómo crear formularios en el cliente y lo que más nos interesa, | + | *Porteriormetne veremos cómo leerlos en el servidor. |
+ | *Repasemos cómo crear formularios en el cliente y lo que más nos interesa, cómo leerlos en el servidor. | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
Línea 82: | Línea 50: | ||
{{MRM_Definicion|Title=Formularios vistos desde el servidor| | {{MRM_Definicion|Title=Formularios vistos desde el servidor| | ||
Para la programación servidor, entendemos por formulario: | Para la programación servidor, entendemos por formulario: | ||
− | + | Una sección del código html que va a poder contener,( además de otros elementos) | |
− | + | varios objetos gráficos con los que el usuario va a poder interactuar | |
− | + | insertando valores para que éstos lleguen al servidor}} | |
</div> | </div> | ||
Línea 92: | Línea 60: | ||
===Atributos de la etiqueta=== | ===Atributos de la etiqueta=== | ||
*Etiqueta '''''form''''' con una serie de atributos, de los que '''ahora''' nos interesan dos principalmente: | *Etiqueta '''''form''''' con una serie de atributos, de los que '''ahora''' nos interesan dos principalmente: | ||
− | #action especifica el fichero que se invocará al servidor. Este fichero contendrá el código php que queremos que se ejecute. | + | #'''''action''''': especifica el fichero que se invocará al servidor. Este fichero contendrá el código php que queremos que se ejecute. |
− | #method especifica el modo en el que se van a pasar los parámetros (valores introducidos a los diferentes objetos del formulario, o que tengan asignados por defecto). | + | #'''''method''''': especifica el modo en el que se van a pasar los parámetros (valores introducidos a los diferentes objetos del formulario, o que tengan asignados por defecto). |
− | ====GET o POST==== | + | |
+ | ====El action==== | ||
+ | <br /> | ||
+ | {{MRM_Definicion|Title=Valor de action| | ||
+ | Establece el nombre del recurso, script o página | ||
+ | que se va a solictar al servidor | ||
+ | cuando realicemos un click en el submit del formulario | ||
+ | }} | ||
+ | ;Ejemplo | ||
+ | |||
+ | {{MRM_Actividad|Title=Haciendo un pin-pon| | ||
+ | Haz un proyecto que contenga dos páginas '''''ping.php''''' y '''''pon.php''''' | ||
+ | *Ambas tendrán un botón de tipo submit | ||
+ | <source lang=html5> | ||
+ | <input type=submit value='Ir a ...'> | ||
+ | </source> | ||
+ | *La página pin me llevaré a pon py la página '''''pon''''' me ha de llevar a '''''pin''''' | ||
+ | {{plegable|hide|posible solución| | ||
+ | <source lang=html5> | ||
+ | <!--PIN.PHP--> | ||
+ | <!doctype html> | ||
+ | <html lang="en"> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <meta name="viewport"> | ||
+ | <meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||
+ | <title>Document</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <form action="pon.php"> | ||
+ | <input type="submit" value="Ir a pon"> | ||
+ | |||
+ | </form> | ||
+ | |||
+ | </body> | ||
+ | </html> | ||
+ | <!-- PON.php --> | ||
+ | <!doctype html> | ||
+ | <html lang="en"> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <meta name="viewport"> | ||
+ | <meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||
+ | <title>Document</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <form action="pin.php"> | ||
+ | <input type="submit" value="Ir a pin"> | ||
+ | |||
+ | </form> | ||
+ | |||
+ | </body> | ||
+ | </html> | ||
+ | </source> | ||
+ | |||
+ | }} | ||
+ | }} | ||
+ | |||
+ | |||
+ | ====El method: GET o POST==== | ||
+ | |||
+ | <br /> | ||
+ | {{MRM_Definicion|Title=Valor de method| | ||
+ | Establece la manera en la que van a enviar los datos al servidor | ||
+ | Se enviarán todas las parejas variable-valor que haya en el formulario | ||
+ | Estos datos se pueden enviar: | ||
+ | en la cabecera (método GET) | ||
+ | en el cuerpo del mensaje (método POST) | ||
+ | }} | ||
+ | |||
<source lang=html4strict style="width:50%"> | <source lang=html4strict style="width:50%"> | ||
− | <form action=" | + | <form action="datos.php" method="POST" |
+ | ...... | ||
+ | </form> | ||
+ | </source> | ||
+ | <source lang=html4strict style="width:50%"> | ||
+ | <form action="datos.php" method="GET" | ||
...... | ...... | ||
</form> | </form> | ||
</source> | </source> | ||
</div> | </div> | ||
− | * | + | |
− | * | + | *Este parámetro es opcional, si no se especifica por defecto toma el valor '''GET''' |
+ | |||
+ | *Cuando el método es '''GET''' las parejas se viaulizan en el URL, apareciendo como parte de él, separado por el signo interrogación con parejas '''variable=valor''', y separadas entre ellas, si hubiera varias, con el & | ||
+ | |||
{{MRM_Ejemplo| | {{MRM_Ejemplo| | ||
; Método GET | ; Método GET | ||
*HTML en el cliente: | *HTML en el cliente: | ||
*Vemos dos ''input'' de type text y con dos atributos asignados: '''''name''''' y '''''value''''': | *Vemos dos ''input'' de type text y con dos atributos asignados: '''''name''''' y '''''value''''': | ||
− | + | *1.- '''''name''''' es el que vamos a utilizar para recuperar el contenido del '''input''' en el servidor. | |
{{Tip|El '''name''' es al servidor lo mismo que el '''id''' es al cliente, con id podéis acceder a los valores de los elementos con javascript, con el ''name'' lo haremos en php}} | {{Tip|El '''name''' es al servidor lo mismo que el '''id''' es al cliente, con id podéis acceder a los valores de los elementos con javascript, con el ''name'' lo haremos en php}} | ||
− | + | *2.- '''''value''''' es el valor. Este valor se sustituye por el contenido del '''input''' del formulario. | |
<source lang=html5> | <source lang=html5> | ||
− | <form action=" | + | <form action="datos.php" method="GET"> |
Nombre | Nombre | ||
<input type=text name = 'nombre' value='maría'> | <input type=text name = 'nombre' value='maría'> | ||
Línea 127: | Línea 172: | ||
*Observamos como aparece el texto después de la url: | *Observamos como aparece el texto después de la url: | ||
<br /> | <br /> | ||
− | [[Imagen: | + | [[Imagen:form_maria_ruiz.png]] |
}} | }} | ||
Línea 135: | Línea 180: | ||
<div class="slide"> | <div class="slide"> | ||
;Atributos | ;Atributos | ||
− | *En este caso estamos indicando que cuando se envíe el formulario, se | + | *En este caso estamos indicando que cuando se envíe el formulario, se solicita al servidor un fichero (página, recurso o script) llamado '''''datos.php'''''. |
− | *La ubicación del fichero, como no se especifica, se busca en la misma ubicación donde está el fichero que actualmente está viendo el cliente. | + | *La ubicación del fichero, en este caso, como no se especifica, se busca en la misma ubicación donde está el fichero que actualmente está viendo el cliente. |
+ | *No obstante se puede especificar una ruta absoluta en lugar de relativa | ||
+ | <source lang=html5> | ||
+ | <form action="http://localhost/pruebas/datos.php" method="GET"> | ||
+ | .... | ||
+ | </source> | ||
+ | {{Tip| Tienes claro la diferencia entre ruta relativa y ruta absoluta?}} | ||
*También se especifica que los valores enviados con el formulario; irán en el cuerpo de documento usando el protocolo http, y no en el URI con el signo ? como sucede si se especificara GET. | *También se especifica que los valores enviados con el formulario; irán en el cuerpo de documento usando el protocolo http, y no en el URI con el signo ? como sucede si se especificara GET. | ||
</div> | </div> | ||
− | |||
<!--3 --> | <!--3 --> | ||
<div class="slide"> | <div class="slide"> | ||
{{MRM_Puntos clave| | {{MRM_Puntos clave| | ||
− | Tan inseguro es usar '''''GET''''' como '''''POST'''''. si queremos garantizar seguridad debemos usar '''''https''''' en lugar de '''''http'''''}} | + | |
+ | Tan inseguro es usar '''''GET''''' como '''''POST'''''. si queremos garantizar seguridad debemos usar '''''https''''' en lugar de '''''http''''' | ||
+ | ;En el caso de GET | ||
+ | <source lang=html5> | ||
+ | <form action="http://localhost/pruebas/datos.php" method="GET"> | ||
+ | .... | ||
+ | </source> | ||
+ | |||
+ | [[image:form_maria_ruiz.png]] | ||
+ | <br /> | ||
+ | ;En el caso de post | ||
+ | <source lang=html5> | ||
+ | <form action="http://localhost/pruebas/datos.php" method="POST"> | ||
+ | .... | ||
+ | </source> | ||
+ | |||
+ | Si vamos a las herramientas de diseño en el navegador, en la solapa de red o network, podemos ver: | ||
+ | [[image:form_maria_ruiz_post.png]] | ||
+ | |||
+ | }} | ||
*Por supuesto hay más atributos, el id es importante para poder acceder a ese elemento con javascript. | *Por supuesto hay más atributos, el id es importante para poder acceder a ese elemento con javascript. | ||
*Tanto '''''method''''' como '''''action''''' son necesarios para la programación web. | *Tanto '''''method''''' como '''''action''''' son necesarios para la programación web. | ||
Línea 165: | Línea 234: | ||
===Creando formularios=== | ===Creando formularios=== | ||
− | Es interesante ojear esta | + | Es interesante ojear esta página que te informa de cómo hacer formularios usando html5. |
− | + | https://developer.mozilla.org/es/docs/Learn/Forms | |
;Elemento '''''input''''' | ;Elemento '''''input''''' | ||
*Como ya hemos comentado, es un elemento de entrada de texto que se rellena en la página web que tiene el cliente, y se envía al servidor donde se puede recuperar esta información para el script a ejecutar (se recuperará durante la ejecución). | *Como ya hemos comentado, es un elemento de entrada de texto que se rellena en la página web que tiene el cliente, y se envía al servidor donde se puede recuperar esta información para el script a ejecutar (se recuperará durante la ejecución). | ||
Línea 258: | Línea 327: | ||
</source> | </source> | ||
</div> | </div> | ||
− | + | {{Tip| No se recomienda por temas de seguridad leer de la superglobal $_REQUEST}} | |
+ | {{Nota| | ||
+ | Nota: | ||
+ | Las variables en $_REQUEST se proporcionan al script a través de los mecanismos | ||
+ | de entrada GET, POST, y COOKIE y por lo tanto pueden ser manipulados por el usuario | ||
+ | remoto y no debe confiar en el contenido...}} | ||
<!--3 --> | <!--3 --> | ||
<div class="slide"> | <div class="slide"> | ||
Línea 264: | Línea 338: | ||
;Verificando si una variable existe | ;Verificando si una variable existe | ||
*Este tema es muy interesante en php. | *Este tema es muy interesante en php. | ||
− | * | + | *Observar que el hecho de que aparezca una variable no implica que la variable exista. |
+ | *Esto en php puede crear una confusión por su naturaleza dinámica. | ||
+ | *Si en el código aparece esta línea | ||
+ | <source lang=php> | ||
+ | $edad; | ||
+ | </source> | ||
+ | {{MRM_Pregunta| | ||
+ | '''''¿A partir de esa línea la variable existe?''''' | ||
+ | *La respuesta es que existe pero tiene un valor null | ||
+ | '''''¿A partir de esa línea la variable ha sido declarada?''''' | ||
+ | *En realidad la respuesta es si, como null | ||
+ | '''''¿Tiene algún valor?''''' | ||
+ | *La respuesta es que tiene el valor null | ||
+ | }} | ||
+ | <br /> | ||
+ | *Esto puede crear confusiones que debemos aclarar. '''''null''''', cuando una variable tiene valor null vamos a considerar que no tiene valor, o que no ha sido delcarada. | ||
+ | *Para comprobar probamos el siguiente código | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
+ | $variable; //Declaramos una variable de tipo null | ||
+ | |||
+ | if (isset($variable)) | ||
+ | echo "OK isset -$variable- <br />"; | ||
+ | else | ||
+ | echo "NO OK isset -$variable- <br />"; | ||
+ | |||
+ | if (empty($variable)) | ||
+ | echo "OK empty La variable -$variable- <br />"; | ||
+ | else | ||
+ | echo "NO OK empty La variable -$variable- <br />"; | ||
+ | |||
+ | if (is_null($variable)) | ||
+ | echo "OK is_null La variable -$variable- <br />"; | ||
+ | else | ||
+ | echo "NO OK is_null La variable -$variable- <br />"; | ||
+ | ?> | ||
+ | </source> | ||
+ | |||
+ | *Probemos a modificar el valor de $variable por los siguientes valores | ||
+ | <source lang=php> | ||
+ | $varialbe = null; | ||
+ | </source> | ||
+ | <source lang=php> | ||
+ | $varialbe =""; | ||
+ | </source> | ||
+ | <source lang=php> | ||
+ | $varialbe =0; | ||
+ | </source> | ||
+ | <source lang=php> | ||
+ | $varialbe = true; | ||
+ | </source> | ||
+ | <source lang=php> | ||
+ | $varialbe = false; | ||
+ | </source> | ||
+ | *A partir de ello podemos concluir y entender lo que hacen las funciones | ||
+ | |||
+ | <source lang =php> | ||
+ | //isset — Determina si una variable está definida y no es NULL | ||
+ | isset($var):bool | ||
+ | //is_null — Comprueba si una variable es NULL | ||
+ | is_null($var):boll | ||
+ | empty() | ||
+ | |||
+ | </source> | ||
+ | |||
+ | *hay que tener cuidado con el concepto de una variable vacía | ||
+ | *En php los siguientes valores asignados a una variable se considerarán valores vacíos | ||
+ | *"" //Una cadena vacía | ||
+ | *0 //El valor 0 como entero o como float | ||
+ | *0.0 | ||
+ | *"0"//La cadena de caracteres formada por el carácter 0 | ||
+ | *NULL //El valor null | ||
+ | *FALSE //El valor booleano false | ||
+ | {{MRM_Actividad|Title=Probando el valor leído de un formulario| | ||
+ | *Realiza una aplicación que leas el valor introducido en una caja de texto | ||
+ | *Has de informar si no ha insertado ningún valor que lo inserte | ||
+ | *Si lo ha insertado lo visualizarás | ||
+ | {{Plegable|hide|Posible solución| | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | if (isset($_POST['enviar'])) { | ||
+ | $valor = $_POST['valor']; | ||
+ | if ((empty($valor)) && ($valor != "0")) | ||
+ | $msj = "Debes de aportar un valor válido<br />"; | ||
+ | else | ||
+ | $msj = "Has insertado el valor -$valor-<br />"; | ||
+ | } | ||
+ | |||
+ | //Otra manera más sencillo de escribir lo mismo | ||
+ | /* | ||
+ | if (isset($_POST['enviar'])) { | ||
+ | $valor = $_POST['valor']; | ||
+ | if ($valor=="") | ||
+ | $msj .= "Debes de aportar un valor válido<br />"; | ||
+ | else | ||
+ | $msj .= "Has insertado el valor -$valor-<br />"; | ||
+ | } | ||
+ | */ | ||
+ | |||
+ | |||
+ | ?> | ||
+ | <!doctype html> | ||
+ | <html lang="en"> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <meta name="viewport"> | ||
+ | <meta http-equiv="X-UA-Compatible" content="ie=edge"> | ||
+ | <title>Document</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <?php echo $msj ?> | ||
+ | <fieldset> | ||
+ | <form action="form1.php" method="POST"> | ||
+ | <legend>Inserta Datos</legend> | ||
+ | <input type="text" name="valor" id=""> | ||
+ | <input type="submit" name="enviar" value="Enviar"> | ||
+ | </form> | ||
+ | </fieldset> | ||
+ | </body> | ||
+ | </html> | ||
+ | |||
+ | </source> | ||
+ | }} | ||
+ | }} | ||
+ | |||
+ | *Podemos revisar el siguiente código como corlario | ||
+ | <source lang=php> | ||
+ | |||
<?php | <?php | ||
echo "<h3>Probamos la función is_null</h3>"; | echo "<h3>Probamos la función is_null</h3>"; | ||
Línea 319: | Línea 518: | ||
</source> | </source> | ||
*Podemos observar la siguiente salida | *Podemos observar la siguiente salida | ||
− | [[Archivo:salida_valores_nulos_php.png | + | [[Archivo:salida_valores_nulos_php.png]]<br /> |
− | + | ||
− | + | ||
{{MRM_Puntos clave|Title= isset($variable) emtpy($variable) is_null($variable)| | {{MRM_Puntos clave|Title= isset($variable) emtpy($variable) is_null($variable)| | ||
<source lang=php> | <source lang=php> | ||
Línea 345: | Línea 543: | ||
'''se consideran valores vacíos en esta función'''.}} | '''se consideran valores vacíos en esta función'''.}} | ||
}} | }} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</div> | </div> | ||
Línea 356: | Línea 548: | ||
<div class="slide"> | <div class="slide"> | ||
− | * | + | ===Validando valores en el servidor=== |
+ | *Indistintamente de que se validen valores en el cliente, es muy importante validarlos en el servidor | ||
+ | *En php tenemos funciones para validar el tipo de un valor | ||
+ | *Para ello podemos ir al repertorio dónde tenemos todas las funciones para manipular variables | ||
+ | http://php.net/manual/es/ref.var.php | ||
+ | *Cuando leemos un valor de un formulario, siempre lo vamos a leer como una cadena de caracteres, pero podremos verificar algunos valores por conversión implícita | ||
+ | {{MRM_Ejemplo|Title=Algunas conversiones| | ||
+ | * "754" y miramos a ver si es un número, nos va a decir que sí | ||
+ | *"false" o "true" si miramos a ver si es booleano, nos va a decir que no | ||
+ | * "754" y miramos a ver si es un string, nos va a decir que sí | ||
+ | }} | ||
+ | {{MRM_Actividad|Title=Validando valores| | ||
+ | ;Haz un programa que podamos ver si un número es entero, float o string | ||
+ | }} | ||
+ | |||
{{MRM_Actividad| | {{MRM_Actividad| | ||
Haz un formulario en el que insertemos un número y el servidor web nos visualice la tabla de multiplicar | Haz un formulario en el que insertemos un número y el servidor web nos visualice la tabla de multiplicar | ||
Línea 391: | Línea 597: | ||
*Dirección de correo electrónico. | *Dirección de correo electrónico. | ||
*Estudios realizados entre ESO, BACHILLER, CICLO FORMATIVO, GRADO UNIVERSITARIO (select) | *Estudios realizados entre ESO, BACHILLER, CICLO FORMATIVO, GRADO UNIVERSITARIO (select) | ||
+ | <!-- | ||
{{Plegable|hide|Posible solución index.php| | {{Plegable|hide|Posible solución index.php| | ||
+ | --> | ||
+ | |||
<source lang=php> | <source lang=php> | ||
<!DOCTYPE html> | <!DOCTYPE html> | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<html> | <html> | ||
<head> | <head> | ||
Línea 411: | Línea 616: | ||
<input type="text" name="nombre" id=""> | <input type="text" name="nombre" id=""> | ||
<label for="">Apellido</label> | <label for="">Apellido</label> | ||
− | <input type="text" name=" | + | <input type="text" name="apellido" id=""> |
<br /> | <br /> | ||
<label for="">Direccion</label> | <label for="">Direccion</label> | ||
Línea 464: | Línea 669: | ||
</body> | </body> | ||
</html> | </html> | ||
− | |||
</source> | </source> | ||
}} | }} | ||
+ | *Observa las diferentes forma de poder leer valores filtrando y evitando o no ataques XSS | ||
{{Plegable|hide|Posible solución: datos.php| | {{Plegable|hide|Posible solución: datos.php| | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
//Primero leemos las variables | //Primero leemos las variables | ||
+ | $n3 = filter_input(INPUT_POST, 'nombre'); | ||
+ | $n1 = htmlspecialchars($_POST['nombre']); | ||
+ | $n2 = strip_tags($_POST['nombre'], "<b>"); | ||
+ | |||
+ | |||
+ | $n4 = $_POST['nombre']; | ||
+ | |||
+ | |||
+ | $idiomas1 = $_POST['idiomas']; | ||
+ | var_dump($idiomas1); | ||
$nombre = filter_input(INPUT_POST, 'nombre', FILTER_SANITIZE_STRING); | $nombre = filter_input(INPUT_POST, 'nombre', FILTER_SANITIZE_STRING); | ||
+ | |||
$apellidos = filter_input(INPUT_POST, 'apellido', FILTER_SANITIZE_STRING); | $apellidos = filter_input(INPUT_POST, 'apellido', FILTER_SANITIZE_STRING); | ||
$edad = filter_input(INPUT_POST, 'edad', FILTER_VALIDATE_INT); | $edad = filter_input(INPUT_POST, 'edad', FILTER_VALIDATE_INT); | ||
$direccion = filter_input(INPUT_POST, 'direccion', FILTER_SANITIZE_STRING); | $direccion = filter_input(INPUT_POST, 'direccion', FILTER_SANITIZE_STRING); | ||
$fNac = filter_input(INPUT_POST, 'fNac', FILTER_SANITIZE_STRING); | $fNac = filter_input(INPUT_POST, 'fNac', FILTER_SANITIZE_STRING); | ||
− | $idiomas = | + | $idiomas = filter_input(INPUT_POST, 'idiomas', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); |
$genero = filter_input(INPUT_POST, 'genero'); | $genero = filter_input(INPUT_POST, 'genero'); | ||
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); | $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); | ||
Línea 496: | Línea 706: | ||
//Mostramos los valores como una ficha | //Mostramos los valores como una ficha | ||
+ | ?> | ||
+ | <!doctype html> | ||
+ | <html lang="en"> | ||
+ | <head> | ||
+ | <meta charset="UTF-8"> | ||
+ | <title>Document</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <h1>Datos personales de ficha</h1> | ||
+ | <hr /> | ||
+ | <fieldset style="width:60%; background: azure"> | ||
+ | <h3>Nombre con htmlspecialchar<span style="color:red"><?= $n1 ?></span></h3> | ||
+ | <h3>Nombre con strip_tag<span style="color:red"><?= $n2 ?></span></h3> | ||
+ | <h3>Nombre <span style="color:red"><?= $nombre ?></span></h3> | ||
+ | <h3>Nombre con filter sin sanitizar<span style="color:red"><?= $n3 ?></span></h3> | ||
+ | <h3>Nombre directo de $_POSt<span style="color:red"><?= $n3 ?></span></h3> | ||
+ | <h3>Apellidos <span style="color:red"><?= $apellidos ?></span></h3> | ||
+ | <h3>Edad <span style="color:red"><?= $edad ?></span></h3> | ||
+ | <h3>Fecha de nacimiento <span style="color:red"><?= $fNac ?></span></h3> | ||
+ | <h3>Idioma <span style="color:red"><?= $mis_idiomas ?></span></h3> | ||
+ | <h3>Género <span style="color:red"><?= $genero ?></span></h3> | ||
+ | <h3>Correo <span style="color:red"><?= $email ?></span></h3> | ||
+ | <h3>Estudios <span style="color:red"><?= $estudios ?></span></h3> | ||
+ | </fieldset> | ||
+ | |||
+ | |||
+ | |||
+ | </body> | ||
+ | </html> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
}} | }} | ||
− | + | ||
</div> | </div> | ||
Línea 591: | Línea 815: | ||
<!--3 --> | <!--3 --> | ||
<div class="slide"> | <div class="slide"> | ||
+ | </div> |
Última revisión de 18:18 20 nov 2023
- Este parámetro es opcional, si no se especifica por defecto toma el valor GET
- Cuando el método es GET las parejas se viaulizan en el URL, apareciendo como parte de él, separado por el signo interrogación con parejas variable=valor, y separadas entre ellas, si hubiera varias, con el &
Ejemplo
| |
Tip: El name es al servidor lo mismo que el id es al cliente, con id podéis acceder a los valores de los elementos con javascript, con el name lo haremos en php
<form action="datos.php" method="GET"> Nombre <input type=text name = 'nombre' value='maría'> Apellido <input type=text name = 'apellido' value='Ruiz'> <br /> <input type=submit value=enviar> </form>
Dos cajas de texto y el botón submit
|
Tip: No se recomienda por temas de seguridad leer de la superglobal $_REQUEST
Nota: Las variables en $_REQUEST se proporcionan al script a través de los mecanismos de entrada GET, POST, y COOKIE y por lo tanto pueden ser manipulados por el usuario remoto y no debe confiar en el contenido...)