SlideShare una empresa de Scribd logo
Meetups
@SergioCarracedoRoi Scroll CTO
Disfrutando del desarrollo web
desde 1998.
@rolando_caldas
https://rolandocaldas.com
¿$_GET, $_POST, $_SERVER… ? Usa filter_input
Meetups
● >= PHP 5.2.0
● INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER o INPUT_ENV
● filter_input ataca a los valores de entrada, no a sus “live array”
● Diferentes tipos de filtrado:
○ Filtros de validación
○ Filtros de saneamiento
● Retornos en caso de fracaso:
○ false en caso de error en el filtrado
○ null en caso de que no exista la variable a filtrar
Ataca a los valores de entrada, no a sus “live array”
Meetups
http://example.com/
<?php
$_GET['hello'] = 'bye';
var_dump(filter_input(INPUT_GET,
'hello',
FILTER_SANITIZE_STRING));
/*
NULL
*/
http://example.com/?hello=text
<?php
$_GET['hello'] = 'bye';
var_dump(filter_input(INPUT_GET,
'hello',
FILTER_SANITIZE_STRING));
/*
string(4) “text”
*/
Filtros de validación
Meetups
● FILTER_VALIDATE_BOOLEAN
● FILTER_VALIDATE_EMAIL
● FILTER_VALIDATE_FLOAT
● FILTER_VALIDATE_INT
● FILTER_VALIDATE_IP
● FILTER_VALIDATE_MAC (>= 5.5.0)
● FILTER_VALIDATE_REGEXP
● FILTER_VALIDATE_URL
Filtros de validación: Ejemplos
Meetups
http://example.com/?active=on
<?php
var_dump(filter_input(INPUT_GET,
active,
FILTER_VALIDATE_BOOLEAN));
/*
boolean true
*/
http://example.com/?url=www.google.es
<?php
var_dump(filter_input(INPUT_GET,
'url',
FILTER_VALIDATE_URL));
/*
boolean false
*/
Filtros de saneamiento
Meetups
● FILTER_SANITIZE_EMAIL
● FILTER_SANITIZE_ENCODED
● FILTER_SANITIZE_MAGIC_QUOTES
● FILTER_SANITIZE_NUMBER_FLOAT
● FILTER_SANITIZE_NUMBER_INT
● FILTER_SANITIZE_SPECIAL_CHARS
● FILTER_SANITIZE_FULL_SPECIAL_CHARS
● FILTER_SANITIZE_STRING
● FILTER_SANITIZE_STRIPPED
● FILTER_SANITIZE_URL
● FILTER_UNSAFE_RAW
Filtros de saneamiento: Ejemplos
Meetups
http://example.com/?number=hey34dk5-
<?php
var_dump(filter_input(INPUT_GET,
number,
FILTER_SANITIZE_NUMBER_INT));
/*
string '345-'
*/
http://example.com/?data=hello"bye'
<?php
var_dump(filter_input(INPUT_GET,
'data',
FILTER_SANITIZE_MAGIC_QUOTES));
/*
string 'hello"bye''
*/
Cuando la variable a filtrar es un array
Meetups
<?php
// POST: var array ["1", "2", "3", "text"]
var_dump(filter_input(INPUT_POST, 'array',
FILTER_VALIDATE_INT, FILTER_REQUIRE_ARRAY));
/*
array (size=4)
0 => int 1
1 => int 2
2 => int 3
3 => boolean false
*/
Filtrando varias variables al mismo tiempo
Meetups
<?php
$options = [
'hello' => FILTER_SANITIZE_STRING,
'active' => FILTER_VALIDATE_BOOLEAN,
'url' => FILTER_VALIDATE_URL,
'number' => FILTER_SANITIZE_NUMBER_INT,
'data' => FILTER_SANITIZE_MAGIC_QUOTES,
'array' => [
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_ARRAY,
'options' => ['min_range' => 1,
'max_range' => 2],
],
];
var_dump(filter_input_array(INPUT_POST,
$options));
/*
array (size=6)
'hello' => string 'bye' (length=5)
'active' => boolean true
'url' => boolean false
'number' => string '345-' (length=4)
'data' => string 'hello"bye''
(length=13)
'array' =>
array (size=4)
0 => int 1
1 => int 2
2 => boolean false
3 => boolean false
*/
Comprobando si una variable existe
Meetups
<?php
if (filter_has_var( INPUT_POST, 'submit') === false) {
throw new Exception("Data not submitted" );
}
$options = [
'hello' => FILTER_SANITIZE_STRING, 'active' => FILTER_VALIDATE_BOOLEAN,
'url' => FILTER_VALIDATE_URL,'number' => FILTER_SANITIZE_NUMBER_INT,
'data' => FILTER_SANITIZE_MAGIC_QUOTES,
'array' => [
'filter' => FILTER_VALIDATE_INT,'flags' => FILTER_REQUIRE_ARRAY,
'options' => ['min_range' => 1, 'max_range' => 2],
],
];
var_dump(filter_input_array( INPUT_POST, $options));
www.opsou.com www.pedrofigueras.com

