Vandalismi nei commenti

Recentemente ho avuto più di una volta dei vandalismi da parte di un utente che si faceva chiamare “Repliche orologi”, chissà come mai 😊

Beh, caro “Repliche orologi”, mi rivolgo direttamente a te: mi hai fatto 264 commenti, quasi tutti molto vicini con il tempo. Sei riuscito a passare non solo il mio captcha ma anche Akismet copiando il contenuto direttamente dai post.

Ovviamente per fare tutti quei commenti penso tu sia un bot, però ti avvisa lo stesso: prova a premere un’altra volta il tasto di invio dei commenti e ti ritroverai un bel filtro che censurerà il tuo username e il tuo sito, questo solo per te!

Sono disposto ad aggiungere questa funzionalità al comment center, perché una volta e pochi post li posso accettare, ma la seconda e una cosa come più di 200 post no.

Comunque se lo vuoi sapere anche io sono in grado di scrivere degli script e non appena mi sono accorto dei tuoi commenti ci ho messo poco a eliminarli.

Per chi volesse, questo è uno script PHP che consente di fare la lista dei commenti ed eliminare file multipli con un account su un server FTP.

È solo una parte base, ovvero la lista e l’eliminazione tramite un array, ma ci si mette poco tempo, specialmente se si sa il periodo di tempo in cui un bot ha agito, a eliminare tutti i commenti in un solo click.

SQLite Quick Admin

Visto che mi ritrovo più di una volta a lavorare col database SQLite e PHP ho deciso di scrivere questa mini interfaccia grafica per questo tipo di database.

Infatti i primi software di questo genere che avevo trovato avevano due tipi di problemi: o erano talmente datati da non andare con PHP 5, oppure utilizzavano la versione 3 di SQLite, mentre PHP usa la versione 2.x.

Allora ho scritto questa peste di script. Perché è una peste? Perché non fa controlli di sicurezza di nessun tipo.

Per esempio è possibile fare attacchi di SQL Injection, oppure si può tranquillamente eliminare un database o una tabella senza che il software vi chieda la conferma.

Insomma: usate questo script solo in locale, altrimenti perfezionatelo.

Lo rilascio sotto il pubblico dominio (mi vergogno troppo di aver fatto una tale schifezza 😁 ).

Download: SQLite Quick Admin.

Cosa sono gli hook

Spesso quando parlo dello sviluppo dei plugin di Flatoress o in generale dello sviluppo di un sito web dico sempre qualcosa riguardante gli hook, che però non sono un concetto noto a tutti, perciò ho deciso di fare questo post di spiegazione.

Innanzitutto un programma o uno script possono essere divisi in blocchi (più o meno grandi), come inizializzazione, preparazione del contenuto, output del contenuto, chiusura delle risorse utilizzate (connessioni al database etc…).

Lo scopo degli hook è di poter inserire dinamicamente una porzione di codice (per esempio una funzione) in questi blocchi, infatti hook in italiano vuol dire gancio. Talvolta gli hook possono anche sostituire i comportamenti di default di un programma.

Gli hook sono praticamente ciò che rende un programma estendibile.

Per esempio grazie agli hook si può commutare da un sistema di indirizzi che si basa su variabili GET ad un sistema di indirizzi basato sul mod_rewrite più SEO-compatibile: si inserisce una funzione che all’inizializzazione dei parametri “raccoglie” gli URL riscritti e poi si usa un altro hook per creare i link.

Usano gli hook anche grandi progetti come Wordpress o Dokuwiki.

Le caratteristiche pratiche dal punto di vista della programmazione degli hook sono:

  • presenza di funzioni che permettono di aggiungerli, modificarli, rimuoverli o eseguirli
  • un sistema di priorità per eseguire delle porzioni di codice prima o dopo di altre
  • la possibilità di essere chiamati molte volte
  • la possibilità di poterne creare di nuovi dinamicamente

Un primordiale sistema di hook è abbastanza semplice da implementare: è una lista di callback da eseguire. Perciò, per esempio, basta creare un array multidimensionale: nel primo array si inserisce la priorità per chiave e il valore un array con il nome delle funzioni da chiamare (per esempio, in PHP tramite call_user_func).

Spero di essere stato il più chiaro possibile, altrimenti fatemelo sapere via commento.

CSS3 PIE

Ho appena scoperto una cosa che tutti i webmaster/webdesigner ameranno.

Si chiama CSS3 PIE.

È uno script htc, cioè del formato proprietario di Internet Explorer che permette di introdurre nelle versioni 6-7-8 i CSS3.

Tuttavia sarà un lavoraccio usarlo perché dovete introdurlo in ogni elemento con la proprietà non-standard behavior in un foglio di stile sotto commento condizionale perché altrimenti non otterrete un risultato positivo nel validatore CSS.

Poi la cosa che lo rende ancora meglio è che è software libero (Apache License 2.0 o GPL 2.0), così lo potrete usare nei vostri progetti senza limitazioni.

Creare un file SWF per riprodurre un suono

Mi servirebbe un effetto sonoro per una pagina web perciò la scelta migliore è purtroppo il flash.

Con l’estensione ming di php e il codice di gazbming.com ho potuto creare questo file php che salva il file prova.swf che riproduce il file MP3 prova.mp3:

<?php

  Ming_setScale(20.0000000);

  $m = new SWFMovie();
  $m->setDimension(1, 1);
  $m->setBackground(0x00, 0x00, 0x00);

  $m->setRate(31);

  $mp3=fopen('prova.mp3', 'rb');

  $numofframes=$m->streamMp3($mp3);
  while($numofframes&ndash;>0){
    $m->nextFrame();
  }

  #header('Content-type: application/x-shockwave-flash');
  #$m->output();
  set_time_limit(3600);
  $m->save('prova.swf');

Per chiarezza: la quartultima e la terzultima riga sono commentate perché darebbero l’output su schermo.

Ciò che fa questo codice è creare un movie SWF di dimensioni 1×1 e sfondo nero, riprodurre il file prova.mp3 e salvare il movie prodotto nel file prova.swf.

La penultima riga è solo di precauzione: ho provato con una canzone da 4 minuti e la prima volta mi ha dato errore perché i 30 secondi erano passati, poi ho aggiunto un limite di un’ora (3600 secondi) e non ho più avuto problemi.

Il test lo dovrete fare in locale quasi al 100% perché non penso che molti provvedano a dare l’estensione ming di PHP e perché è più comodo avere un file generato una volta per alleggerire il webserver.

Ringrazio di nuovo il sito sopra citato e spero vi sia di aiuto.