Nel Post Creare un RSS Reader in PHP e Javascript abbiamo indirettamente incontrato una tecnica estremamente interessante che permetteva di creare – in pratica – un file Javascript da PHP.
I TAG HTML scripte style, che normalmente puntano rispettivamente a file .js e .css, possono alresì puntare a file .php che a loro volta emettono un echo() formattato correttamente (css o javascript).
Più in generale questa tecnica è valida per qualsiasi linguaggio di scripting lato server che sia in grado (praticamente tutti; JPS, ASP, ColdFusion, ecc…) di emettere un echo() sulla stadard output del canale HTTP del browser.
L’uso di questa tecnica può risultare utile in svariati casi. A parte l’uso particolare esposto nel Post Creare un RSS Reader in PHP e Javascript, troviamo utile questa tecnica in casi di localizzazione. Ad esempio posso emettere un particolare CSS o Javascript in base alle informazioni di localizzazione pervenute allo scripting lato server che, di conseguenza, può prendere tutte le contromisure necessarie.
Invece di creare n file Javascript, ad esempio, per risolvere un problema, posso creare un solo file .php che gestisce tutte le possibilità al suo interno ed emette un’unico file temporaneo!
Evidentemente questo file generato dinamicamente, sia esso CSS che Javascript, non esiste fisicamente sul disco del Web Server. Quello che esiste è un file PHP (o ASP) che, se viene chiamato, emette uno o più output. Sinceramente per quanto riguarda la cache dei browser tutto ciò non dovrebbe dargli fastidio; dopo tutto il browser non esegue una read() fisica del file (una lettura sul disco del Server per intenderci) ma passa sempre tramite il protocollo HTTP e quindi tramite il Web Server (Apache, IIS, ecc…).
Quello che può accadere e che essendo il nome del file statico se l’output varia il browser potrebbe non accorgersene!
Altro uso interessante e simpatico è sulle immagini:
1 | <img src="miofile.php" /> |
Se miofile.php emette un binary output (formattato in modo corretto), posso visualizzare un’immagine!
Provate questo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php $o = array(0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x0F, 0x00, 0x0F, 0x00, 0xC4, 0x10, 0x00, 0x45, 0x45, 0x45, 0xFF, 0xEA, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xCE, 0x00, 0xFF, 0xC9, 0x00, 0xFE, 0x9D, 0x00, 0xFF, 0xFD, 0x13, 0xFF, 0xB4, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x93, 0xFF, 0xFF, 0xC7, 0xFE, 0x2A, 0x00, 0xFE, 0x6D, 0x03, 0x96, 0x96, 0x96, 0xFF, 0xE5, 0x00, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xF9, 0x04, 0x01, 0x00, 0x00, 0x10, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x05, 0x69, 0x20, 0x00, 0x40, 0xA4, 0x68, 0x92, 0x90, 0xB9, 0x98, 0x8F, 0x92, 0x24, 0x83, 0x2A, 0x32, 0x85, 0xA1, 0x18, 0x46, 0xA0, 0x0F, 0x43, 0xC1, 0x88, 0x35, 0x40, 0x4E, 0x47, 0x04, 0xF4, 0x00, 0x0D, 0x40, 0xC2, 0x20, 0x20, 0xEA, 0x9A, 0xB1, 0xE4, 0x2D, 0x20, 0x68, 0x3E, 0x9B, 0x84, 0x82, 0x68, 0x29, 0x40, 0x54, 0xA9, 0x5D, 0x01, 0xE1, 0xB0, 0xA5, 0x22, 0x10, 0xC4, 0xB3, 0x98, 0x2C, 0xBC, 0x12, 0xBF, 0x63, 0xD1, 0xC0, 0x49, 0x77, 0x64, 0x47, 0xC6, 0x6B, 0x15, 0x1B, 0x2B, 0xF1, 0xAC, 0x3A, 0x0E, 0x02, 0x47, 0x28, 0x46, 0x03, 0x04, 0x88, 0x88, 0x84, 0x28, 0x29, 0x00, 0x07, 0x8F, 0x07, 0x5A, 0x23, 0x8C, 0x85, 0x26, 0x93, 0x28, 0x21, 0x00, 0x3B); foreach($o as $v) echo chr($v); ?> |








6
Non ci sono commenti per questo Post
Lascia un commento