He tenido que añadir un sistema de captcha en el blog porque el spam me esta matando, mira que he creado filtros personales que más o menos no son el estándar en los blogs, pero sin utilizar akismet he podido retenerlos un tiempo.
Ahora las anotaciones inferiores a un ID 150 (te das cuenta del ID en la url cuando comentas) tienen que escribir al inicio del comentario el numero del indentificador, si no se hace el comentario no es guardado. Es un sistema un poco tonto, lo suyo seria un captcha en condiciones pero teniendo en cuenta que muy poca gente suele escribir en las anotaciones antiguas tampoco es tan molesto.
Es cosa mía o el sistema de refers de google-analytics es un poco espeso?, la verdad que como sistema para saber cuantas visitas tienes esta bastante bien, pero luego deja de contar.
Así que me puesto manos a la obra y me he creado un sistema de refers, inspirado en MINT y en google, de esta forma puedo poner el log.js en cualquier pagina.
Montarse un sistema de MVC te ahorra bastante trabajo.
El modelo
class Log extends AppModel {
//hereda las funcionas de AppModel y linkea a la tabla logs
}
El controlador
<?php
//url: log/save
class LogController extends AppController {
function save() {
$title = p('title');
$refer = strtolower(p('refer'));
if($refer) {
$url = @parse_url($refer);
$host = isset($url['host']) ? preg_replace('!^[w]{3,}\.!','',$url['host']) : '' ;
$myhost = @$_SERVER['HTTP_HOST'];
if($myhost != $host) {
$log = new Log;
$log->save(array(
'page' => $title,
'host' => $host,
'time' => time_timestampToMysql(time()),
'refer' => $refer
));
}
}
exit;
}
}
?>
Y por ultimo el disparador que envia los datos al controlador.
var Log = {
save: function() {
new Ajax('/log/save', {postBody: {'refer':document.referrer,'title':document.title}}).request();
}
};
Window.onDomReady(Log.save);
Es muy sencillo pero menos da una piedra jeje.