Tag: snippet

CakePHP: una semplice struttura per salvare i dati in cache via controller

8 settembre 2011Categoria:php

Ecco una struttura molto semplice per gestire via controller i dati da salvare in cache:

//imposta identificativo dei dati salvati in cache
$cache_id = 'contenuto_xyz';
//imposta un prefisso per la cache costituito da LINGUA_mycache_
Cache::set(array('prefix' => Configure::read('Config.language').'_mycache_'));
//cerca i dati. se la chiave della cache non è impostata, se è scaduta
//o si verifica un errore durante la lettura $data sarà == false
$this->data[$cache_id] = Cache::read($cache_id);
//se i dati non sono in cache
if ($this->data[$cache_id] === false) {

    /*   INIZIO RICERCA/ELABORAZIONE DATI  */
    $data = $this->XYZ->find('all');
    /*  FINE RICERCA/ELABORAZIONE DATI  */

    //scrittura dell'elemento in cache
    Cache::set(array('prefix'=>Configure::read('Config.language').'_mycache_'));
    Cache::write($cache_id, $data );
}
//imposta la variabile con i dati
$this->data[$cache_id] = $data;

Leggi tutto…

CakePHP: creazione di un modello on the fly

27 giugno 2011Categoria:php

Durante lo sviluppo di un’applicazione con CakePHP può essere necessaria la creazione di un modello “al volo” non definito a priori come classe.

Ecco come fare con poche righe di codice:

Leggi tutto…

PHP: leggere un file .csv e ricavare un array

25 giugno 2011Categoria:php

Una funzione per leggere un file .csv e ricavarne un array:

Leggi tutto…

PHP: inserire il carattere di newline in un file con fwrite()

13 febbraio 2011Categoria:php

php-logoPer inserire un carattere di newline (un ritorno a capo) quando si scrive un file di testo con fwrite() si deve utilizzare la sequenza di caratteri \r\n.

Ad esempio per gestire un file di log si può utilizzare la seguente funzione che scrive ogni messaggio in una nuova linea alla fine del file impostato:

function writeLog($message){
	//posiziona il puntatore alla fine del file indicato
	//se il file non esiste prova a crearlo
	if( !$fileHandle = fopen('log.txt', 'a+') ){
		echo "impossibile aprire il file";
		return false;
	}
	//scrittura della riga di log
	fwrite($fileHandle, date('d/m/Y H:i:s').' - '.$message."\r\n");
	//chiusura dell'handle
	fclose($fileHandle);
}

Per utilizzare la funzione:

writeLog("esempio: messaggio di log");

NOTA: inserire la sequenza newline come .”\r\n” utilizzando i doppi apici, con i singoli non funziona.

CakePHP: escludere una directory dall’url rewriting

5 febbraio 2011Categoria:php

Tramite il file .htaccess posizionato nella root di un’applicazione web sviluppata con CakePHP viene gestito l’url rewriting per tutte le chiamate. Nel caso in cui si voglia escludere una directory dall’applicazione delle regole impostate (ad esempio se si vuole installare un blog nella root) è sufficiente inserire una riga di codice nel file dopo la direttiva “RewriteEngine on“:

RewriteRule ^(blog).* - [NC,L]

Il codice completo del file .htaccess diventerà quindi:

Leggi tutto…

ActionScript: richiamare una funzione tramite stringa

31 gennaio 2011Categoria:actionscript

Un esempio di come richiamare una funzione tramite stringa in ActionScript 2 e ActionScript 3:

//definizione di una funzione di esempio
function test(){
	trace('Esecuzione funzione test');
}

//Memorizza un riferimento allo scope attuale
var ref : Object = this;
//Imposta il nome della funzione da richiamare
var functionName : String = 'test';
//Tramite il riferimento "ref" è possibile richiamare la funzione
ref[functionName]();

PHP: eseguire l’output di una stringa durante l’esecuzione di uno script con ob_start(), ob_flush(), flush()

10 gennaio 2011Categoria:php

php-logoDurante l’esecuzione di uno script PHP server side potrebbe essere necessario informare l’utente sull’andamento dell’operazione in corso, specialmente nel caso in cui il tempo di esecuzione sia particolarmente lungo.

Per questa operazione è possibile utilizzare le funzioni ob_start(), ob_flush() e flush() per la gestione dell’output.
Di seguito un esempio di codice per testare il funzionamento ricavato da un articolo del blog  joeyrivera.com :
Leggi tutto…

CakePHP: impostare il layout automaticamente in base alla sezione del sito

23 dicembre 2010Categoria:php

All’interno di un controller è possibile impostare il layout della pagina tramite la proprietà $this->layout.
Per impostare una regola generale per la gestione dei layout dell’applicazione è possibile scrivere una funzione apposita all’interno dell’app_controller.

In un caso reale potremmo ad esempio avere 4 layout diversi:

  1. public: per la visualizzazione del sito pubblico
  2. admin: per il pannello di amministrazione
  3. fornitore: un layout che verrà visualizzato agli utenti che eseguono il login come fornitori
  4. ajax: per le richieste asincrone tramite javascript

Leggi tutto…

Redirect 301 in PHP

20 dicembre 2010Categoria:php

Per eseguire un redirect 301, che indica un cambio permanente dell’url di una pagina web, bisogna inserire all’inizio della pagina il seguente codice:

<?php
	header("HTTP/1.0 301 Moved Permanently");
	header("location: http://www.techwave.it/blog");
	exit();
?>

Javascript snippet: codifica completa di una stringa (full encode)

5 giugno 2010Categoria:javascript

La funzione javascript escape() non codifica i caratteri + e / e può essere un problema quando si devono salvare dati testuali ad esempio tramite una funzione ajax.

Ecco quindi una funzione per eseguire la codifica completa di una stringa:

/**
 * Codifica completa di una stringa. Esegue l'escape e codifica anche i
 * caratteri + e / .
 *
 * @param txt Stringa da codificare.
 * @return encodedTxt Stringa codificata.
 */
function fullEncode(txt){
	var encodedTxt = escape(txt);
	encodedTxt = encodedTxt.replace("+", "%2B");
	encodedTxt = encodedTxt.replace("/", "%2F");
	return encodedTxt;
}