Cuando estoy desarrollando para PHP siempre hago uso de la consola del navegador, antes de Firebug, pero ahora me he pasado a Firefox Web Console. Este plugin permite debuggear en la consola de Chrome o en la de Firefox (no Firebug).
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.
PHPillow es una librería PHP que nos permite interactuar con CouchDB (base de datos documental de Apache basada en JSON).
Ahora que el NoSQL es una alternativa a las bases de datos relacionales, esta librería nos ayudará bastante a la hora de realizar nuestra aplicación, ya que el código es bastante sencillo.
class myBlogDocument extends phpillowDocument {
protected static $type = 'blog_entry';
protected $requiredProperties = array( 'title', 'text', );
public function __construct() {
$this->properties = array(
'title' => new phpillowStringValidator(),
'text' => new phpillowTextValidator(),
'comments' => new phpillowDocumentArrayValidator( 'myBlogComments' )
);
parent::__construct();
}
protected function generateId() {
return $this->stringToId( $this->storage->title );
}
protected function getType() {
return self::$type;
}
}
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
Cuando se exporta la versión de desarrollo de WordPress a otro dominio, nos encontramos con el problema de las URLs. WordPress permite modificar las URLs fácilmente desde el wp-config mediante WP_HOME y WP_SITEURL. Desgraciadamente, WP puede estar lleno de URLs en la BD como en wp_options, o directamente en posts, …
Para solucionar esto existe un script que realizar esta tarea por nosotros directamente sobre la BD.
Contact Form 7 es uno de los plugins de WordPress más utilizados, ya que nos permite incluir formularios de contacto de forma sencilla en nuestros blogs. El problema viene cuando queremos añadir validaciones a los campos del formulario. Una forma sencilla, quizás haya un plugin que lo haga, es editar el functions.php y añadir un action al init que compruebe los valores de $_POST y devolver el JSON oportuno:
add_action('init', 'comprueba_form', 1); // prioridad 1 para que actue antes que el plugin
function comprueba_form() {
if ( 'POST' == $_SERVER['REQUEST_METHOD'] &&
isset( $_POST['_wpcf7_is_ajax_call'] ) &&
$_POST['_wpcf7'] == '1') { // _wpcf7 es el id del formulario para diferenciarlos
// comprobaciones
if ($_POST['campo'] != 'valor') {
echo '{"mailSent":false,"into":"#wpcf7-f2-p813-o1","captcha":null,"message":"El campo 'campo' falla.","onSentOk":null}';
exit();
}
}
}