Filtros en PHP (Companion)
Ya hemos visto la parte teórica de los filtros en PHP, ahora toca ver la parte práctica y ejemplos de como utilizar y cosas que no deberías hacer.
Vamos primero con lo que tendríamos en una situación normal, por ejemplo, un registro:
<style> form{ background-color: #d5d5d5; padding: 10px 20px; width: 600px; border-radius: 5px; } form .form_sector{ margin-bottom: 5px; } form .form_label{ display: inline-block; width: 100px; } form .form_input{ display: inline-block; width: 450px; } form .form_submit{ width: 550px; text-align: right; } form .form_submit input{ display: inline-block; width: 150px; } input{ width: 100%; } .warning{ width: 550px; background-color: #ffe861; border-radius: 15px; padding: 10px; } .success{ width: 550px; background-color: #a2ffb9; border-radius: 15px; padding: 10px; } </style> <h1>Register</h1> <form action="process.php" method="POST"> <div class="form_sector"> <label for="name">Name: </label> <input type="text" id="name" name="name" placeholder="example: Rokudo387"/> </div> <div class="form_sector"> <label for="email">Email: </label> <input type="text" id="email" name="email" placeholder="example: Rokudo387@myemail.com"/> </div> <div class="form_sector"> <label for="password">Password: </label> <input type="password" id="password" name="password" placeholder=""/> </div> <div class="form_sector"> <label for="repassword">Re Password: </label> <input type="password" id="repassword" name="repassword" placeholder=""/> </div> <div class="form_sector"> <div class="form_submit"><input type="submit" value="confirm"/></div> </div> </form>
Ahora necesitaríamos un archivo PHP donde hacer nuestras pruebas, por ejemplo process.php ahora si sin más empecemos.
filter_has_var
https://blastcoding.com/filtros-en-php-companion/#filter_has_varComprueba si la variable existe, esta función funciona para las variables predefinidas que puede haber en $_GET
, $_POST
, $_SERVER
, $_COOKIE
, $_ENV
.
$fc_name = filter_has_var(INPUT_POST, "name"); var_dump($fc_name);
¿Cuál será el resultado si corro nuestro registro y le doy a confirm? Tanto como si le ingreso datos como si no será true, ya que le estamos pasando name en el POST.
filter_id
https://blastcoding.com/filtros-en-php-companion/#filter_idÍndica el id de filtro que posea el nombre pasado. Esta función no sé qué tan útil sea, ya que los filtros no tienen un nombre en común. Si los de sanitización empezaran por sanitize_ y los de validación por validate_ podría ser más útil pero no.
filter_id exampleecho filter_id("boolean")."(int)
"; echo filter_id("validate_domain")."(int)
"; echo filter_id("validate_email")."(int)
"; echo filter_id( "float")."(int)
";
258(int) 277(int) 274(int) 259(int)
filter_list
https://blastcoding.com/filtros-en-php-companion/#filter_listMuestra una lista con los nombres de los filtros
foreach (filter_list() as $filter) { echo $filter.""; }
int boolean float validate_regexp validate_domain validate_url validate_email validate_ip validate_mac string stripped encoded special_chars full_special_chars unsafe_raw email url number_int number_float add_slashes callback
filter_var
https://blastcoding.com/filtros-en-php-companion/#filter_varCuando tengamos que sanitizar(sanear) talvez una de las mejores opciones sea usar filter_var
, no recomiendo su uso en la validación, ya que tenemos filter_input
para ello además de chequear que la variable existe que es un plus.
En el siguiente ejemplo la utilizaré para validación, pero evite usar esta función de esta manera
filter_var example:$options =array( 'options'=>array( "regexp"=>"/[a-zA-Z0-9_]{4,100}/" ) ); //recomended for sanitieze //if you use to validate you will need to check if that $POST exists //please dont do this if (isset($_POST['name'])){ $f_name = filter_var($_POST['name'], FILTER_VALIDATE_REGEXP, $options); } var_dump($f_name);
filter_input
https://blastcoding.com/filtros-en-php-companion/#filter_input filter_input$options =array( 'options'=>array( "regexp"=>"/[a-zA-Z0-9_]{4,100}/" ) ); $f_name = filter_input(INPUT_POST, "name", FILTER_VALIDATE_REGEXP, $options); var_dump(f_name);
Ya vimos las funciones filter_input
y filter_var
ya es hora de hablar de funciones que son un poco más elaboradas
filter_input_array
https://blastcoding.com/filtros-en-php-companion/#filter_input_array filter_input_array example$args= array( 'name' => array( "options" => array( "regex" => "/[a-zA-Z0-9_]{4,100}/" ) ), 'email' => FILTER_VALIDATE_EMAIL, 'password' =>array( "options" => array( "regex" =>"/(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}/" ) ), 'repassword' => array( "options" => array( "regex" =>"/(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}/" ) ), ); $myinputs = filter_input_array(INPUT_POST, $args); var_dump($myinputs);
filter_var_array
https://blastcoding.com/filtros-en-php-companion/#filter_var_array filter_var_array$args= array( 'name' => array( "options" => array( "regex" => "/[a-zA-Z0-9_]{4,100}/" ) ), 'email'=> FILTER_VALIDATE_EMAIL, 'password' =>array( "options" => array( "regex" =>"/(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}/" ) ), 'repassword' => array( "options" => array( "regex" => "/(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}/" ) ), ); $myinputs = filter_var_array($_POST, $args); var_dump($myinputs);