rss
Click para suscribirte
Deja un comentario!

Selecciona tu lector de Feeds:

Añadir a Netvibes Añadir a iGoogle Añadir a Mi Yahoo

Ahora me leen 19 personas mediante feeds.
TAGS

Encriptar y desencriptar cadena PHP

ESCRITO POR Josep Viciana EL 19-11-2008 - EN LA CATEGORÍA PHP.

Cualquier programador Web ha podido necesitar pasar datos por $_GET - en la url - , es una forma fácil y cómoda de pasar valores de una página a otra, pero… en algunos casos puede no ser recomendable y habría que tener un mínimo de precaución, y para estos casos - y otros muchos - se puede utilizar esta clase que un día vi - no se donde, si lo supiese pondría la fuente - y sobre la que me veo obligado a escribir, mas que nada para tenerla presente yo mismo y darla a conocer a quien necesite encriptar y desencriptar una cadena con PHP.

Ya de paso, esto puede servirnos en algún que otro caso para evitar inyecciones SQL, y así evitar que alguien nos mangonee lo que no debe.

Primero: Encriptar
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}

Se utiliza un código secreto, que es el que se pone en $key y que cuando desencriptemos necesitaremos saberlo para que lo haga correctamente.

Para encriptar una cadena escribimos
$cadena_encriptada = encrypt("LA CADENA A ENCRIPTAR","LA CLAVE");

Segundo: Desencriptar
function decrypt($string, $key) {
$result = '';
$string = base64_decode($string);
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}

Y para desencriptar la cadena escribimos
$cadena_desencriptada = decrypt("LA CADENA ENCRIPTADA","LA CLAVE QUE SE USÓ PARA ENCRIPTARLA");

Y poco mas que contar, el que encuentre esto por google probablemente no haya leido nada y sólo copiará el código, en cualquier caso… ahí esta, xD


Obtener contactos de Hotmail, Gmail y otros con PHP

ESCRITO POR Josep Viciana EL 10-11-2008 - EN LA CATEGORÍA PHP.

Una característica que se ha convertido en típica en las redes sociales, es que cuando te registras en una de ellas, si lo haces con una cuenta de Hotmail, Gmail y otros servicios parecidos, te pregunta si quieres invitar a tus contactos a que utilicen la red social a la que te registras… por ejemplo, cuando me registré en Facebook - para ver como era y poco más - no me dejaron utilizar mi cuenta de correo normal por que era del dominio emm-gfx.net, y ellos requerían una cuenta de servicios conocidos como Gmail, y cuando acabé de registrarme con mi cuenta de Gmail me aparecieron todos los contactos de mi agenda para luego preguntarme a que contactos quería invitar a que utilizasen Facebook. Sin duda características como esas son las que hacen que Facebook (twitter, tuenti y demás también) se hagan tan conocidas y hayan conseguido un número de usuarios registrados tan grande.

No sé si me gustan este tipo de cosas, por supuesto es una ayuda para el usuario, pero sin olvidar que tiene que ser opcional y el usuario tiene que saber en todo caso lo que está haciendo… personalmente a mi no me sirve de excusa avisar de que se accede a este tipo de datos en la declaración de privacidad, por que eso no lo lee nadie… debería usarse sólo como opción y por encima de todo teniendo la seguridad de que el usuario sabe lo que hace.

En cualquier caso, puede que a alguien le sea de utilidad, es por eso que lo posteo, para - ojalá - ayudar a quienes puedan aprovechar la información, y aunque no soy nadie para dar lecciones de moral, espero que se haga un uso responsable de esta clase escrita en PHP que sirve para obtener la lista de contactos de servicios como Hotmail.

Se llama Open Inviter y soporta estos servicios: AOL, GMail, GMX.net, Windows Live (Hotmail), Katamail, Lycos, Mail.com, Mail.ru, Rambler.ru, Rediff, Yahoo!, Yandex, Facebook, Hi5, LinkedIn, MySpace, Orkut, Twitter.
Y la lista de servicios puede aumentar, por que funciona con un sistema de plugins, donde cada plugin se dedica a un servicio.

Es un servicio script gratuito, pero necesitamos registrarnos en la página del script para que nos faciliten una API KEY y poder descargarlo y utilizarlo.

La página oficial es openinviter.com, y podemos registrarnos fácilmente.

Sinceramente, creo que si se usa, merece la pena que te “obliguen” a registrarte por que así te dan acceso a los foros, y te mantienes alerta por si algún servicio deja de ser compatible por que hayan cambiado el sistema de acceso, en ese caso tardarían poco tiempo en sacar una nueva versión del plugin correspondiente, que se puede bajar de la misma página, donde también se ve en todo momento el estado (actualizado cada 60 minutos) de los plugins, donde podemos ver cuales son los que estan funcionando y cuales los que no. Para que os hagais una idea, ahora mismo estan todos funcionando.

El uso de la herramienta es fácil, pero si hay alguna duda se puede entrar al foro correspondiente a las dudas de instalación a preguntar (en inglés).


Saber país del visitante sin GeoIP, con PHP

ESCRITO POR Josep Viciana EL 19-08-2008 - EN LA CATEGORÍA PHP, Programación.

