<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>friimaind in the blog - Massimiliano Monaro - Programmatore PHP Mestre Venezia &#187; programmazione</title>
	<atom:link href="http://blog.friimaind.it/category/programmazione/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.friimaind.it</link>
	<description>Massimiliano Monaro - Programmatore PHP Mestre</description>
	<lastBuildDate>Thu, 15 Sep 2011 07:43:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Google AJAX Library: differenze tra jsapi e chiamata diretta</title>
		<link>http://blog.friimaind.it/28/07/2010/google-ajax-library-differenze-tra-jsapi-e-chiamata-diretta/</link>
		<comments>http://blog.friimaind.it/28/07/2010/google-ajax-library-differenze-tra-jsapi-e-chiamata-diretta/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 13:47:36 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=200</guid>
		<description><![CDATA[Da molto tempo, in ogni mio progetto, utilizzo la Google AJAX Library. Questo fantastico servizio consente di richiamare jQuery, Prototype, jQueryUI ecc&#8230; direttamente dai server di Google con un notevole risparmio di banda, spazio e aumento della sicurezza. Vi consiglio una lettura interessante direttamente dal sito ufficiale! Per utilizzare questo servizio esistono due modalità: la [...]]]></description>
			<content:encoded><![CDATA[<p>Da molto tempo, in ogni mio progetto, utilizzo la Google AJAX Library. Questo fantastico servizio consente di richiamare jQuery, Prototype, jQueryUI ecc&#8230; direttamente dai server di Google con un notevole risparmio di banda, spazio e aumento della sicurezza. Vi consiglio una lettura interessante direttamente dal <a href="http://code.google.com/intl/it-IT/apis/libraries/">sito ufficiale</a>!</p>
<p>Per utilizzare questo servizio esistono due modalità: la chiamata tramite jsapi o tramite il classico richiamo &#8220;script&#8221;</p>
<p>Oggi ho dedicato 5 minuti per un semplice confronto delle prestazioni ottenute con i due metodi. E il risultato è stato veramente interessante!<br />
Ho creato una pagina html completamente vuota, solo head e body con i richiami alle tre librerie che utilizzo quotidianamente: jquery, jqueryui e swfobject.</p>
<p>Sono infatti abituato ad utilizzare il metodo seguente (JSAPI):</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">&lt;script src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt; 
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span> 
  google.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;jquery&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;1.4.2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  google.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;jqueryui&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;1.8.0&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  google.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;swfobject&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;2.2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
&lt;/script&gt;</pre></div></div>

<p>Grazie al nostro Firebug ho ottenuto questi dati (vi allego uno screenshot):</p>
<p><strong>Caricamento tramite JSAPI</strong></p>
<p><a href="http://blog.friimaind.it/wp-content/uploads/jsapi1.JPG"><img class="alignnone size-medium wp-image-205" title="jsapi" src="http://blog.friimaind.it/wp-content/uploads/jsapi1-300x54.jpg" alt="jsapi" width="300" height="54" /></a></p>
<p><strong>Dimensione della pagina: </strong>84.2 KB<br />
<strong>Tempo di caricamento: </strong>795ms</p>
<p>Fatto questo ho provato a modificare il richiamo alle librerie con il classico richiamo &#8220;script&#8221; come segue:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js&quot;</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Ho svuotato la cache e ricaricato il tutto. Questi sono i miei risultati ottenuti:</p>
<p><strong>Caricamento tramite classico richiamo script</strong></p>
<p><a href="http://blog.friimaind.it/wp-content/uploads/script-diretto.JPG"><img src="http://blog.friimaind.it/wp-content/uploads/script-diretto-300x48.jpg" alt="script diretto" title="script diretto" width="300" height="48" class="alignnone size-medium wp-image-207" /></a></p>
<p><strong>Dimensione della pagina: </strong>76.9 KB<br />
<strong>Tempo di caricamento: </strong>462ms</p>
<p>La differenza secondo me è notevole!<br />
Il caricamento classico è infatti più leggero di <strong>7.3 KB</strong> e la chiamata totale è più veloce di <strong>333ms</strong>.<br />
Dobbiamo infatti considerare che queste differenze sembrano minime, ma moltiplicate per &#8220;n&#8221; visitatori possono fare la differenza.</p>
<p>Ovviamente dobbiamo anche considerare che non tutte le chiamate avranno lo stesso peso e tempo grazie alla cache, ma posso comunque dire che da oggi utilizzerò di sicuro il classico richiamo script!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/28/07/2010/google-ajax-library-differenze-tra-jsapi-e-chiamata-diretta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery: prevenire il comportamento di default</title>
		<link>http://blog.friimaind.it/26/04/2010/jquery-prevenire-il-comportamento-di-default/</link>
		<comments>http://blog.friimaind.it/26/04/2010/jquery-prevenire-il-comportamento-di-default/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 15:43:31 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[event]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=193</guid>
		<description><![CDATA[Se usate jQuery avrete di sicuro utilizzato spesso la sintassi: &#60;a href=&#34;#/&#34; id=&#34;mylink&#34;&#62;click me&#60;/a&#62; $&#40;'#mylink'&#41;.click&#40;function&#40;&#41; &#123; // azione da fare al click del link con id 'mylink' alert&#40;'clicked!!'&#41;; &#125;&#41;; Al click del link con id mylink verrà visualizzato un semplice alert. Come vedrete però nella barra degli indirizzi verrà visualizzato il &#8220;#/&#8221;, e non è [...]]]></description>
			<content:encoded><![CDATA[<p>Se usate jQuery avrete di sicuro utilizzato spesso la sintassi:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;#/&quot; id=&quot;mylink&quot;&gt;click me&lt;/a&gt;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mylink'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// azione da fare al click del link con id 'mylink'</span>
  <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'clicked!!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Al click del link con id <strong>mylink</strong> verrà visualizzato un semplice alert.<br />
Come vedrete però nella barra degli indirizzi verrà visualizzato il &#8220;#/&#8221;, e non è elegante.</p>
<p>Con jQuery abbiamo la possibilità di prevenire le azioni di default dei nostri elementi, nel nostro caso il link. Sarà sufficiente scrivere:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mylink'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #006600; font-style: italic;">// Prevent default</span>
  event.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #006600; font-style: italic;">// azione da fare al click del link con id 'mylink'</span>
  <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'clicked!!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Attenzione</strong>: ho passato come parametro della funzione l&#8217;<strong>event</strong> per poterlo richiamare.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/26/04/2010/jquery-prevenire-il-comportamento-di-default/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery &#8211; animate() e Internet Explorer 8 (IE8)</title>
		<link>http://blog.friimaind.it/26/04/2010/jquery-animate-e-internet-explorer-8-ie8/</link>
		<comments>http://blog.friimaind.it/26/04/2010/jquery-animate-e-internet-explorer-8-ie8/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 15:24:12 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[browser]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=189</guid>
		<description><![CDATA[Attenzione, se state utilizzando la funzione animate() di jQuery in accoppiata ad effetti sul padding potreste trovare delle difficoltà con Internet Explorer (dai miei test IE7 e IE8). Firefox, Chrome, Safari accettano la sintassi: $&#40;'#mydiv'&#41;.animate&#40;&#123; padding: '5px 5px 15px 0' &#125;&#41;; Internet Explorer, ovviamente no Utilizzate quindi la sintassi: $&#40;'#mydiv'&#41;.animate&#40;&#123; paddingTop: '5px', paddingRight: '5px', paddingBottom: [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Attenzione</strong>, se state utilizzando la funzione <strong>animate()</strong> di jQuery in accoppiata ad effetti sul padding potreste trovare delle difficoltà con Internet Explorer (dai miei test IE7 e IE8).</p>
<p>Firefox, Chrome, Safari accettano la sintassi:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mydiv'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">animate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  padding<span style="color: #339933;">:</span> <span style="color: #3366CC;">'5px 5px 15px 0'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Internet Explorer, ovviamente no <img src='http://blog.friimaind.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Utilizzate quindi la sintassi:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mydiv'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">animate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  paddingTop<span style="color: #339933;">:</span> <span style="color: #3366CC;">'5px'</span><span style="color: #339933;">,</span>
  paddingRight<span style="color: #339933;">:</span> <span style="color: #3366CC;">'5px'</span><span style="color: #339933;">,</span>
  paddingBottom<span style="color: #339933;">:</span> <span style="color: #3366CC;">'15px'</span><span style="color: #339933;">,</span>
  paddingLeft <span style="color: #339933;">:</span> <span style="color: #3366CC;">'0'</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/26/04/2010/jquery-animate-e-internet-explorer-8-ie8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Direttive personalizzate con Plesk 9</title>
		<link>http://blog.friimaind.it/26/08/2009/direttive-personalizzate-con-plesk-9/</link>
		<comments>http://blog.friimaind.it/26/08/2009/direttive-personalizzate-con-plesk-9/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 09:08:58 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[plesk]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=160</guid>
		<description><![CDATA[La nostra situazione: abbiamo un web server Linux gestito con piattaforma Parallels Plesk Panel 9 (nel mio caso 9.2.2) e una volta creato il nostro primo dominio vogliamo impostare delle direttive personalizzate solo per lui. Mettiamo caso ad esempio che vogliamo impostare il safe_mode ad off (Magento ad esempio non lo vuole) nel nostro dominio.com [...]]]></description>
			<content:encoded><![CDATA[<p>La nostra situazione: abbiamo un web server Linux gestito con piattaforma Parallels Plesk Panel 9 (nel mio caso 9.2.2) e una volta creato il nostro primo dominio vogliamo impostare delle direttive personalizzate solo per lui.<br />
Mettiamo caso ad esempio che vogliamo impostare il safe_mode ad off (Magento ad esempio non lo vuole) nel nostro <strong>dominio.com</strong></p>
<p><strong>I passaggi da seguire (da root)</strong><br />
1. Andiamo nella nostra directory dei virtual hosts (nel mio caso /var/www/vhosts/)<br />
2. Entriamo poi in DIRECTORY_VIRTUAL_HOST/<strong>dominio.com</strong>/conf (nel mio caso /var/www/vhosts/dominio.com/conf)<br />
3. Creiamo un file denominato <strong>vhost.conf</strong> e all&#8217;interno inseriamo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>Directory <span style="color: #339933;">/</span><span style="color: #000000; font-weight: bold;">var</span><span style="color: #339933;">/</span>www<span style="color: #339933;">/</span>vhosts<span style="color: #339933;">/</span>dominio<span style="color: #339933;">.</span>com<span style="color: #339933;">/</span>httpdocs<span style="color: #339933;">&gt;</span>   
      php_admin_flag safe_mode off   
<span style="color: #339933;">&lt;/</span>Directory<span style="color: #339933;">&gt;</span></pre></div></div>

<p>4. Ora dobbiamo dire a Plesk che deve aggiornare la configurazione lanciamo il comando:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">/</span>usr<span style="color: #339933;">/</span>local<span style="color: #339933;">/</span>psa<span style="color: #339933;">/</span>admin<span style="color: #339933;">/</span>sbin<span style="color: #339933;">/</span>websrvmng <span style="color: #339933;">--</span>reconfigure<span style="color: #339933;">-</span>vhost <span style="color: #339933;">--</span>vhost<span style="color: #339933;">-</span>name<span style="color: #339933;">=</span>dominio<span style="color: #339933;">.</span>com</pre></div></div>

<p>5. Riavviamo apache</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">/</span>etc<span style="color: #339933;">/</span>init<span style="color: #339933;">.</span>d<span style="color: #339933;">/</span>apache2 restart</pre></div></div>

<p><strong>Cosa abbiamo fatto?</strong><br />
Ogni vhost che crea Plesk sa che, se è presente un file vhost.conf all&#8217;interno della sua directory conf, deve includerla. Ripetete questa operazione per ogni dominio/sottodominio che volete personalizzare.</p>
<p>Ovviamente dovete semplicemente cambiare <strong>dominio.com</strong> con il vostro dominio, ed il gioco è fatto!</p>
<p><strong>Fonte ufficiale:</strong> <a href="http://download1.parallels.com/Plesk/PPP9/Doc/en-US/plesk-9.2-unix-advanced-administration-guide/index.htm?fileName=61568.htm" title="Parallels Plesk Guide">Parallels Plesk Guide</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/26/08/2009/direttive-personalizzate-con-plesk-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Register.it &#8211; Impostazioni per l&#8217;Url rewriting</title>
		<link>http://blog.friimaind.it/10/08/2009/register-it-impostazioni-per-lurl-rewriting/</link>
		<comments>http://blog.friimaind.it/10/08/2009/register-it-impostazioni-per-lurl-rewriting/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 12:09:06 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[programmazione]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[register]]></category>
		<category><![CDATA[rewrite]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=153</guid>
		<description><![CDATA[Segnalo un utilissimo articolo, del mio amico web designer Claudio Cugia, che ci aiuta a configurare nel noto mantainer register.it la gestione dell&#8217;Url rewriting, la base di partenza per un buon progetto web Impostare correttamente il file .htaccess su Register.it]]></description>
			<content:encoded><![CDATA[<p>Segnalo un utilissimo articolo, del mio amico <a href="http://www.claudiocugia.com/" title="Webdesigner Venezia">web designer Claudio Cugia</a>, che ci aiuta a configurare nel noto mantainer <a href="http://we.register.it/" title="Register.it">register.it</a> la gestione dell&#8217;Url rewriting, la base di partenza per un buon progetto web <img src='http://blog.friimaind.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.claudiocugia.com/web_design/file-htaccess-register/" title="Impostare correttamente il file .htaccess su Register.it">Impostare correttamente il file .htaccess su Register.it</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/10/08/2009/register-it-impostazioni-per-lurl-rewriting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Text diff &#8211; Differenze tra due testi/file</title>
		<link>http://blog.friimaind.it/04/06/2009/text-diff-differenze-tra-due-testifile/</link>
		<comments>http://blog.friimaind.it/04/06/2009/text-diff-differenze-tra-due-testifile/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 16:12:31 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[programmazione]]></category>
		<category><![CDATA[file_diff]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[text_diff]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=138</guid>
		<description><![CDATA[In questo articolo vi segnalo un ottimo tool per confrontare due testi in maniera molto simile ad un CVS. Utilizzeremo Text_Diff, un package di Pear (per chi volesse approfondire: PEAR &#8211; PHP Extension and Application Repository). Nel caso non avessimo Pear abilitato nel nostro server possiamo copiarci nel nostro script le classi necessarie: - Text/Diff.php [...]]]></description>
			<content:encoded><![CDATA[<p>In questo articolo vi segnalo un ottimo tool per confrontare due testi in maniera molto simile ad un CVS.<br />
Utilizzeremo <a href="http://pear.php.net/package/Text_Diff">Text_Diff</a>, un package di Pear (per chi volesse approfondire: <a href="http://pear.php.net/" target="_blank">PEAR &#8211; PHP Extension and Application Repository</a>).</p>
<p>Nel caso non avessimo Pear abilitato nel nostro server possiamo copiarci nel nostro script le classi necessarie:<br />
- Text/Diff.php<br />
- Text/Diff/Render.php<br />
- Text/Diff/Renderer/unified.php<br />
- Text/Diff/Engine/native.php</p>
<p>Text_Diff è in grado di gestire sia la comparazione di due file che due testi presi direttamente da variabile (nel primo caso è infatti sufficiente eseguire un fread()).</p>
<p>Una volta che abbiamo le classi di Pear possiamo scaricarci i file d&#8217;esempio da qui: <a href="http://software.zuavra.net/inline-diff/">http://software.zuavra.net/inline-diff/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/04/06/2009/text-diff-differenze-tra-due-testifile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5, passare all&#8217;OOP (Object-Oriented Programming)</title>
		<link>http://blog.friimaind.it/12/05/2009/php-5-passare-alloop-object-oriented-programming/</link>
		<comments>http://blog.friimaind.it/12/05/2009/php-5-passare-alloop-object-oriented-programming/#comments</comments>
		<pubDate>Tue, 12 May 2009 21:21:28 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[libri]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[programm]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=132</guid>
		<description><![CDATA[Dopo jQuery è arrivato il momento di mettersi di nuovo a studiare. Ho necessità infatti di rispolverare le nozioni della programmazione ad oggetti e mi sono affidato ad un libro dell&#8217;Apogeo che vorrei consigliarvi. Non è facile infatti trovare una buona documentazione in lingua italiana su questo argomento. Il libro si intitola PHP 5 Guida [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo jQuery è arrivato il momento di mettersi di nuovo a studiare.<br />
Ho necessità infatti di rispolverare le nozioni della programmazione ad oggetti e mi sono affidato ad un libro dell&#8217;Apogeo che vorrei consigliarvi.<br />
Non è facile infatti trovare una buona documentazione in lingua italiana su questo argomento.<br />
Il libro si intitola <strong>PHP 5 Guida Completa</strong>, è indirizzato agli sviluppatori che desiderano studiare a fondo le potenzialità di questo linguaggio, soprattutto all&#8217;OOP.<br />
Vi lascio il link della casa editrice:<br />
<a target='_blank' href='http://www.apogeonline.com/libri/9788850323043/scheda'>Apogeonline</a><br />
E di Google Books per dare un&#8217;occhiata prima dell&#8217;acquisto:<br />
<a target='_blank' href='http://books.google.it/books?id=3RQOMzB5DboC&#038;printsec=frontcover&#038;dq=php+5+guida+completa'>Google Books</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/12/05/2009/php-5-passare-alloop-object-oriented-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le sessioni in PHP 5</title>
		<link>http://blog.friimaind.it/12/05/2009/le-sessioni-in-php-5/</link>
		<comments>http://blog.friimaind.it/12/05/2009/le-sessioni-in-php-5/#comments</comments>
		<pubDate>Tue, 12 May 2009 21:08:11 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[programmazione]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sessioni]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=127</guid>
		<description><![CDATA[Le sessioni in PHP ci consentono di trasferire informazioni da una pagina ad un&#8217;altra. Il classico esempio potrebbe essere il caso di un&#8217;area riservata alla quale si accede tramite un form di login. Senza l&#8217;ausilio delle sessioni (e in particolare dei cookies che esse utilizzano) sarebbe difficile, oltre che strutturalmente scorretto, ricordare il login dell&#8217;utente [...]]]></description>
			<content:encoded><![CDATA[<p>Le sessioni in PHP ci consentono di trasferire informazioni da una pagina ad un&#8217;altra.<br />
Il classico esempio potrebbe essere il caso di un&#8217;area riservata alla quale si accede tramite un form di login. Senza l&#8217;ausilio delle sessioni (e in particolare dei cookies che esse utilizzano) sarebbe difficile, oltre che strutturalmente scorretto, ricordare il login dell&#8217;utente una volta che chiude il browser oppure quando passa ad una pagina successiva.</p>
<p>Nella nostra pagina di login dove è presente il form per l&#8217;inserimento delle credenziali, come primissima cosa diciamo al server di iniziare una nuova sessione:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
/* qui ci sarà il form */</pre></div></div>

<p>La pagina, una volta inviati i dati dal form, dovrà controllare che le credenziali siano corrette. Se lo sono possiamo salvarci dei dati grazie alla superglobale <strong>$_SESSION</strong> in questo modo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
     <span style="color: #666666; font-style: italic;">// salvo l'id utente</span>
     <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id_utente'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$id_utente</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Una volta che abbiamo salvato il nostro dato, possiamo utilizzarlo nelle pagine che seguiranno (come ad esempio una pagina della scheda di un documento riservato) in questo modo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
     <span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
     <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id_utente'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
          <span style="color: #666666; font-style: italic;">// l'utente è loggato</span>
     <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
          <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Area ad accesso riservato'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Come vedete è sempre necessario inizializzare la sessione con <strong>session_start()</strong>.<br />
La primissima cosa che potrebbe venirci in mente è quella di salvarci in un&#8217;altra variabile di sessione (cookie) la password dell&#8217;utente criptata, in modo tale da effettuare il controllo della coppia id_utente &#8211; password nel nostro database.</p>
<p>Per concludere vediamo ora come si <strong>chiude una sessione</strong>, ad esempio per la classica azione di logout di un utente:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
     <span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #000088;">$_SESSION</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// svuoto la superglobale</span>
     <span style="color: #990000;">session_destroy</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>          
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p><strong>Attenzione</strong><br />
Una volta settata una variabile di sessione (cookie) è necessario eseguire un header(&#8216;Location&#8217;) per fare in modo che la pagina stessa riconosca il cookie settato.<br />
Ad esempio, se abbiamo il form di login contenuto nella pagina area_riservata.php e vogliamo fare in modo che, se l&#8217;utente è loggato, visualizzi un elenco di documenti, altrimenti visualizzi il form, dobbiamo fare in questo modo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
     <span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>     
&nbsp;
     <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'azione'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'invia_form'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
          <span style="color: #666666; font-style: italic;">// salvo l'id utente</span>
          <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id_utente'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$id_utente</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Location /area_riservata.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span>
&nbsp;
     <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id_utente'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
          <span style="color: #666666; font-style: italic;">// l'utente è loggato, visualizzo elenco doc</span>
     <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
          <span style="color: #666666; font-style: italic;">// l'utente non è loggato, visualizzo il form di login</span>
     <span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/12/05/2009/le-sessioni-in-php-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validazione e filtro dell&#8217;input di un utente. La nuova filter_var()</title>
		<link>http://blog.friimaind.it/10/03/2009/validazione-e-filtro-dellinput-di-un-utente-la-nuova-filter_var/</link>
		<comments>http://blog.friimaind.it/10/03/2009/validazione-e-filtro-dellinput-di-un-utente-la-nuova-filter_var/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 15:26:43 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[libri]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[filter_var]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=122</guid>
		<description><![CDATA[Oggi mi sono trovato di fronte al classico form di registrazione di un utente con relativo form di login. La mia prima preoccupazione è stata ovviamente la validazione e il filtraggio dell&#8217;input dell&#8217;utente. Ero già pronto a prendermi le classiche espressioni regolari per controllare email, input di testo, date ecc&#8230; Ma proprio oggi leggevo un [...]]]></description>
			<content:encoded><![CDATA[<p>Oggi mi sono trovato di fronte al classico form di registrazione di un utente con relativo form di login.<br />
La mia prima preoccupazione è stata ovviamente la validazione e il filtraggio dell&#8217;input dell&#8217;utente.</p>
<p>Ero già pronto a prendermi le classiche espressioni regolari per controllare email, input di testo, date ecc&#8230; Ma proprio oggi leggevo un interessantissimo articolo su <strong>mattiasgeniar.be</strong>, un buon blog di uno sviluppatore, dove veniva presentata un&#8217;innovativa soluzione, introdotta con <strong>PHP5</strong>, per validare e filtrare l&#8217;input degli utenti: <strong>filter_var()</strong>.</p>
<p>Ammetto di essere rimasto affascianato dalla semplicità con cui ora posso validare e filtrare i dati.<br />
Ecco alcuni esempi (Attenzione: filter_var() è presente <strong>SOLO</strong> da <strong>PHP5</strong> in poi).</p>
<p>Validazione di una mail:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
   <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">filter_var</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> FILTER_VALIDATE_EMAIL<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Email non valida'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Strip di tutto ciò che non è una stringa (pensiamo ad esempio ad un commento nel nostro blog):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
   <span style="color: #000088;">$commento</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;h1&gt;Ciao a tutti, il mio &lt;a href='http://www.google.it'&gt;blog è qui&lt;/a&gt;&lt;/h1&gt;&quot;</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$commento</span> <span style="color: #339933;">=</span> <span style="color: #990000;">filter_var</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$commento</span><span style="color: #339933;">,</span> FILTER_SANITIZE_STRING<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #666666; font-style: italic;">// Restituisce Ciao a tutti, il mio blog è qui</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>E questi sono solo due semplicissimi esempi che solitamente necessitano di strip_tags, espressioni regolari ecc&#8230;<br />
Onestamente trovo questo filter_var una vera manna!</p>
<p>Vi lascio il link di tutti i possibili parametri (sono veramente molti) per la filter_var:<br />
<a href="http://mattiasgeniar.be/2009/02/07/input-validation-using-filter_var-over-regular-expressions/">http://mattiasgeniar.be/2009/02/07/input-validation-using-filter_var-over-regular-expressions/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/10/03/2009/validazione-e-filtro-dellinput-di-un-utente-la-nuova-filter_var/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP: strip_tags, eliminare tag HTML da un testo con eccezioni</title>
		<link>http://blog.friimaind.it/03/03/2009/php-strip_tags-eliminare-tag-html-da-un-testo-con-eccezioni/</link>
		<comments>http://blog.friimaind.it/03/03/2009/php-strip_tags-eliminare-tag-html-da-un-testo-con-eccezioni/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 15:29:37 +0000</pubDate>
		<dc:creator>friimaind</dc:creator>
				<category><![CDATA[programmazione]]></category>
		<category><![CDATA[sicurezza]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[strip_tags]]></category>

		<guid isPermaLink="false">http://blog.friimaind.it/?p=119</guid>
		<description><![CDATA[Tutti noi sappiamo che per eliminare i tag HTML da una stringa (ad esempio da un form inviato da un utente) possiamo utilizzare la comoda funzione nativa di PHP strip_tags(). Se abbiamo ad esempio una stringa inviata da un utente malintezionato, che vuole inserire del codice HTML (un link ad un sito ad esempio&#8230;) possiamo [...]]]></description>
			<content:encoded><![CDATA[<p>Tutti noi sappiamo che per eliminare i tag HTML da una stringa (ad esempio da un form inviato da un utente) possiamo utilizzare la comoda funzione nativa di PHP <strong>strip_tags()</strong>.</p>
<p>Se abbiamo ad esempio una stringa inviata da un utente malintezionato, che vuole inserire del codice HTML (un link ad un sito ad esempio&#8230;) possiamo fare così:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$commento</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'commento'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>E se volessimo invece abilitare all&#8217;utente la possibilità di mettere un testo in grassetto?</p>
<p>Possiamo fare così:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$commento</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'commento'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'&lt;strong&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Nel caso volessimo abilitare più di un tag possiamo utilizzare questa sintassi:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$commento</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strip_tags</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'commento'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'&lt;strong&gt;,&lt;a&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>In questo modo l&#8217;utente avrà la possibilità di mettere link e grassetti.</p>
<p><strong>Attenzione:</strong> strip_tags() elimina tutti i tag HTML, ma anche i tags PHP !</p>
<p>Per approfondimenti: <a title="strip_tags" href="http://it2.php.net/manual/it/function.strip-tags.php" target="_blank">http://it2.php.net/manual/it/function.strip-tags.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.friimaind.it/03/03/2009/php-strip_tags-eliminare-tag-html-da-un-testo-con-eccezioni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

