Adroit: otro framework de PHP

adroit.pngAdroit es un framework MVC ligero que nos ayudará a desarrollar nuestros proyectos web.

Aunque hay frameworks muy estables y potentes como puedan ser CakePHP o Zend Framework, hay veces que un framework ligero pueda ser más conveniente.

Adroit nos ofrece entre otras cosas lo siguiente:

  • Orientado a objetos.
  • Estructura MVC.
  • Documentado.
  • Utiliza Smarty como motor de plantillas.
  • Permite centrarte en las áreas importantes (negocios, lógica y presentación).
  • Mantiene el código importante fuera del root web-
  • Integra Ajax de forma sencilla.
  • Requiere PHP5.

Adroit

Vía / PHPDeveloper.org

|

Combinar Flex y PHP mediante Zend Framework

Muy buen tutorial que nos explica como combinar PHP y Flex usando el Zend Framework para crear aplicaciones más completas.
En el ejemplo usarán PHP (mediante el Zend Framework) para llevar la lógica de la aplicación, mientras que Flex se usará para la presentación. Se trata de leer los feeds de DevZone y añadir imágenes de Flickr para cada entrada. Lo primero será pasar el contenido de cada entrada por el Content Analyzer de Yahoo, el cual nos devolverá las palabras clave. Con estas etiquetas accederemos a Flickr y mostraremos la imágen.
flexphp.png
Aunque en este caso se usa el Zend Framework, está claro que se puede hacer con otro framework o directamente desarrollando nosotros todo el código.
En Zend Developer Zone cada día nos sorprenden con algo nuevo.
Flex and PHP: Party in the Front, Business in the Back

PHPUnit: testing en aplicaciones PHP

phpunit.pngPHPUnit es un framework para PHP que nos facilita la creación de juegos de tests y la ejecución de estos y analiza sus resultados. Aunque inicialmente PHP empezó como complemento dinámico para pequeñas páginas web, actualmente PHP se utiliza para desarrollar aplicaciones web complejas, por lo que es importante poder realizar las pruebas pertinentes a nuestro código.

Entre las características nos encontramos con:

  • Forma parte del grupo de frameworks de xUnit
  • Puerto completo deJUnit para PHP5.
  • Soporte para Mock Objects (jMock).
  • Almacena los resultados en una Test Database.
  • Se integra con varias aplicaciones de test.

PHPUnit

XSS mediante HTML no estándar

Cuando se quieren evitar ataques XSS, normalmente en PHP se usan las funciones htmlspecialchars o htmlentities.

Ahora veo un ejemplo en el que un ataque puede evitar estas funciones cuando se crea la página con HTML no estándar. Tenemos el típico ejemplo de un texto que se introduce por un formulario y se presenta como un enlace.

$dato = htmlentities($_GET['dato'], ENT_QUOTES);
echo "<a href=pagina.php?dato=$dato>Enlace</a>";

Si os fijáis bien veréis que el enlace está mal formado y no tiene las comillas en el href. Si metieramos como dato de entrada lo siguiente: ” onclick=alert(null)” (sin las comillas), nuestra página sufriría un ataque XSS y mostraría un mensaje alert.

Non-Standard HTML Fuels XSS Attacks

Almacena la sesión del navegador en la BD con PHP

La mayoría de las aplicaciones web usan la sesión para almacenar información que podemos utilizar en todas las páginas que visitemos, así no será necesario pasarla por parámetro como muchas veces se hace (incorrectamente).
Normalmente la sesión se guarda en un fichero en el servidor, lo cual puede ser un problema, ya que si queremos usar varios servidores en cluster, la sesión no estaría disponible si en la siguiente página que visitamos, el servidor que atiende nuestra aplicación no es el mismo. Yo no soy experto en sistemas, pero si el sistema permite session-aware en el balanceo de carga, no nos encontraremos con este problema.
Si nos encontramos con ese problema y es necesario solucionarlo mediante programación, PHP nos permite gestionar las sesiones, indicando el modo de guardar y leer las sesiones. Para ello existe la función session_set_save_handler(), en la cual indicaremos los métodos para abrir, cerrar, leer, escribir, destruir y liberar sesiones.
En el artículo que referenciamos guardan la sesión en la base de datos, para lo cual habrá que crear una tabla que almacene el ID de la sesión, la información y la fecha de expiración. Las acciones de tratamiento de la sesión usarán esta tabla para almacenar y tratar la información de la sesión. Al abrir y cerrar la sesión no se debe hacer nada, leer leerá de la tabla según el ID dado y si no ha expirado, guardar insertará/modificará en la tabla guardando los datos, destruir borrará los datos de la tabla y liberar sesiones borrará de la tabla las sesiones que hayan caducado.
Storing PHP Sessions in a Database
Vía / PHPDeveloper.org

Guía de novedades de PHP 5.2.x

Aunque ya hace tiempo hablamos de las novedades que trae PHP 5.2.x, hoy vamos a mencionar una serie de artículos creados por IBM en la que se nos explica cada una de estas novedades.

Nuevo gestor de memoria

Aunque PHP ya gestiona por nosotros la memoria utilizada en los scripts, no quita que a veces sea necesario gestionar por nuestra cuenta un recurso tan preciado como la memoria.