Hay varias maneras de saber de donde es un visitante a una página, la más simple seguramente sea preguntandole, como en muchas páginas como las de EA Games, Sony, Asus… pero también existen otras formas para hacer esto transparente al usuario, seguramente la vía más conocida sea utilizando GeoIP, pero si no necesitamos tanta “precisión” - con GeoIP se puede saber incluso la ciudad - y nos conformamos con saber el país, podemos utilizar una variable del servidor de PHP, que recoge información del navegador, de manera que es gratis - GeoIP es de pago - y más rápido.

La variable es esta:

$_SERVER["HTTP_ACCEPT_LANGUAGE"]

Y puede contener algo como: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3

Los 5 primeros caracteres que he subrayado, dicen el idioma y la zona, en este ejemplo sería español de España, si fuese es-mx sería español de Méjico.

Entonces, para saber de donde es y en que idioma mostrar la página podemos hacer esto:

$lang = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,5);

Y ya podemos trabajar como queramos con ese dato.

Lista de países:
es-es - España
es-mx - Méjico
es-ar - Argentina
es-cl - Chile
es-ve - Venezuela
pt-br - Brasil
es-co - Colombia
es-ec - Ecuador
es-uy - Uruguay


Descargar videos de Youtube con PHP

ESCRITO POR Josep Viciana EL 16-08-2008 - EN LA CATEGORÍA PHP, Programación.

Esta es una clase para descargar videos de Youtube, con la que podemos obtener un enlace al archivo de video, que se baja con el nombre get_video, sin ninguna extensión, por esto, dependiendo de que sistema operativo o que configuración tengamos, habrá que cambiarle el nombre y ponerle una extensión para poder verlo.

Se descarga sin extensión pero no sin formato, el formato es application/x-flash-video, es decir, la extensión que le corresponde es .FLV.

VER EJEMPLO / VIEW SAMPLE

VER CÓDIGO DEL EJEMPLO / VIEW SAMPLE CODE

Lo primero que hay que hacer es poner la clase, que podemos utilizar desde el mismo script o con un include desde otro archivo.

Clase para obtejer videos de Youtube:

class YouTubeParser {
var $_urlOut = ‘http://www.youtube.com/get_video?video_id=%s&t=%s’;
var $errMsg = ”;
function getVideoLink($url){
$hash = ”;
if (!preg_match(’/(\?|&)v=([0-9a-z_]+)(&|$)/si’, $url, $m)) {
$this->errMsg = ‘URL no válida’;
return false;
}
$v = $m[2];
if (!($response = file_get_contents($url))) {
$this->errMsg = ‘Imposible leer la p&aagina de Youtube’;
return false;
}
if (preg_match(’/var swfArgs( *)=( *)\{(.*?)\}/si’, $response, $m)) {
if (preg_match(’/”t”( *):( *)”(.*?)”/si’, $m[3], $mm)) {
$hash = $mm[3];
}
}
if (empty($hash)) {
$this->errMsg = ‘Imposible conseguir el enlace’;
return false;
}
return sprintf($this->_urlOut, $v, $hash);
}
}

Y para ejecutar, podemos recibir la variable URL por POST, y utilizar así la clase:

if (isset($_POST['url'])) {
$parser = new YouTubeParser();
$url = trim(stripslashes($_POST['url']));
if (!($link = $parser->getVideoLink($url))) {
echo $parser->errMsg;
} else {
echo ‘<a href=”‘ . $link . ‘”>Descargar video</a>’;
}
echo ‘<br /><br />’;
}

No es en absoluto una clase dificil de utilizar, pero si a alguien le surge alguna duda o problema intentaré ayudar a que se entienda mejor el buen uso que se le puede dar.


Eliminar palabras malsonantes con PHP.

ESCRITO POR Josep Viciana EL 13-08-2008 - EN LA CATEGORÍA PHP, Programación.

En sitios como foros, blogs o cualquier tipo de Web donde cualquiera pueda escribir comentarios, es común que se tenga la necesidad de evitar que la gente escriba según que palabras, como insultos.

Para esto he hecho una pequeña función que facilita la tarea, es realmente muy simple es poco más que un bucle que se repite buscando cada una de las palabras de una lista predefinida, y que si encuentra alguna, la elimina.

La función:

function epm($cadena){
$palabras = 'sex, kill, drugs, fuck';
$palabra = explode(', ',$palabras);
$palabras = count($palabra);
$base = 0;
while($base<$palabras){
$cadena = str_ireplace($palabra[$base],’***’,$cadena);
$base++;
}
return $cadena;
}

Como se puede ver, la lista de palabras que se eliminan están en la variable $palabras, separadas por comas. Para añadir o eliminar palabras de la lista, sólo hay que tener en cuenta este patrón: “palabra, palabra, palabra, etc.”

Hay que notar que utiliza la función str_ireplace, si ponemos esa i delante de replace, no tendrá en cuenta las mayúsculas, y en este caso es algo importante para eliminar tanto Sex, como SEX o sex.

Ejemplos de uso:

echo epm('I want a lots of drugs.'); // I want a lots of ***.

O bien…

$cadena='I will kill you';
$cadena = epm($cadena);
echo $cadena; //I will *** you


Ni sus manos son tan blancas ni son blancas sus palomas.

Algunos derechos reservados. Josep Viciana. 06-01-2009.

Browse Happy logoPagerank