PHPersonalBookmarks

Volevo presentarvi un piccolo progettino portato avanti nei ritagli di tempo libero. Si tratta di un software scritto in php (e stralci di jquery) che permette di gestire direttamente on-line i propri segnalibri. Perciò se avete uno spazio web (o se volete provarlo in locale) potete liberamente scaricare i sorgenti open source e caricarli nel vostro spazio web con un semplice trasferimento ftp o ssh.

Potete iniziare immediatamente a catalogare i vostri segnalibri preferiti e consultarli immediatamente on line ovunque siete. Non necessita di nessun tipo di database perchè si basa tutto su un db flat text.

Chiunque voglia provarlo può scaricarlo, caricarlo ed utilizzarlo immediatamente senza installazioni e configurazioni.

Il codice, nonostante la sua semplicità e leggerezza, permette di svolgere le principali  attività legate alla catalogazione dei propri links. È possibile, ad esempio, creare i link mediante un comodo form ed inserire le informazioni più importanti, cancellare i link direttamente dalla lista mediante l’apposita icona, Eliminare i link per nome, descrizione e tag semplicemente cliccando sulla testata della colonna, mostrare i link una comoda finestra modale per avere un’anteprima del sito che si sta per visitare e condividere in maniera rapida gli url con i propri amici su centinaia si siti e social network.

Se il progetto vi interessa seguite il tag #phpersonalbookmarks su diaspora per essere sempre aggiornati sullo sviluppo.

Vista della lista dei links
Form creazione link
Esempio di sito in finestra modale

[PHP] Contare numero di file in una cartella

Mentre sviluppavo Scribble mi sono imbattuto nell’esigenza di dover conoscere il numero di file contenuti all’interno di una cartella. È così che ho trovato la funzione glob(). Essa permette di ottenere un array contenente la struttura della directory richiesta. Abbinando a glob l’uso di count è possibile ottenere in risposta il numero di elementi contenuto nell’array di risposta e quindi il numero di file nella directory.
Qui di seguito un codice di esempio per l’uso di glob in una funzione:
Bisogna precisare però che glob ha dei limiti:
  • Non riconosce i file nascosti unix;
  • Può risultare più lento rispetto a funzioni simili su grosse quantità di file da analizzare;
  • Non restitisce handle di riferimento per la gestione degli stream.

Didattica PHP: Contare i download di file


Hai un sito vuoi sapere quante volte un tuo file è stato scaricato? Ecco un pratico script che sfrutta i file di testo per poter salvare il numero di download dei vostri file. Il file richiede un file di testo per ogni file ma evita l’uso di database.

Vediamone il codice e analizziamone i passaggi:


// Ottengo il riferimento del file da scaricare
$file=$_GET['f'];

// Se non esiste già, creo la directory 'reports'.
// Qui andranno tutti i file generati con
// i counter dei vari file
if(!is_dir('reports')) {
mkdir('reports', 0777);
chmod('reports', 0777);
}

// Definisco il nome del file report
$filename='reports/'.basename($file).'.txt';

// Se il file del report esiste già, mi occupo di ottenerne il contenuto
// viceversa, definisco il counter a 0
if(file_exists($filename)) {
$handle=fopen($filename,'r');
$counter=fread($handle, filesize($filename));
fclose($handle);
} else {
$counter=0;
}

// Incremento il counter di 1, quindi scrivo il valore ottenuto nello stesso
// file, sovrascrivendone il contenuto.
$counter++;
$handle=fopen($filename, 'w+');
fwrite($handle, $counter);
fclose($handle);
chmod($filename, 0777);

// Infine, dispongo gli header per il donwload e istruisco il parser
// sul file da far scaricare all'utente.
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Transfer-Encoding: binary');
readfile("$file");
exit;


Inizialmente diciamo allo script mediante $_GET di prelevare il link che verrà passato come argomento e di salvarlo nella variabile $file. Fatto ciò controlliamo mediante is_dir se esiste la cartella report dove verranno salvati i file di testo di ogni file contenti i numeri di download. Se essa non esiste ne crea una nuova e mediante chmod le associa il permesso 0777. Ora lo script si appresta a creare la stringa, che fungerà da nome per il file di testo, contenente il nome del programma che si sta scaricando seguito dall’estensione .txt. Si noti che viene usata la funzione basename che dal link $file preleva solo il nome del file privo del path completo.
Una volta fatto ciò si controlla se il file di testo esiste. In caso esso esiste allora prelevo il dato scritto dentro e lo assegno alla variabile $counter altrimenti lo creo e la variabile la imposto pari a 0. Ora lo script non fa altro che incrementare $counter di 1 ($counter++ equivale ad $counter = $counter + 1) e la scrive sul file di testo sovrascrivendo ciò che c’è dentro. Si ha così il file contenente il numero di download del file aggiornato ogni volta che qualcuno clicca sul link di download.

Per utilizzare lo script basta scrivere nella nostra pagina web il link mediante la sintassi:


Ringrazio l’utente del forum di ubuntu-it che ha scritto questo script iniziale sul quale ho poi lavorato e che ho modificato.