Como eliminar miles de ficheros con el comando rm con linux

El comando rm cuando pretendemos eliminar miles de ficheros de forma simultanea desde el terminal de linux nos devolverá el siguiente mensaje: -bash: /bin/rm: Argument list too long pero no hay problema porque nos podemos saltar esta restricción utilizando el comando find e ir eliminando por lotes.

Por ejemplo, si quisiéramos eliminar todos los elementos de la carpeta en la que nos encontramos actualmente solo tendríamos que escribir lo siguiente:

find ./ -name '*' -print0 | xargs -0 -n 10 rm

Espero que les sea de ayuda.

Evitar spam en los formularios sin captcha

La solución en la mayoría de los formularios al spam es simplemente poner captcha pero la verdad es hay algunos trucos que nos puedes ayudar a evitar toda esa cantidad de emails basura que rellenan nuestros formularios sin complicarnos mucho la vida y sin que los usuarios tengas que pasar por rellenar un captcha.

El campo mágico que todos los bots rellenan es el campo email, suele ser obligatorio por norma general y así se aseguran que ese mail llegue a su destinatario. Lo que podemos hacer es mostrar ese campo solamente a los bots mientras que a los usuarios mostrarle otro que sea campook, de esta forma todos los bots que rellenen el campo email serán spam.

¿Como ocultar el campo email solo a los usuarios? Lo primero que se nos puede venir a la cabeza es poner type=»hidden» pero sería un error ya que esto lo detectarían los bots y no lo rellenarían la clave es poner una clase a este campo en los formularios y ocultarlo desde nuestra hoja de estilos.

En el formulario pondremos:

<form  method="post">
<input class="claseparaocultar" type="text" name="email" placeholder="Tu email" />
<input class="classedelinpput" type="text" name="campook" placeholder="Tu email" />
<form>

En la hoja de estilos:

.claseparaocultar {display:none}

Después con php lo único que tenemos que hacer antes de la función mail es detectar que nos llega por POST desde el campo email y si tiene algo diferente a «» pues devolver un mensaje como por ejemplo : Se ha detectado este mensaje como spam, en caso de no ser así contacte con … .

PHP con MySQL: Sistema de comentarios simple con moderación

Crear un sistema de comentarios es más facil de lo que podemos pensar en un principio, necesitaremos guardar muy pocos datos con el nombre el email y el texto del comentario nos será suficiente.

Un ejemplo es el que os pongo a continuación donde creariamos en musql una tabla con los campos id, idarticuloasociado, nombre, email, texto,activo:

