Validar datos con PHP

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Evitar la introducción de valores indeseados en la url

<?php 
	function allowed_get_params($allowed_params = []){
		$allowed_array = [];
		foreach ($allowed_params as $param) {
			if(isset($_GET[$param])){
				$allowed_array[$param] = $_GET[$param];
			}else{
				$allowed_array[$param] = NULL;
			}
		}
		return $allowed_array;
	}
	$get_params = allowed_get_params(['username', 'password']);

	var_dump($get_params)
	//allow-parameters.php?username=pablo&password=rqr&oooo=4
 ?>

Ver ejemplo.

Validar si se ha escrito algo

<?php 
function has_presence($value){
	$trimmed_value = trim($value);
	return isset($trimmed_value) && $trimmed_value!=="";
}

if(has_presence("   ")){
	echo "exito";
}else{
	echo "fracaso";
}

 ?>

Ver ejemplo.

Validar longitud cadena

<?php 
function has_length($value, $options=[]){
	if(isset($options['max']) && (strlen($value) > (int)$options['max'])){
		return false;
	}
	if(isset($options['min']) && (strlen($value) < (int)$options['min'])){
		return false;
	}
	if(isset($options['exact']) && (strlen($value) != (int)$options['exact'])){
		return false;
	}	
	return true;
}

if(has_length("buenos dias", ["min"=>5, "max"=> 18])){
	echo "exito";
}else{
	echo "fracaso";
}
?>

Ver solución

Evaluar si un número cae dentro de cierto intervalo

<?php 
function has_number($value, $options=[]){
	if(!is_numeric($value)){
		return false;
	}
	if(isset($options['max']) && ($value > (int)$options['max'])){
		return false;
	}
	if(isset($options['min']) && ($value < (int)$options['min'])){
		return false;
	}
	return true;
}

if(has_number(43, ["min"=> 33, "max"=>55])){
	echo "exito";
}else echo "fracaso";
?>

Ver solución

Sanitización o filtrado

Consiste en procesar los datos de entrada para eliminar el posible código malicioso.

  • htmlspecialchars() → HTML encode key chars.
  • htmlentities() → HTML encode.
  • strip_tags() → Elimina todas las etiquetas HTML y PHP.
  • json_encode()
  • mysqli_real_escape_string() → MySQL escape.
  • addslashes()

Logging

<?php 
$log_file = "errors.log";

function logger($level="ERROR", $msg=""){
	global $log_file;
	$log_msg = $level.": ".$msg.PHP_EOL;
	file_put_contents($log_file, $log_msg, FILE_APPEND | LOCK_EX);
}
logger("ERROR","Un error ha ocurrido");
logger("DEBUG","i vale 7");
?>

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.