En versiones anteriores ya podíamos liberar memoria usando la función unset(), pero en esta versión, PHP nos ofrece dos funciones nuevas con las que controlamos el uso de memoria: memory_get_usage() y memory_get_peak_usage(), ambas nos devuelve el uso de memoria, pero con la diferencia de que la segunda nos devuelve el pico de memoria usada y la primera el uso de memoria en ese momento.

Con estas funciones, cuando nos encontremos en un bloque de código que sepamos que gasta mucha memoria, podremos controlar el flujo de la ejecución dependiendo del uso de memoria, así poder evitar problemas de gasto de recursos o evitar errores. Incluso limitar el uso de memoria a scripts, por ejemplo, si queremos obtener en background los feeds de unos blogs para crearnos un planet, podemos evitar que el script utilice mucha memoria y parar cuando haya llegado a un tope.

Nueva extensión de filtro de entrada

Para evitar ataques por parte de usuarios y para mejorar nuestra seguridad, PHP 5.2 incluye dos tipos de filtros para tratar los datos que nos llegan por los formularios de entrada.

Los filtros son de dos tipos uno de tipo sanitizing (desinfectar), el cual elimina caracteres no deseados de un texto y lo devuelve sin estos, y el otro lógico, el cual hace comprobaciones sobre esos textos.

En ambos casos se usa la función filter_var(), pero dependiendo de si se usa el flag FILTER_SANITIZE_STRING o el FILTER_VALIDATE_INT, realizará cualquiera de los dos filtros.

Nueva extensión JSON

Ni que decir tiene que JSON es parte fundamental en las nuevas aplicaciones realizadas con Ajax, por eso PHP incluye dos funciones: json_encode() y json_decode(), la primera transforma datos de PHP en una estructura JSON y la segunda al revés, datos JSON en una matriz de PHP.

Nueva extensión ZIP

El uso de ficheros ZIP, para comprimir ficheros, puede sernos muy útil en muchos casos, ya no solo por comprimir el tamaño de los archivos, sino también porque agrupa en uno solo varios ficheros. La nueva extensión de PHP usa las funciones de la clase Ziparchive para leer y crear ficheros ZIP.

What’s new in PHP V5.2

Ejecuciones multi-hilo en PHP

Algo fuera de lo común, pero que nos puede ser útil alguna vez, es ejecutar en nuestro script PHP, tareas multi-threading.
Aunque PHP no está preparada para la ejecución de threads, el autor del artículo se crea una clase para tratar estas ejecuciones. La simulación de los hilos lo realiza mediante la funcion proc_open(), la cual ejecuta un comando y abre punteros de archivo para entrada/salida.
Uno de los problemas que veo es el tratamiento de errores, que aunque se obtienen mediante el buffer de salida de error, no creo que se tenga un buen control sobre estos.
Multi-threading strategies in PHP
Vía / PHPDeveloper.org

Phalanger: compilador de PHP para .NET

phalanger.pngPhalanger es una implementación de PHP que permite incluir código PHP en el entorno del framework .NET de forma rápida y compatible con la mayoría del código PHP.
El desarrollador podrá beneficiarse de la facilidad y eficiencia de PHP y del poder y riqueza de .NET. Phalanger compila los scripts PHP en código MSIL, el cual puede ser ejecutado en .NET o Mono.
Phalanger incluye funciones de tratamiento de strings o arrays que han sido reimplementadas, teniendo un buen rendimiento. Lo único malo es que por ahora solo soporta código para PHP4.
Phalanger
Vía / AjaxLine

CodeIgniter: framework para PHP

codeigniter.pngCodeIgniter es otro framework para PHP, una alternativa a otros frameworks que hay disponibles. CodeIgniter es adecuado para desarrollos que no requieran un framework que marque mucho la aplicación, a parte para cuando sea necesario mucho rendimiento.
Pensado para aquellas aplicaciones que se ejecutan en hosting compartido que ejecutan muchas versiones de PHP con diferentes configuraciones. También te puede ser útil si no quieres usar un framework con configuraciones iniciales, o que sea necesaria la línea de comandos.
Lo que más me ha gustado es la documentación que ofrecen, acostumbrado a otros frameworks en los que los inicios son difíciles por la falta de esta documentación.
CodeIgniter
Vía / PHPDeveloper.org

Roadsend Compiler: compilador de PHP

roadsend.pngRoadsend Compiler es un compilador opensource nativo de PHP. Mediante este compilador podremos ejecutar código PHP sin necesidad de un intérprete.
Siendo inicialmente un software comercial, está realizado por una empresa experta en PHP. Actualmente el compilador está disponible para Linux, Windows y FreeBSD, aunque por ejemplo los binarios de Windows los tienes que compilar tú mismo por ahora siguiendo estas instrucciones.
Actualmente solo compila código PHP4, pero de todas formas ofrece buenas posibilidades: compila todo el árbol de código en un único ejecutable, el código compilable no es reversible, permite crear aplicaciones online para Apache y IIS, crear aplicaciones GUI y muchas otras cosas.
RoadSend PHP Compiler
Vía / VT’s Tech Blog