CREATE TABLE IF NOT EXISTS `prefijo_comentarios` (
  `id` INT(10) NOT NULL AUTO_INCREMENT,
  `idarticuloasociado` INT(10) UNSIGNED NOT NULL,
  `nombre` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL,
  `email` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL,
  `texto` text COLLATE utf8_unicode_ci NOT NULL,
  `activo` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idartista` (`idartista`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0 ;

No debemos olvidarnos de poner idarticuloasociado como clave foranea del artículo donde se comente:

ALTER TABLE `comentarios`
  ADD CONSTRAINT `prefijo_comentarios_1` FOREIGN KEY (`idarticuloasociado`) REFERENCES `prefijo_articulo` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

Ahora las dos funciones que usaremos en PHP para moderar los comentarios son en primer lugar:

function enviarcomentario($mysqli,$nombre,$email,$texto,$articuloid) {
	if (!ereg("^([a-zA-Z0-9._]+)@([a-zA-Z0-9.-]+).([a-zA-Z]{2,4})$",$email)){ 
	        return 'Email incorrecto'; 
	} else { 
		 $envio = $mysqli->query("INSERT INTO prefijo_comentarios (`id`, `idartista`, `nombre`, `email`, `texto`, `activo`) VALUES (NULL, '$articuloid', '$nombre', '$email', '$texto','0');");
		$subject = "Comentario";
		$mensaje = "--------------------------------------------------- \n";
		$mensaje.= "                      Comentario                    \n";
		$mensaje.= "--------------------------------------------------- \n";
		$mensaje.= "NOMBRE:   ".$nombre."\n";
		$mensaje.= "EMAIL:    ".$email."\n";
		$mensaje.= "FECHA:    ".date("d/m/Y")." a las ".date("h:i:s a")."\n";
		$mensaje.= "IP:       ".$_SERVER['REMOTE_ADDR']."\n\n";
		$mensaje.= "--------------------------------------------------- \n\n";
		$mensaje.= $texto."\n\n";
		$mensaje.= "--------------------------------------------------- \n";
		$mensaje.= "Enviado desde http://conocimiento.invbit.com \n";
                $mensaje.= "Activar: http://www.midominio.com/moderacomentario.php?accion=activar&id=xx  \n";
		$mensaje.= "Eliminar: http://www.midominio.com/moderacomentario.php?accion=eliminar&id=xx \n";
		$headers = "From: ".$email."\r\n";
		if (mail('moderador@midominio.com', $subject, $mensaje, $headers)) {
			return 'Se ha guardado pero no se ha podido avisar al moderador de su envio.';
		} else {
			return 'Enviado correctamente y esperando moderación.'; 
		}	
	} 
}

Aquí lo que realizamos es introducir las variables que recojemos en el formulario HTML que tengamos en la página web para posteriormente guardarlo en la base de datos y enviar un email al moderador que se va formando en la variable $mensaje con el resto de valores recogidos.

Finalmente para activar o rechazar el comentario usaremos la función:

function moderarcomentario($mysqli,$idcomentario,$accion) {
	if ($accion=='activar') {
		$envio = $mysqli->query("UPDATE prefijo_comentarios SET activo='1' WHERE id = '$idcomentario';");	
	} elseif($accion=='eliminar') {
		$envio = $mysqli->query("DELETE FROM prefijo_comentarios WHERE id = '$idcomentario';");	
	}
 
}

Es recomendable que esta función este protegida por usuario y contraseña pro lo que lo propio es que se ponga dentro del panel de administración de la página web.

Random en php

Son muchas más veces de las que podemos llegar a pensar las veces que necesitamos un número aleatorio en PHP ya sea para mostrar por poner un ejemplo un listado de banners en un espacio publicitario.

Lo que tendríamos que poner es lo siguiente:

<?php
srand(mktime());
echo(rand());
?>

El resultado lo estamos mostrando directamente con un echo pero podríamos guardarlo en una variable para trabajar con este valor a posterior.

Conectarse a MySQL desde PHP

Una de las peculiaridades que tiene PHP es que nos facilita mucho el trabajo para conectarnos y trabajar con diferentes tipos de bases de datos, una de las más usadas es MySQL y podemos conectarnos de una forma muy sencilla con tan solo llamar a la función mysql_connect y pasar los parámetros que indico a continuación:

$conexion = mysql_connect("servidor", "usuario", "clave");
mysql_select_db("prueba", $conexion);

En este caso tendríamos servidor donde le indicaríamos cual es la dirección IP del servidor, en caso de el mismo servidor donde ejecutas PHP localhost, usuario que como el nombre nos dice es el usuario para conectarnos con la base de datos y clave que es la contraseña de ese usuario.

Recargar la misma imagen con jQuery

Para recargar una imagen que modificamos de forma asíncrona y queremos ver como quedó con la nueva versión podríamos utilizar distintas rutas si, pero si además queremos utilizar la misma ruta, la solución está en un arreglo que consiste en añadirle una variable en el momento que se solicita la imagen.

Veamos un ejemplo:

d = new Date();
$("#myimg").attr("src", "/myimg.jpg?"+d.getTime());

Esto pondría en el id «myimg» la nueva imagen.

Ocultar y mostrar un elemento con Jquery

Para mostrar u ocultar determinado elemento web con Jquery podemos hacer uso de las funciones hide() y show().

A continuación un ejemplo de funcionamiento:

$("#botonOcultar").click(function(){$("#texto1").hide("slow")});
$("#botonMostrar").click(function(){$("#texto1").show("slow")});

Este fragmento de código ocultaría el texto con el id «texto1», al pulsar en «botonOcultar». Y lo escondería cuando pulsemos en «botonMostrar». Además con la particularidad de que lo haría despacio (atributo «slow»).

Obtener el valor de un select con jQuery

Esto es muy sencillo, simplemente hay que hacer uso de la función val().

Un ejemplo de uso:

  <select onchangue='displayVals' id="single">
    <option value='single'>Single</option>
    <option value='single2'>Single2</option>
  </select>
 
<script>
    function displayVals() {
      var singleValues = $("#single").val();
      document.write('valor de single:'+singleValues);
    }
 
</script>

Esto mostraría el valor que seleccionamos en el select.

Comprobar si existe un elemento con jQuery

Para sabe si determinado elemento existe podemos utilizar la función length(), puesto que si nos devuelve 0, significa que no existe.

Un sencillo ejemplo de uso sería el siguiente:

if ($('#elemento').length){
 //Aquí pondríamos el código que queremos ejecutar
}

Este código comprueba si existe el elemento con el id ‘elemento’ y ejecuta lo que queramos.

Redireccionar una página con JavaScript

Para cambiar de una página a otra mediante JavaScript haremos uso de la función document.location.href.

Su uso es muy sencillo, tal como se muestra a continuación:

 
<script language="Javascript">
 
document.location.href='www.invbit.com';
 
</script>

Esto nos redireccionaría a la página www.invbit.com