16
Mar 10

Generador aleatorio de contraseñas

Una función muy útil para poder generar una contraseña aleatoria para un usuario.

<?php
function generate_password( $length = 8 ) {
  $chars = "abcdefghijklmnopqrstuvwxyz0123456789";
  for( $i=0; $i<$length; $i++ ) {
    $pos = rand( 0, 36 );
    $pass .= $chars{$pos};
  }
  return( $pass );
}
?>

09
Mar 10

Protección de email con hide-email

Leo en kabytes (un blog más que recomendado) una utilidad para encriptar el email en webs para robots curiosos con una función bastante simple y eficiente con php que genera javascript.
El uso en bien sencillo

<?php echo( hide_email('test@test.com') ); ?>

Hace uso de la función:

function hide_email( $email ) {
  $character_set = '+-.0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ' . '_abcdefghijklmnopqrstuvwxyz';
  $key = str_shuffle($character_set); $cipher_text = ''; $id = 'e'.rand(1,999999999);
  for ($i=0;$i<strlen($email);$i+=1)
    $cipher_text.= $key[strpos($character_set,$email[$i])];
  $script = 'var a="'.$key.'";var b=a.split("").sort().join("");var c="'.$cipher_text.'";var d="";';
  $script.= 'for(var e=0;e<c.length;e++)d+ = b.charAt(a.indexOf(c.charAt(e)));';
  $script.= 'document.getElementById("'.$id.'").innerHTML = "<a href=\\"mailto:"+d+"\\">"+d+"</a>"';
  $script = "eval(\"".str_replace(array("\\",'"'), array("\\\\",'\"'), $script)."\")";
  $script = '<script type="text/javascript"> /* <![CDATA[*/'.$script.'/*]]>*/</script>';
  return '<span id="'.$id.'">[javascript protected email address]</span>'.$script;
}

Esta función se encuentra disponible en www.maurits.vdschee.nl/php_hide_email/


02
Mar 10

Codificación en Rot13 de una cadena

Este sistema de codificación (encriptación) de cadenas ya fue usado por Julio César (con un desplazamiento de 3 caracteres siempre hacia adelante) y aunque en general es fácil de decodificar, para almacenar datos no sensibles de forma temporal podría ser útil. La función de esta encriptación es el desplazamiento por el abecedario de cada caracter 13 posiciones hacia delante o hcia atrás en función de qué caracter se trate.

function rot13( $cadena ) {
    for( $i = 0; $i < strlen( $cadena ); $i++ ) {
        $caracter = ord( $cadena[$i] );
        if ($caracter >= ord( 'n' ) & $caracter <= ord( 'z' ) | $caracter >= ord( 'N' ) & $caracter <= ord( 'Z' ) )
            $caracter -= 13;
        elseif ($caracter >= ord( 'a' ) & $caracter <= ord( 'm' ) | $caracter >= ord( 'A' ) & $caracter <= ord( 'M' ) )
            $caracter += 13;
        $cadena[$i] = chr( $caracter );
    }
    return $cadena;
}

26
Feb 10

Copia de seguridad de Wordpress automático por correo electrónico

Con este script podemos hacer copias por correo electrónico automático a las 5 de la mañana cada día. Seguro que muchos de vosotros teneis el mismo problema y es muy difícil encontrar un script adecuado.

<?
$db["host"] = "localhost";
$db["user"] = "usuariomysql";
$db["pass"] = "contraseñamysql";
$db["name"] = "nombremysql";

// MySQL
$fichero_mysql = "/home/user/backups/".$db["name"] . date("d-m-Y") . '.sql';
system( "mysqldump -h ".$db["host"]." -u ".$db["user"]." -p".$db["pass"]." ".$db["name"]." > ".$fichero_mysql );

// Ahora de la carpeta wp-content
$fichero_wp_content = "/home/user/backups/wp-content" . date("d-m-Y") . '.tgz';
system( "tar czvf ".$fichero_wp_content." /home/user/public_html/wp-content" );

// Ahora enviamos el mail
include "libmail.php"; // Esta librería solo ocupa 9kb http://lwest.free.fr/doc/php/lib/index.php3?page=mail&lang=en
$m= new Mail;
$m->From( "Copia de Seguridad MYSQL <backup@electronico.biz>" );
$m->To( "Yo <micorreo@electronico.biz>" );
$m->Subject(  "Copia Diaria de MYSQL de mi Wordpress" );
$m->Body(  "Copia de seguridad MySQL\nSaludos." );
$m->Priority(3) ;
$m->Attach( $fichero_mysql ) ;
$m->Attach( $fichero_wp_content ) ;
$m->Send();

// Borramos los fichero del servidor
unlink( $fichero_mysql );
unlink( $fichero_wp_content );
?>

Luego con “crontab -e” en la consola añadimos un cron nuevo para que lo haga solo:

00 5 * * * root php mi_programita.php

Por supuesto hay que cambiar los valores de las variables por los nuestros :)


24
Feb 10

Procesar cadena en BBCode para pasar a HTML: básico

En esta ocasión, una función para convertir una cadena en formato BBCode (Bulletin Board Code), típico de los foros, y convertirlos a html para mostrarlos.
Este parser nos permite almacenar los textos con código diferente al HTML y así evitar que alguien guarde contenido en javascript o sentencias HTML que puedan perjudicar.

function BBCodeAHTML( $cadena ) {
    // Eliminamos etiquetas HTML que pueda contener la cadena
    $cadena = strip_tags( $cadena );
    // Ahora con la cadena limpia de etiquetas HTML definimos las etiquetas BBCode que queremos tener
    $etiquetas = array(
        'N' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<strong>', 'close_tag'=>'</strong>' ), // Negrita
        'C' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<i>', 'close_tag'=>'</i>' ), // Negrita
        'S' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<span style="text-decoration:underline">', 'close_tag'=>'</span>' ), // Subrayado
        'D' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<span style="text-align:right">', 'close_tag'=>'</span>' ), // Alinieación Derecha
        'I' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<span style="text-align:left"', 'close_tag'=>'</span>' ), // Izquierda
        'M' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<span style="text-align:rcenter"', 'close_tag'=>'</span>' ), // Centrada
    );
    // Eltras etiquetas son: [N] Para negrita, [C] Para cursiva, [S] Para subrayado, [D], [I], [M] Para las alineaciones, derecha, izquierda o medio

    // Procesamos los cambios
    $parser = bbcode_create( $etiquetas );
    $cadena = bbcode_parse( $parser, $cadena );
    // Eliminamos el resto de las etiquetas que pudiera haber
    $cadena = preg_replace( '[\[(.+)\]]', '', $cadena );
    // Devolvemos la cadena limpia y traducida al HTML
    return( $cadena );
}