Cuando aprendemos un lenguaje (en este caso PHP) de forma autodidacta o parcialmente (un curso en la empresa), hay veces que usamos lo que conocemos porque con eso nos basta, pero no profundizamos más y nos encontramos con que hay cosas que desconocemos y que nos serÃan de utilidad. Por eso, el artÃculo que paso a traducir, nos puede ser de gran ayuda.
Usa ip2long() y long2ip() para guardar/recuperar las direcciones IP en la base de datos en vez de un string. Un string de 15 posiciones ocupa más espacio, cuanto menos llenemos la BD mejor que mejor.
Valida parcialmente la dirección de email con la función checkdnsrr(). Esta función comprueba que el dominio se corresponde a una dirección IP, asà evitamos que se hayan enviado direcciones de correo con servidores erróneos. En el caso de que la validación de la existencia del email sea necesario.
Si usas PHP5 utiliza las funciones para acceso a MySQL mysqli_* en lugar de mysql_*, ya que están optimizadas.
Aprende lo que te ofrece el operador ternario (?:), te facilitará mucho el desarrollo y la comprensión del código una vez creado.
No reinventes la rueda, antes de meterte a hacer lo que ya está hecho, mira si existe en las librerÃas PEAR.
Usa highlight_file() cuando quieras formatear un texto como código PHP.
Deshabilita los logs de errores con error_reporting(0), a parte de ganar en rendimiento, evitas mostrar querys o paths de scripts. Yo personalmente recomendarÃa que te crearas un buen gestor de errores.
Usa gzcompress() y gzuncompress() para comprimir strings grandes para que no ocupen demasiado tamaño en la BD, por ejemplo en un campo BLOB.
Usa parámetros por referencia (&$param) para poder conseguir que la función te devuelva más valores a parte de que devuelve return.
Intenta comprender completamente las “magic quotes” para evitar que te ataquen mediante SQL Injection.
PHPAGA es un gestor web de proyectos, tareas, facturas y preosupuestos, que provee una forma eficiente y centralizada de tener al dÃa tus tareas y actividades.
Entre las posibilidades que ofrece incluye la impresión a PDF de los listados, estadÃsticas por proyecto o persona y resúmenes financieros.
PHP 5.2 es necesario para que funcione, a parte no tiene dependencias de PEAR. Usa UTF-8 tanto para el código como para la base de datos y los gráficos se puestran con el componente Graph de eZ y los gráficos se muestran como SVG. PHPAGA
VÃa / International PHP Magazine
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.
Ya hemos hablado en otras ocasiones sobre frameworks para PHP. La lista va aumentando e intentaremos comentaros los nuevos frameworks que vayan apareciendo.
En este caso se trata de Qcodo, cuya más importante caracterÃstica es que ahorrará tiempo al desarrollador mediante el uso de la tecnologÃa ActiveRecord, la cual generará código para la utilización de la BD automáticamente. Para ello se conectará a la BD y mediante ingenierÃa inversa generará el código necesario para usar la BD.
La verdad es que en las presentaciónes y demostraciones podemos ver cosas que hacen que este framework sea muy llamativo y nos haga cómodo el desarrollo. Qcodo
VÃa / Download Squad
Normalmente no es muy frecuente acceder mediante PHP a SVN, pero nos podemos encontrar con la situación de necesitar obtener archivos de SVN y para ello nada mejor que esta librerÃ.
PHP SVN Client recupera ficheros del SVN sin necesidad de otras aplicaciones. Accede al repositorio SVN mediante el protocolo WebDAV y permite obtener una lista de ficheros en un directorio, recuperar una revisión de un fichero, recuperar los logs de los cambios realizados para un fichero entre dos revisiones y obtener la última versión del repositorio.
$svn = new phpsvnclient;
// Indica el repositorio
$svn->setRespository("http://dominio.com/svn/");
// Obtiene los ficheros de un directorio, la última versión
$files_now = $svn->getDirectoryFiles("/trunk/dir/");
// Obtiene la versión 7 de un directorio
$files_7 = $svn->getDirectoryFiles("/trunk/dir/",7);
// Obtiene la última versión de un fichero
$phpajax_now = $svn->getFile("/trunk/directorio/fichero.php");
// Obtiene la versión 7 de un fichero
$phpajax_7 = $svn->getFile("/trunk/directorio/fichero.php",7);
// Obtiene los logs
$logs = $svn->getRepositoryLogs(2,5);
PHPMaker es una aplicación para Windows que automatiza la generación de scripts para PHP. A partir de una base de datos MySQL, genera los scrips necesarios para ver, buscar, editar y borrar registros de las tablas.
Diseñado para ofrecer gran flexibilidad, dispone de muchas opciones que consiguen diseñar tu aplicación según tus necesidades. La generación de código es limpio y fácil de personalizar, pudiendo ser ejecutado en distintos tipos de máquinas. PHPMaker
VÃa / DirTik