Il linguaggio di scripting
server-side ideato da
Rasmus Lerdorf mette a disposizione numerose funzioni, che inspiegabilmente vengono ignorate dai più, o di cui solitamente si tralasciano alcuni parametri, che ne possono modificare sostanzialmente il comportamento, rendendole in alcuni casi ancora più efficaci della normalità.
Si pensi, ad esempio, alle due funzioni
htmlspecialchars e
htmlentities: com'è noto, il loro compito è, innanzitutto quello di
convertire in entità HTML tutti i caratteri che hanno un significato speciale nel linguaggio di markup, poi quello di operare la stessa conversione per tutti i caratteri che hanno un'entità corrispondente.
Questo implica che, nel caso in cui una determinata stringa contenente caratteri corrispondenti a entità HTML venga processata due volte da una delle due funzioni di conversione, il risultato non sia più quello desiderato, poiché tutti i caratteri "&" parte del codice delle entità verrebbero a loro volta convertiti. Sorprendentemente non tutti si ricordano che l'ultimo argomento disponibile di queste due funzioni permette di
evitare il double encoding.
E che dire dei parametri di
configurazione del file INI di
PHP? Ne esistono alcuni molto utili che dovrebbero essere conosciuti da tutti gli sviluppatori:
session.entropy_file e
session.entropy_length, che permettono di modificare e migliorare il processo di creazione dell'ID di sessione; oppure
session.use_only_cookie per specificare l'utilizzo esclusivo dei cookie come metodo di memorizzazione dell'ID e
session.cookie_httponly per impedirne l'accesso ai linguaggi di scripting
client-side.
In occasione della
ZendCon 2010,
Ilia Alshanetski ha illustrato queste e altre caratteristiche di
PHP, che non sono padroneggiate comunemente da tutti gli sviluppatori tanto da raccoglierle ed esporle in una presentazione intitolata
Hidden Features of PHP. Le slide, utilizzate come supporto, si possono
scaricare dal
blog dell'autore.