El email es uno de los datos más solicitados cuando se desarrolla una aplicación web. Para comprobar que se trata de una dirección de email válida, normalmente se envía un email de confirmación, pero se pueden dar circunstancias en las que no es posible o deseado el envío de ese email, por lo que es necesario realizar otras operaciones para comprobar su existencia.
El post que os paso a continuación nos indica cómo saber si la dirección de email existe usando comandos SMTP. Fácil y sencillo. How to check if an email address exists without sending an email?
Vía / philsci
Social Web CMS es un sistema de noticias social al estilo de Digg o Menéame que está desarrollado en PHP y MySQL y que nos permite crear nuestro clon de forma sencilla.
Permite la inserción de artículos por parte de los usuarios, votar los artículos, realizar comentarios, valorar los comentarios, buscar contenidos, obtener feeds para secciones, categorías y usuarios, disponer de perfiles, mensajes privados … Además dispone de una administración que permite gestionar el anti-spam, bloquear URLs, importar RSS, … Social Web CMS
Excelente extensión para PHP que permite usar OpenCV (Open Source Computer Vision Library) para poder detectar caras en imágenes.
Por ahora dispone de dos funciones: face_count y face_detect, que proporcionan el número de caras encontradas y un array con las coordenadas de la cara. La verdad es que puede ser muy útil para todas las aplicaciones sociales que hay ahora.
Para instalarlo es necesario tener instalado: pkgconfig, libpng, zlib, libjpeg, libtiff y python. PHP Facedetect Extension
Vía / PHPDeveloper.org
dompdf es una librerÃa que permite convertir HTML a PDF, desarrollada en PHP5, leerá hojas de estilo externas, estilos en etiquetas y soporta la mayorÃa de los atributos HTML.
El tratamiento de PDF se hace mediante PDFLib, por lo que es necesaria la extension PDFLib de PECL, la cual mejora el rendimiento y reduce el gasto de memoria.
Admite la mayorÃa de las propiedades y selectores CSS2.1 y los atributos HTML 4.0. Además permite tablas complejas, imágenes PNG, GIF y JPEG, y enlaces, entre otras cosas.
Aún faltan algunos detalles como listas ordenadas, posicionamiento absoluto y relativo, y cuando el fichero tiene demasiado tamaño se toma un tiempo excesivo en generar el PDF. dompdf
VÃa / vinuthomas delicious
Aunque parezca mentira cada vez es más frecuente la necesidad de usar geoposicionamiento en nuestras aplicaciones web, sobre todo si queremos darle este toque web2.0 tan de moda.
En el tutorial que hacemos referencia nos guía paso a paso por todo lo que necesitamos saber para usar Google Maps en nuestras aplicaciones.
Desde una pequeña introducción a lo que es el geocoding, pasando por el uso de Google Maps: obtener key, realizar llamadas al API de Google, explicación de la respuesta devuelta por el API; hasta la obtención de datos mediante PHP y la creación de una clase para tratar con el API. Geocoding with PHP and the Google Maps API
Vía / PHPDeveloper.org
Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla.
Para aquellos que no quieran sufrir lo que hemos sufrido con TwitterPoster (los espacios en blanco es porque la gente actualiza su imagen y no podemos recuperar la de todos los usuarios por el límite en el API de Twitter), les recomiendo usar Twitter mediante CURL.
Os paso un script sencillito que he realizado:
<?php
// Primer hacemos login
$url ="https://twitter.com/sessions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Por si tienen limitación por navegador
curl_setopt($ch, curlOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)");
// Poned una ruta para las cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/temp/');
curl_setopt ($ch, CURLOPT_COOKIEFILE, '/temp/');
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username_or_email=[usuario]&password=[contraseña]");
// Para que funcione el https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, curlOPT_SSL_VERIFYHOST, 2);
curl_exec ($ch);
// Cargamos el home, porque Twitter añade dos campos ocultos para poder publicar por web
$url ="http://twitter.com/home";
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
// Recuperamos los campos ocultos
preg_match('//', $result, $match);
$authenticity_token = $match[1];
preg_match('//', $result, $match);
$siv = $match[1];
// Insertamos el texto
$res = $url ="http://twitter.com/status/update";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'siv='.$siv.'&authenticity_token='.$auth.'&status=[texto]');
curl_exec ($ch);
curl_close ($ch);
unset($ch);
?>
¿Qué fallo tiene este script? pues que si cambian el HTML (campos de formulario, …) o las URLs deja de funcionar, pero al menos no tenemos limitaciones. Eso sí, es más costoso para sus servidores y para los nuestros, porque en vez de hacer una llamada, hacemos 3, y en nuestro caso, a parte parseamos una página para obtener dos campos ocultos.
La verdad es que lo malo que tiene PHP es que tiene bastantes inconsistencias en la nomenclatura y en el orden de los parámetros. Supongo que ha habido gente que cansados de este fallo en PHP han creado el proyecto Ogo, el cual pretende limpiar el código PHP de estas inconsistencias en los nombres de las funciones, a parte de la dificultad de recordarlos.
Lo que pretenden entre otras cosas es que los nombres de las funciones sigan la notación camel case, esto es, las palabras en minúsculas sin separaciones (guiones bajos) y cuando empiece una palabra nueva, la primera letra de la nueva palabra deberá ir en mayúsculas. Asà por ejemplo, si tenemos la función html_entity_decode se transformará en htmlEntityDecode, isset en isSet y is_array en isArray.
Por ahora ofrecen pretenden ofrecer un fork de PHP hasta que se resuelva el problema de compatibilidades. ogoproject
VÃa / dzone