Category Archives: Linguaggi

CSSHttpRequest (CHR): AJAX tramite CSS

Pubblicato da

Il trasporto delle informazioni AJAX generalmente avviene tramite XML, il famoso oggetto XMLHttpRequest.
E’ possibile, però, sfruttare anche CSS tramite il metodo CSSHttpRequest

Le richieste sono limitate al metodo GET invocando la funzione CSSHttpRequest.get(url, callback):

    CSSHttpRequest.get(
        "http://www.nb.io/hacks/csshttprequest/hello-world/",
        function(response) { alert(response); }
    );

I dati sono codificati sul server in una stringa URI compressa di 2KB (limite per Internet Explorer) e serializzata in un comando CSS @import con uno schema URI modificato del tipo about: . La risposta è decodificata e restituita alla funzione come stringa:

@import url(about:chr:Hello%20World!);

Esempi

Downloads

Link: CSSHttpRequest

I temi WordPress e la decodifica di eval gzinflate base64_decode

Pubblicato da

Sto utilizzando spesso WordPress come base di partenza per alcuni lavori “semplici”. La grafica la attingo dall’enorme serbatoio di temi gratuiti che è possibile trovare su web.
Nei temi è frequente trovare il file functions.php che aggiunge funzioni al normale set di WP.
I creatori (o anche i semplici modificatori) di temi inseriscono queste funzioni per gestire da remoto i backlink che compaiono, ad esempio, nel footer e che possono essere usati anche per pubblicità, SEO ecc.
Alcuni di questi link sono assolutamente leciti, quando riportano gli autori del tema ma spesso ci si ritrova a sponsorizzare siti pornografici o che contengono codice maligno.
E’ importante quindi dare un’occhiata al codice e nel caso modificarlo.
Nel file functions.php il codice è, però, camuffato per mezzo di una funzione. Ossia ci troviamo di fronte a qualcosa del genere

