MODx es lo que se llamarÃa un CMF (Content Management Framework), una mezcla entre CMS (Content Management System)y framework. Realizado en PHP, permite realizar aplicaciones de forma sencilla, validando código XHTML, con layouts CSS y con utilización de Ajax.
A parte de tener en cuenta los estándares web y tratar con Ajax (gracias a script.aculo.us), hay que añadir que en los navegadores más comunes, dispone de un instalador paso a paso, hace uso de FCKeditor, diferencia entre las sesiones de usuarios y de gestores de la aplicación, y exporta a formatos como PDF o Word, entre otras cosas. MODx
Gracias Bentejuy por el aviso.
Aunque a algunos puedan parecerle consejos obvios, no hay que olvidar que no todo el mundo que programa en PHP controla el lenguaje.
No usar register_globals: da igual que sea PHP6 o anterior, no se deberÃa usar, de todas formas, a partir de PHP6 no será posible usarlas.
No usar magic_quotes: al igual que en el punto anterior, en PHP6 desaparecerá esta opción, además de añadir de que se permita o no su uso, no se deberÃan utilizar.
No usar variables predefinidas largas: Si usas $HTTP_POST_VARS o $HTTP_GET_VAR deberás cambiarlas por las respectivas $_SERVER, $_COOKIE, $_GET, $_POST, $_FILES…
Usar preg en lugar de ereg: en el uso de expresiones regulares deberemos usar las funciones preg (compatibles con Perl).
No inicializar variables con el operador referencia: cuando hagas algo del estilo $var =& new objeto(); deberá asignarlo sin el operador referencia porque te dará un error E_STRICT.
El formato de compresión ZIP es uno de los más usados y siempre puede sernos de ayuda saber cómo manejarlo, por ejemplo para permitir que nuestros usuarios nos envien ficheros en zip y no tenerles que enviar varios ficheros de uno en uno, cosa que suele sacar de quicio.
En PHP, para leer un fichero zip debemos usar la librerÃa php_zip que ha sido desarrollada por Guido Draheim y que se puede bajar en: http://pecl.php.net/package/zip.
El uso es sencillo y tan solo dispone de unas pocas funciones:
zip_close: cierra un fichero zip.
zip_entry_close: cierra una archivo contenido en el zip.
zip_entry_compressedsize: nos devuelve el tamaño comprimido de un archivo contenido en el zip.
zip_entry_filesize: nos devuelve el tamaño real del archivo contenido en el zip.
zip_entry_name: nos devuelve el nombre del archivo contenido en el zip.
zip_entry_open: abre para lectura un archivo contenido en el zip.
zip_entry_read: lee un archivo contenido en el zip.
zip_open: abre un fichero zip.
zip_read: lee el siguiente archivo contenido en el zip.
Un simple ejemplo de cómo leer información de un fichero zip serÃa el siguiente. Disponemos de una página HTML que tiene un formulario para enviar un fichero:
<form action="zip.php" method='POST' enctype='multipart/form-data'<br />
<p>Seleccione un fichero ZIP para enviar
<br />
<input type="file" name="fichero" /<br />
<br />
<input type="submit" value="Enviar" /></p<br />
Y disponemos de un script PHP (en este caso se llama zip.php) que nos devuelve los archivos contenidos en el zip.
LinkedPHP es una librería PHP que hace uso de la librería PECL de OAuth para hacer uso del API de LinkedIn. Según veo no se trata de una librería completa, y además prefiero utilizar la librería normal, pero bueno, es una librería que nos puede venir muy bien si vamos a tratar con la API de LinkedIn.
Siguiendo con AJAX, hoy vamos a realizar un ejemplo que puede ser útil para los usuarios de WordPress. Se trata de un marco que muestra una lista con las entradas de nuestro blog, con paginación y efecto de fundido para darle más vistosidad.
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.
Movistar tiene una API para PHP muy sencillita que permite enviar SMS desde un número que tenga contrato con ellos de forma increíblmente sencilla.
Para poder enviar los SMS primero hay que darse de alta, para lo cual hay que mandar un SMS con texto ‘CLAVE’ al 22770, recibes otro SMS con una password y ya puedes enviar SMS desde tus aplicaciones, aunque eso sí, no son gratuitos y te costará lo mismo que tengas contratado.
include "APISMS.php";
$sms = new MensajeriaWeb();
$log = "6xxxxxxxx"; // Tu telefono
$pwd = "xxxxxx"; // password que te han mandado vía SMS
$dest = "6xxxxxxxx"; // telefono de destino
$msg = "texto+del+mensaje"; // Mensaje
$sms->EnviaMensaje($log, $pwd, $dest, $msg);