Archivos de Categoría: PHP - Paginas 9

Modificando el proceso de autenticación de Laravel

Suelo implementar en los proyectos el modo «paranoico» de autenticación de usuarios, esto consiste en que cada vez que un usuario falla en el proceso de autenticación le mando un email de aviso y en caso de pasar de X intentos le bloqueo la cuenta. Para hacer esto en Laravel 5 lo que hago es modificar el proceso de logado de usuarios que ya trae Laravel por defecto, añadiendo en la tabla users un campo para establecer el estado del usuario (activo o no) y crear la tabla users_login para almacenar todos los intentos de acceso de los usuarios.

Se puede descargar los ficheros de mi repositorio de Github donde aparece todo el código comentado

Funciones que suelo usar para tratamiento de cadenas de texto

Las suelo tener en una clase pero las separo en funciones básicas para que sea más fácil copiar y pegar la que se necesite en cada uso.

Para limpiar código html que han pegado directamente desde Word. Suele ocurrir sobretodo en editores antiguos tipo wysiwyg que copiaban directamente desde el Word y metía toda la morralla que usa Word para dar estilos, con lo que luego al mostrarlo en la web se veía bastante mal. Esta función elimina todas las etiquetas que suele meter Word para que no pase.

function limpia_word($html) {
	$html = ereg_replace("<(/)?(font|span|del|ins)&#91;^>]*>","",$html);
	$html = ereg_replace("<(&#91;^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>","<\\1>",$html);
	$html = ereg_replace("<(&#91;^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>","<\\1>",$html);
	return $html;
}

* donde pone (&#91;^>]*) en realidad es ([^>]*) , el pugin que uso para generar la vista tipo código lo modifica por esos simbolos.

Crear un slug a partir de una cadena y poder usarla así como url de una página.

function slug($str, $length) {
	$str = substr($str, 0, $length);
	$characters = array(
		"Á" => "A", "Ç" => "c", "É" => "e", "Í" => "i", "Ñ" => "n", "Ó" => "o", "Ú" => "u",
		"á" => "a", "ç" => "c", "é" => "e", "í" => "i", "ñ" => "n", "ó" => "o", "ú" => "u",
		"à" => "a", "è" => "e", "ì" => "i", "ò" => "o", "ù" => "u"
	);
	$str = strtr($str, $characters);
	$str = strtolower(trim($str));
	$str = preg_replace("/[^a-z0-9-]/", "-", $str);
	$str = preg_replace("/-+/", "-", $str);
	if(substr($str, strlen($str) - 1, strlen($str)) === "-") {
		$str = substr($str, 0, strlen($str) - 1);
	}
    return $str;
}

Cortar una cadena de texto sin cortar palabras, lo que hace es cortar por el espacio anterior que encuentre y añadir 3 puntos suspensivos al finalizar para indicar que el texto continúa:

function corta_string($string, $maxlength)
{
	$string = wordwrap(strip_tags($string), $maxlength, '|');
	$string = explode("|", $string);
	return $string[0] . ((isset($string[1]))?'...':'');
}

Eliminar metatag generator en Drupal 8

En Drupal es habitual que te meta el metatag de generado por Drupal, cosa que no me suele gustar por dar pistas a los malos… así que para eliminarlo en Drupal 7 existía un módulo pero en Drupal 8 no lo he encontrado así que he preparado un par de líneas para quitarlo. En el fichero .theme de nuestro tema debemos poner:

function NUESTROTEMA_page_attachments_alter(array &$page) {
    foreach($page['#attached']['html_head'] as $id=>$tag){
      if($tag[1] == 'system_meta_generator'){
        unset($page['#attached']['html_head'][$id]);
      }
    }
}