eval(gzinflate(base64_decode(‘DdFHrqNYAEDRrfSsqsQA/AgGlXpAMCYaTHrApEXOObP6/ju4Oj
fbo/Z3cVd93kZr9juOlowi/kuzZEiz37+EVJHm6RO
….

Vediamo come fare per renderla in chiaro

Creiamo un file decodifica.php

<?php
echo “1. Leggo codificato.txt\n”;
$fp1 = fopen (“codificato.txt”, “r”);
$contents = fread ($fp1, filesize (“codificato.txt”));
fclose($fp1);
echo “2. Decodifico\n”;
while (preg_match(“/eval\(gzinflate/”,$contents)) {
$contents=preg_replace(“/<\?|\?>/”, “”, $contents); eval(preg_replace(“/eval/”, “\$contents=”, $contents)); } echo “3. Scrivo su decodificato.txt\n”; $fp2 = fopen(“decodificato.txt”,”w”); fwrite($fp2, trim($contents)); fclose($fp2);
?>

e due file di testo
codificato.txt – dove copiamo il contenuto da decodificare
decodificato.txt – file di testo vuoto con permessi settati a 666

Mettiamo tutti e tre i file nella root del nostro server.

Nel browser richiamiamo http://www.miodominio.it/decodifica.php
e poi http://www.miodominio.it/decodificato.txt per leggere la funzione in chiaro.

Link: scarica esempio

Come capire quali social network il tuo visitatore utilizza

Pubblicato da

Nell’ottimizzazione di un sito riveste una parte rilevante l’analisi delle abitudini di navigazione del visitatore.

In questi ultimi periodi hanno assunto un’importanza notevole i cosiddetti social network, infatti in calce ai post di un blog così come agli articoli di un portale sono comparse tantissime icone per segnalare i contenuti.
I social network sono, però, divenuti tantissimi e inserire le relative icone significa fare un pastrocchio come questo (clicca per ingrandire)

Come capire quali social network il tuo visitatore utilizza

Una delle soluzioni è capire quale social network viene utilizzato dal visitatore in preponderanza (n.b. non stiamo parlando di link di provenienza, cioè di qualcosa che possiamo notare dalle statistiche del sito) e limitare la pubblicazione dei badge/pulsanti.
Per questo possiamo usare SocialHistory.js

Si sfrutta il fatto che i CSS colorano in maniera diversa i link dei siti già visitati. Leggendo queste info è possibile ricavare il social network di maggiore utilizzo.
Non è un sistema perfetto e quelli di Firefox stanno già lavorando per vanificare questo “bug” potenzialmente pericoloso (potrei sfruttare la stessa tecnica per sapere da quale sito di banca provieni).
La tecnica è però interessante.

Materiale per questo post: http://azarask.in/blog/post/socialhistoryjs/

YAML: molto più di un css framework

Pubblicato da

YAML: molto più di un css framework

Oltre ai framework di sviluppo PHP sono molto in voga in questi tempi i framework CSS, ossia tutto un insieme di istruzioni CSS che facilitano la creazione di layout compatibili con le varie versioni dei browser , accessibili e standard.
“Yet Another Multicolumn Layout” (YAML) è un framework (X)HTML/CSS di buon successo e con un’estesa community di utilizzatori.
Sul sito è possibile vedere degli esempi di layout che è possibile creare con pochissime istruzioni. Insomma lo scopo è sempre quello di non reinventare la ruota ogni volta e concentrare gli sforzi dello sviluppatore in altre direzioni.

YAML: molto più di un css framework

Un discorso a parte merita lo YAML Builder, un’applicazione AJAX che si basa sul framework YAML per creare al volo layout puliti e personalizzati. Il vantaggio rispetto alla creazione manuale del codice è quello di risparmiare tempo anche nell’apprendimento della sintassi e delle convezioni utilizzate all’interno del framework.

Veramente un ottimo progetto.

CGI Error con PHP4 e IIS

Pubblicato da

Una veloce tip su un errore che capita di frequente quando si utilizza PHP su IIS. L’errore è il seguente

CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers

Questo errore può manifestarsi non sistematicamente nell’utilizzo di PHP su IIS, ma anche solo quando si cerca di settare un file come “php.ini“. Una soluzione, che a me ha funzionato, è quella di avviare PHP come ISAPI.
Nel pannello Plesk si trova questa opzione nella sezione “Setup”

Introduzione al servizio Cron su Plesk

Pubblicato da

Cos’è il Cron

E’ un servizio delle macchine UNIX che serve per programmare nel tempo un comando. Con Cron definiamo il servizio, con Crontab il suo file di configurazione . Ad esempio, attraverso un Crontab, si può decidere di schedulare (dall’inglese ‘to schedule’ ) il richiamo di uno script PHP o Perl perchè quest’ultimo effettui un’operazione in dato momento o sistematicamente ogni periodo di tempo impostato.

Il settaggio di un crontab è facilitato se disponiamo per la gestione del nostro server di un pannello di controllo Plesk.

Leggi tutto

Creare menù evoluti in DHTML online

Pubblicato da

Creare menù evoluti in DHTML online

Dopo l’articolo sulla creazione dei CSS online è il turno di IzzyMenu. Un’applicazione online che permette in pochi step di creare gradevoli menù con effetto hover e la possibilità di sub-menu a discesa.
Si crea tutto online potendo scegliere tra moltissimi stili ed infiniti abbinamenti di colori ed effetti. Al termine della creazione si scarica tutto il pacchetto: codice HTML, Javascript, CSS ed eventuali immagini utilizzate per la creazione del menù.

Creare menù evoluti in DHTML online

Creando un account presso IzzyMenu è possibile salvare più menù realizzati, avendoli a disposizione per altri eventuali lavori.

Creare CSS al volo

Pubblicato da

Creare CSS al volo

Chi non possiede strumenti professionali com Adobe Dreamweaver può incontrare difficoltà nello scrivere i famosi fogli di stile, i CSS. Con Dreamweaver ci si può concentrare sull’impatto visivo del testo e lasciar scrivere il codice all’applicazione. Il vantaggio è nella velocità e nella correttezza del codice.

Esistono però anche degli strumenti online che ci permettono di scrivere al volo i CSS. Ho provato CSS Type Set e mi è sembrato uno strumento semplice ma efficace. Mi permette di ottenere velocemente fogli di stile semplici da cui partire per un progetto nuovo.
Lo trovo anche un utile strumento didattico.

iPaper, il sostituto di PDF?

Pubblicato da

iPaper di Scribd è un nuovo formato di documento espressamente realizzato per internet.
Funziona come un video di YouTube e quindi può essere integrato come applicazione Flash in ogni pagina web.
PDF, Word, PowerPoint e tanti altri formati possono essere visualizzati come iPaper.
Qual è il vantaggio? Il 99,9% dei browser supporta Flash ma non tutti hanno Acrobat per la visualizzazione del PDF o Microsoft PowerPoint o altri componenti della suite Office.
In poche parole si ha la sicurezza di veicolare un contenuto visibile dalla maggioranza dei navigatori del web.
Un altro vantaggio è quello che si può guadagnare attraverso un sistema di annunci gestito direttamente da Scribd.

La funzionalità e la semplicità del sito di iPaper sono un plus per questa web application.

Seguendo il link potete vedere una prova.
Leggi tutto

Javascript e CSS: una barra dei comandi sempre nell’angolo in basso a destra

Pubblicato da

Può capitare, nella creazione di applicazioni per il web, di avere la necessità di una barra dei comandi che abbia una posizione assoluta rispetto allo schermo e non rispetto alla pagina. Questa necessità si ha soprattutto quando la quantità di dati causa uno scroll eccessivo della pagina.
Per fare questo basta un po’ di CSS e di Javascript.

Innanzitutto il CSS. Niente di particolare, dà semplicemente uno stile alla barra dei comandi

#topbar
{
PADDING-TOP: 5px;
PADDING-BOTTOM: 5px;
PADDING-RIGHT: 5px;
PADDING-LEFT: 5px;
VISIBILITY: hidden;
BORDER-TOP: black 1px solid;
BORDER-BOTTOM: black 1px solid;
BORDER-RIGHT: black 1px solid;
BORDER-LEFT: black 1px solid;
WIDTH: 450px;
FONT-FAMILY: Tahoma;
POSITION: absolute;
BACKGROUND-COLOR: white
}

e poi il javascript che oltre alle istruzioni per tenere la barra sempre ad una stessa posizione, contiene una funzione closebar() per la chiusura della stessa ed un gestore di cookie (la chiusura della barra setta il cookie come preferenza per la sessione in corso).

var persistclose = 1
var startX = 3
var startY = 3
var verticalpos = "frombottom"
function iecompattest()
{
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
function get_cookie(Name)
{
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0)
{
offset = document.cookie.indexOf(search)
if (offset != -1)
{
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
function closebar()
{
if (persistclose)
document.cookie="remainclosed=1"
document.getElementById("topbar").style.visibility="hidden"
}
function staticbar()
{
barheight=document.getElementById("topbar").offsetHeight
var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
var d = document;
function ml(id)
{
var el=d.getElementById(id);
if (!persistclose || persistclose && get_cookie("remainclosed")=="")
el.style.visibility="visible"
if(d.layers)el.style=el;
el.sP=function(x,y){this.style.right=x+"px";this.style.top=y+"px";};
el.x = startX;
if (verticalpos=="fromtop")
el.y = startY;
else
{
el.y = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
el.y -= startY;
}
return el;
}
window.stayTopLeft=function()
{
if (verticalpos=="fromtop")
{
var pY = ns ? pageYOffset : iecompattest().scrollTop;
ftlObj.y += (pY + startY - ftlObj.y)/8;
}
else
{
var pY = ns ? pageYOffset + innerHeight - barheight: iecompattest().scrollTop + iecompattest().clientHeight - barheight;
ftlObj.y += (pY - startY - ftlObj.y)/8;
}
ftlObj.sP(ftlObj.x, ftlObj.y);
setTimeout("stayTopLeft()", 10);
}
ftlObj = ml("topbar");
stayTopLeft();
}
if (window.addEventListener)
window.addEventListener("load", staticbar, false)
else if (window.attachEvent)
window.attachEvent("onload", staticbar)
else if (document.getElementById)
window.onload=staticbar

Nel <BODY> del html la barra è un layer così richiamato


<div id="topbar">
<table width="100%">
<tr>
<td width="99%">
<strong>Barra dei comandi</strong>. <br />
Da qui puoi stampare o <a href="javascript:location.replace(location.href)">effettuare calcoli</a> in questa pagina</td>
</tr>
</table>
</div>

Qui una demo dell’effetto e qui lo zip dell’esempio.
Funziona con Firefox e Internet Explorer 6 e 7.