Más contenido relacionado

La actualidad más candente

JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORESJAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
Eric Gustavo Coronel Castillo
 
Usaalmacen
UsaalmacenUsaalmacen
Usaalmacen
UsaalmacenUsaalmacen
Funcion
FuncionFuncion
Funcion
jbersosa
 
Paper ieee
Paper ieeePaper ieee
Paper ieee
Antonio Rodriguez
 
Tf
TfTf
Tf
tyghj
 
Proma en c ventas
Proma en c ventasProma en c ventas
Proma en c ventas
jbersosa
 
Prog1
Prog1Prog1
Prog1
jbersosa
 
Crucigrama matematico
Crucigrama matematicoCrucigrama matematico
Crucigrama matematico
Jorge La Chira
 

La actualidad más candente (9)

JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORESJAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
JAVA SERVER FACES - LECCION 04 - VALIDADORES Y CONVERTIDORES
 
Usaalmacen
UsaalmacenUsaalmacen
Usaalmacen
 
Usaalmacen
UsaalmacenUsaalmacen
Usaalmacen
 
Funcion
FuncionFuncion
Funcion
 
Paper ieee
Paper ieeePaper ieee
Paper ieee
 
Tf
TfTf
Tf
 
Proma en c ventas
Proma en c ventasProma en c ventas
Proma en c ventas
 
Prog1
Prog1Prog1
Prog1
 
Crucigrama matematico
Crucigrama matematicoCrucigrama matematico
Crucigrama matematico
 

Más de Rolando Caldas

PHPVigo #28 principios solid en la vida real
PHPVigo #28   principios solid en la vida realPHPVigo #28   principios solid en la vida real
PHPVigo #28 principios solid en la vida real
Rolando Caldas
 
PHPVigo #26 - Lightning Docker phpUnit
PHPVigo #26 - Lightning Docker phpUnitPHPVigo #26 - Lightning Docker phpUnit
PHPVigo #26 - Lightning Docker phpUnit
Rolando Caldas
 
PHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHPPHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHP
Rolando Caldas
 
PHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hashPHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hash
Rolando Caldas
 
PHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entornoPHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entorno
Rolando Caldas
 
Pleased to meet you, Laravel
Pleased to meet you, LaravelPleased to meet you, Laravel
Pleased to meet you, Laravel
Rolando Caldas
 

Más de Rolando Caldas (6)

PHPVigo #28 principios solid en la vida real
PHPVigo #28   principios solid en la vida realPHPVigo #28   principios solid en la vida real
PHPVigo #28 principios solid en la vida real
 
PHPVigo #26 - Lightning Docker phpUnit
PHPVigo #26 - Lightning Docker phpUnitPHPVigo #26 - Lightning Docker phpUnit
PHPVigo #26 - Lightning Docker phpUnit
 
PHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHPPHPVigo #23 - Taller de Docker para PHP
PHPVigo #23 - Taller de Docker para PHP
 
PHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hashPHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hash
 
PHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entornoPHPVigo #19 - Lightning variables de entorno
PHPVigo #19 - Lightning variables de entorno
 
Pleased to meet you, Laravel
Pleased to meet you, LaravelPleased to meet you, Laravel
Pleased to meet you, Laravel
 

Último

Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
Buscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - BuscafiestaBuscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - Buscafiesta
holabuscafiesta
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptxTECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
KatiuskaDominguez2
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
dayronfabricioruizmo
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
PaulDelgadoSoto
 
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdfPC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
JhenryHuisa1
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
Maria Celeste Trujillo Cruz
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
eliersin13
 

Último (9)

Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
Buscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - BuscafiestaBuscador de Eventos y Fiestas en España - Buscafiesta
Buscador de Eventos y Fiestas en España - Buscafiesta
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptxTECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
TECLADO ERGONÓMICO Y PANTALLAS TACTILES.pptx
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
 
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdfPC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
PC-04-DISEÑOS DE PITS Y STOPES DE UNA MINA A TAJO ABIERTO.pdf
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
 

