Blog de programación, errores, soluciones

Chose Language:
comments
Author: Admin/Publisher |not finished | checked

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:

contenido
Puedes cerrar o abrir este menú cliqueando sobre el boton contenido
index.php
<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_var

Comprueba si la variable existe, esta función funciona para las variables predefinidas que puede haber en $_GET, $_POST, $_SERVER, $_COOKIE, $_ENV.

filter_has_var Example
$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 example
echo 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_list

Muestra 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_var

Cuando 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);
Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category

Comments