Suhosin es un sistema avanzado de protección para PHP. Ha sido diseñado para proteger los servidores y a los usuarios de defectos conocidos y desconocidos del core de PHP y de las aplicaciones realizadas con PHP.
Viene en dos partes independientes que pueden ser usadas de forma separada o en combinación. La primera de ellas es un pequeño parche para el core de PHP que implementa unas protecciones de bajo nivel para solucionar vulnerabilidades desbordamiento del buffer y de formateo de cadenas de texto. La segunda parte es una extensión PHP que implementa las otras protecciones.
Suhosin es compatible a una instalación normal de PHP, lo cual significa que a su vez lo es de extensiones de terceros como ZendOptimizer. Suhosin
VÃa / PHP Security Blog
Ya en otras ocasiones hemos hablado de frameworks de PHP y para aumentar la lista y las alternativas, vamos a hablar de un nuevo framework de PHP pensado en facilitar el desarrollo con Ajax.
Se trata de AjaxCore, un framework cuyo propósito es facilitar el desarrollo de aplicaciones web con Ajax, encargándose de la generación del código Javascript necesario. Usa la librerÃa de Javascript prototype para controlar el uso de las llamadas XMLHTTPRequest. AjaxCore
VÃa / Ajaxian
Algo muy importante a la hora de desarrollar aplicaciones en Ajax es ofrecer la opción no-Ajax, y para ello es necesario detectar cuando la petición se realiza mediante Ajax, algo muy sencillo gracias a una cabecera que mandan los navegadores modernos:
Horde es otro framework PHP que ofrece las tÃpicas herramientas para crear aplicaciones web: configuración de la aplicacion, compresión, detección de navegador, MIME y mucho más.
Horde está usa PEAR en su código, algo que a mà personalmente no me entusiasma mucho. A parte da instrucciones para mejorar el rendimiento (tunning). No solo funciona con Apache, sino con otros servidores web como IIS.
Dentro de este proyecto, se reúnen otros proyectos como una aplicación web, una suite groupware, gestor de tickets, visor de repositorios, etc… Horde
Curioso script que nos permite añadir variables a nuestras CSS usando para ello PHP y htaccess. No es algo que recomendaría hacer por tema de rendimiento, pero sí para proyectos en los que quienes realicen las páginas no tenga demasiado conocimiento de desarrollo web.
El proceso es sencillo, las css mediante Apache se redireccionan a un script PHP, en las CSS se crean variables del siguiente modo $color: #FFF; y luego el nombre de la variable se usa en cada estilo. El PHP parsea el fichero CSS y sustituye cada aparición de la variable por su correspondiente valor. Se cachea el resultado y se muestra.
Puede que haya modos más eficientes, como que el archivo CSS realmente no exista, y cuando sea así, se ejecute el script y se cachee, así la próxima vez que se acceda, no se pasa por el script PHP. How to Add Variables to Your CSS Files
Vía / CSS Globe
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.