PHPVigo #16 - Lightning filter input

  • 1.
  • 2. Meetups @SergioCarracedoRoi Scroll CTO Disfrutando del desarrollo web desde 1998. @rolando_caldas https://rolandocaldas.com
  • 3. ¿$_GET, $_POST, $_SERVER… ? Usa filter_input Meetups ● >= PHP 5.2.0 ● INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER o INPUT_ENV ● filter_input ataca a los valores de entrada, no a sus “live array” ● Diferentes tipos de filtrado: ○ Filtros de validación ○ Filtros de saneamiento ● Retornos en caso de fracaso: ○ false en caso de error en el filtrado ○ null en caso de que no exista la variable a filtrar
  • 4. Ataca a los valores de entrada, no a sus “live array” Meetups http://example.com/ <?php $_GET['hello'] = 'bye'; var_dump(filter_input(INPUT_GET, 'hello', FILTER_SANITIZE_STRING)); /* NULL */ http://example.com/?hello=text <?php $_GET['hello'] = 'bye'; var_dump(filter_input(INPUT_GET, 'hello', FILTER_SANITIZE_STRING)); /* string(4) “text” */
  • 5. Filtros de validación Meetups ● FILTER_VALIDATE_BOOLEAN ● FILTER_VALIDATE_EMAIL ● FILTER_VALIDATE_FLOAT ● FILTER_VALIDATE_INT ● FILTER_VALIDATE_IP ● FILTER_VALIDATE_MAC (>= 5.5.0) ● FILTER_VALIDATE_REGEXP ● FILTER_VALIDATE_URL
  • 6. Filtros de validación: Ejemplos Meetups http://example.com/?active=on <?php var_dump(filter_input(INPUT_GET, active, FILTER_VALIDATE_BOOLEAN)); /* boolean true */ http://example.com/?url=www.google.es <?php var_dump(filter_input(INPUT_GET, 'url', FILTER_VALIDATE_URL)); /* boolean false */
  • 7. Filtros de saneamiento Meetups ● FILTER_SANITIZE_EMAIL ● FILTER_SANITIZE_ENCODED ● FILTER_SANITIZE_MAGIC_QUOTES ● FILTER_SANITIZE_NUMBER_FLOAT ● FILTER_SANITIZE_NUMBER_INT ● FILTER_SANITIZE_SPECIAL_CHARS ● FILTER_SANITIZE_FULL_SPECIAL_CHARS ● FILTER_SANITIZE_STRING ● FILTER_SANITIZE_STRIPPED ● FILTER_SANITIZE_URL ● FILTER_UNSAFE_RAW
  • 8. Filtros de saneamiento: Ejemplos Meetups http://example.com/?number=hey34dk5- <?php var_dump(filter_input(INPUT_GET, number, FILTER_SANITIZE_NUMBER_INT)); /* string '345-' */ http://example.com/?data=hello"bye' <?php var_dump(filter_input(INPUT_GET, 'data', FILTER_SANITIZE_MAGIC_QUOTES)); /* string 'hello"bye'' */
  • 9. Cuando la variable a filtrar es un array Meetups <?php // POST: var array ["1", "2", "3", "text"] var_dump(filter_input(INPUT_POST, 'array', FILTER_VALIDATE_INT, FILTER_REQUIRE_ARRAY)); /* array (size=4) 0 => int 1 1 => int 2 2 => int 3 3 => boolean false */
  • 10. Filtrando varias variables al mismo tiempo Meetups <?php $options = [ 'hello' => FILTER_SANITIZE_STRING, 'active' => FILTER_VALIDATE_BOOLEAN, 'url' => FILTER_VALIDATE_URL, 'number' => FILTER_SANITIZE_NUMBER_INT, 'data' => FILTER_SANITIZE_MAGIC_QUOTES, 'array' => [ 'filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY, 'options' => ['min_range' => 1, 'max_range' => 2], ], ]; var_dump(filter_input_array(INPUT_POST, $options)); /* array (size=6) 'hello' => string 'bye' (length=5) 'active' => boolean true 'url' => boolean false 'number' => string '345-' (length=4) 'data' => string 'hello"bye'' (length=13) 'array' => array (size=4) 0 => int 1 1 => int 2 2 => boolean false 3 => boolean false */
  • 11. Comprobando si una variable existe Meetups <?php if (filter_has_var( INPUT_POST, 'submit') === false) { throw new Exception("Data not submitted" ); } $options = [ 'hello' => FILTER_SANITIZE_STRING, 'active' => FILTER_VALIDATE_BOOLEAN, 'url' => FILTER_VALIDATE_URL,'number' => FILTER_SANITIZE_NUMBER_INT, 'data' => FILTER_SANITIZE_MAGIC_QUOTES, 'array' => [ 'filter' => FILTER_VALIDATE_INT,'flags' => FILTER_REQUIRE_ARRAY, 'options' => ['min_range' => 1, 'max_range' => 2], ], ]; var_dump(filter_input_array( INPUT_POST, $options));