<?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>Filosofia informatica &#187; Programmazione</title>
	<atom:link href="http://www.sarnari.net/categoria/programmazione/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sarnari.net</link>
	<description>Pillole di programmazione, web marketing, nuove tecnologie e turismo...</description>
	<lastBuildDate>Wed, 21 Apr 2010 07:35:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pagina bianca su alcuni articoli Joomla</title>
		<link>http://www.sarnari.net/programmazione/2009/05/pagina-bianca-su-alcuni-articoli-joomla/</link>
		<comments>http://www.sarnari.net/programmazione/2009/05/pagina-bianca-su-alcuni-articoli-joomla/#comments</comments>
		<pubDate>Tue, 19 May 2009 16:14:23 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/?p=184</guid>
		<description><![CDATA[Alcune pagine del vostro sito Joomla, appena aggiornato alla versione 1.5.10 sono improvvisamente diventate bianche e non restituiscono errori di sorta?
Non disperate, è un problema che si verifica soltanto con gli articoli troppo lunghi ed è causato dalla configurazione predefinita del pcre.backtrack_limit.
Questo parametro non era settato nelle precedenti versioni di PHP (o meglio, era molto [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-165 alignright" title="joomla-logo" src="http://www.sarnari.net/wp-content/uploads/joomla-logo.jpg" alt="joomla-logo" width="149" height="149" />Alcune pagine del vostro sito Joomla, appena aggiornato alla versione <strong>1.5.10</strong> sono improvvisamente diventate <strong>bianche</strong> e non restituiscono errori di sorta?</p>
<p>Non disperate, è un problema che si verifica soltanto con gli articoli troppo lunghi ed è causato dalla configurazione predefinita del <strong>pcre.backtrack_limit</strong>.</p>
<p>Questo parametro non era settato nelle precedenti versioni di PHP (o meglio, era molto più elevato), con l&#8217;introduzione del backtrack_limit il limite delle dei caratteri di una stringa su cui si può usare una regex è diventato 100.000 (meno di 100k).</p>
<p>Una cosa fastidiosa è che PHP non restituisce Warning o Notice di nessun tipo, il che rende non poco rognoso individuare il problema.</p>
<p>Tutto questo si ripercuote in Joomla come specificato nell&#8217;oggetto: quando si aprono gli articoli particolarmente lunghi (immagino siano i famosi 100.000 caratteri), si vede una bellissima pagina bianca, senza intestazioni o errori.</p>
<p>Come risolverlo?</p>
<p>Ci sarebbe addirittura <a href="http://www.demo2.ari-soft.com/index.php?option=com_content&amp;view=article&amp;id=74:bigarticle&amp;catid=34:joomlatip&amp;Itemid=63" target="_blank">un plugin</a> che promette di farlo, ma c&#8217;è un modo ancora più semplice:</p>
<p>Scaricate via <strong>FTP </strong>il vostro file <strong>configuration.php</strong>, apritelo con un editor e subito prima dell&#8217;inizio di della classe <strong>JConfig </strong>scrivete:</p>
<p>ini_set(&#8217;pcre.backtrack_limit&#8217;, -1);</p>
<p>Questo toglierà la limitazione dei 100.000 caratteri.</p>
<p><strong>Salvare e ripubblicare, sempre via FTP.</strong><br />
<strong>-finito</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2009/05/pagina-bianca-su-alcuni-articoli-joomla/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Configurare Joomla con Plesk</title>
		<link>http://www.sarnari.net/programmazione/2009/02/configurare-joomla-con-plesk/</link>
		<comments>http://www.sarnari.net/programmazione/2009/02/configurare-joomla-con-plesk/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 09:53:45 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/?p=156</guid>
		<description><![CDATA[Configurando un sito Joomla su un server amministrato con Plesk mi sono scontrato con l&#8217;impossibilità di caricare correttamente moduli e componenti, inoltre dalla gestione media era possibile creare cartelle ma non caricare files.
L&#8217;errore restituito era:
JFolder::create: Infinite loop detected
In pratica i file erano caricati come utente apache, mentre le cartelle erano di proprietà dell&#8217;utente ftp del [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-165" title="joomla-logo" src="http://www.sarnari.net/wp-content/uploads/joomla-logo.jpg" alt="joomla-logo" width="149" height="149" />Configurando un sito Joomla su un server amministrato con Plesk mi sono scontrato con l&#8217;impossibilità di caricare correttamente moduli e componenti, inoltre dalla gestione media era possibile creare cartelle ma non caricare files.</p>
<p>L&#8217;errore restituito era:<br />
JFolder::create: Infinite loop detected</p>
<p>In pratica i file erano caricati come utente apache, mentre le cartelle erano di proprietà dell&#8217;utente ftp del dominio. Visto che anche i gruppi degli utenti non coincidevano, quindi non poteva copiare i file nella giusta cartella.</p>
<p>Dopo aver verificato che i permessi erano corretti, ho cercato un po&#8217; di informazioni sulla rete, ed ho trovato <a href="http://www.dustinsdesign.com/perfect-permissions-for-joomla-and-plesk/" target="_blank">questa</a> soluzione, che in pratica suggerisce di cambiare il proprietario di tutti i file/cartelle e di aggiungere l&#8217;utente apache al gruppo proprietario dei file.</p>
<p>Funziona! Ma così andiamo a toccare dei permessi un po&#8217; &#8220;sensibili&#8221;, quelli di apache&#8230; sempre cercando ho trovato un&#8217;altra via più semplice ed efficace:</p>
<p><strong>Joomla 1.5.x</strong> dispone di un comodissimo layer FTP per il caricamento di file, moduli e componenti.</p>
<p>Per attivarlo andate nel pannello di amministrazione Joomla (www.vostrosito.it/administrator)</p>
<ul>
<li>dalla pagina iniziale del pannello cliccare l&#8217;icona <em>&#8220;Configurazione&#8221;</em></li>
<li>portarsi quindi nella sezione <em>&#8220;Server&#8221;</em> e nella sezione <em>&#8220;Configurazione FTP&#8221;</em> compilare come segue:
<ul>
<li> <span class="editlinktip hasTip"><strong> Abilita FTP</strong> = Si</span></li>
<li><span class="editlinktip hasTip"><strong> Host FTP</strong> = 127.0.0.1</span></li>
<li> <span class="editlinktip hasTip"><strong> Nome Utente FTP</strong> = username dell&#8217;FTP</span></li>
<li> <span class="editlinktip hasTip"><strong> Password FTP</strong> = password dell&#8217;FTP</span></li>
<li> <span class="editlinktip hasTip"><strong> Root FTP</strong> = /httpdocs</span></li>
</ul>
</li>
<li>salvare le configurazioni cliccando l&#8217;icona <em>&#8220;Applica&#8221; </em><em></em></li>
</ul>
<p>Ed il gioco è fatto!</p>
<p>Da questo momento tutti i file caricati attraverso l&#8217;interfaccia di amministrazione di Jooma! saranno trasferiti sfruttando il protocollo FTP.<br />
In tal modo GID/UID saranno quelli corretti e relativi all&#8217;account FTP attivo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2009/02/configurare-joomla-con-plesk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Anno nuovo, cms nuovo</title>
		<link>http://www.sarnari.net/programmazione/2009/02/anno-nuovo-cms-nuovo/</link>
		<comments>http://www.sarnari.net/programmazione/2009/02/anno-nuovo-cms-nuovo/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 13:47:15 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/?p=149</guid>
		<description><![CDATA[Il 2009 ha portato consiglio, innanzitutto non sono più cliente di hosting di Areaserver/Tiscali (anche perché, se per qualche giorni un loro server decide di andare in ferie, loro non fanno nulla, anzi, cercano di fare il possibile per farlo riposare),  poi, come si sarà notato, ho approfittato dei (troppi) giorni offline per stravolgere il [...]]]></description>
			<content:encoded><![CDATA[<p>Il 2009 ha portato consiglio, innanzitutto non sono più cliente di hosting di Areaserver/Tiscali (anche perché, se per qualche giorni un loro server decide di andare in ferie, loro non fanno nulla, anzi, cercano di fare il possibile per farlo riposare),  poi, come si sarà notato, ho approfittato dei (troppi) giorni offline per stravolgere il mio CMS, esportare tutti i dati e ficcarli dentro Wordpress.<br />
Mi è stato utilizzimo il plugin &#8220;<a href="http://www.jayblogger.com/the-birth-of-my-first-plugin-import-csv/" target="_blank">Import CSV</a>&#8220;, anche se con le parole accentate andava in tilt, quindi ci ho dovuto mettere le mani, per i commetni ho fatto uno script ad hoc, ma c&#8217;è anchra qualcosa da rimettere al posto giusto.</p>
<p>Il tema che ho scelto è stao il carinissimo <a href="http://www.chrishappens.com/sharing/bloghappens/" target="_blank">Blog Happens</a>, anche questo leggermente modificato.</p>
<p>Risultato?<br />
Quello che vedere, da oggi: Wordpress!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2009/02/anno-nuovo-cms-nuovo/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Bypass z-index -1000 on Considero Alive MP3 Player &#8211; DNN</title>
		<link>http://www.sarnari.net/programmazione/2008/12/bypass-z-index-1000-on-considero-alive-mp3-player-dnn/</link>
		<comments>http://www.sarnari.net/programmazione/2008/12/bypass-z-index-1000-on-considero-alive-mp3-player-dnn/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 02:01:39 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/senza-categoria/2008/12/bypass-z-index-1000-on-considero-alive-mp3-player-dnn/</guid>
		<description><![CDATA[Truly an excellent module, but has a serious crossbrowsing bug in IE, thet can be solved adding a simple Javascript in MP3Player.ascx.
 1) edit: yourwebsite\\pub\\DesktopModules\\Considero.DNN.AliveMP3Player\\MP3Player.ascx
 2) add this Javascript at the end of the file: 
&#60;script language=&#34;javascript&#34;&#62; allDivs = document.getElementsByTagName(&#8217;div&#8217;); for (var i=0; i &#60; allDivs.length; i++) { if (allDivs[i].id.indexOf(&#8217;player&#8217;) != -1) { allDivs[i].style.zIndex = [...]]]></description>
			<content:encoded><![CDATA[<p><img width='54' height='61' align='right' src='/wp-content/uploads/DotNetNuke%20logo.gif' alt='' />Truly an <a href='http://www.considero.net/Products/DotNetNuke/Modules/Alive-MP3-Player.aspx' target='_blank'>excellent module</a>, but has a serious <strong>crossbrowsing bug</strong> in IE, thet can be solved adding a simple Javascript in <strong>MP3Player.ascx</strong>.</p>
<p> 1) edit: <strong>yourwebsite\\pub\\DesktopModules\\Considero.DNN.AliveMP3Player\\<strong>MP3Player.ascx</strong></strong></p>
<p> 2) add this Javascript at the end of the file: </p>
<p style='margin-left: 40px;'><span style='color: rgb(128, 128, 0);'><span style='font-family: Courier New;'>&lt;script language=&quot;javascript&quot;&gt;<br /> allDivs = document.getElementsByTagName(&#8217;div&#8217;);<br /> for (var i=0; i &lt; allDivs.length; i++) {<br /> if (allDivs[i].id.indexOf(&#8217;player&#8217;) != -1) {<br /> allDivs[i].style.zIndex = 10;<br /> allDivs[i].style.position = &quot;static&quot;;<br /> }<br /> }<br /> &lt;/script&gt;</span></span></p>
<p>3) refresh your page and enjoy! }; D </p>
<p> This will rewrite via Javascript the element.style { z-index: -1000; position:relative;} that make the module hide in IE!<br /> Please, if you use this script, make a feedback to me. }: D</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2008/12/bypass-z-index-1000-on-considero-alive-mp3-player-dnn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bloccare visite dagli IP di un determinato paese!</title>
		<link>http://www.sarnari.net/programmazione/2008/03/bloccare-visite-dagli-ip-di-un-determinato-paese/</link>
		<comments>http://www.sarnari.net/programmazione/2008/03/bloccare-visite-dagli-ip-di-un-determinato-paese/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 10:58:26 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/senza-categoria/2008/03/bloccare-visite-dagli-ip-di-un-determinato-paese/</guid>
		<description><![CDATA[Controllando le statistiche di un sito ci si può accorgere di piccoli dettagli che dovrebbero far riflettere il buon web master su chi deve e chi non deve visitare il proprio sito. Negli ultimi tempi ho verificato che diversi spam-engine, provenienti principalmente dalla russia e che trattano nei loro siti argomenti di dubbio interesse, hanno [...]]]></description>
			<content:encoded><![CDATA[<p>Controllando le statistiche di un sito ci si <span id='misp_0_2' class='hm'>può</span> accorgere di piccoli dettagli che dovrebbero far riflettere il buon web master su chi deve e chi non deve visitare il proprio sito.<br /> Negli ultimi tempi ho verificato che diversi <span id='misp_0_4' class='hm'>spam</span>-<span id='misp_0_5' class='hm'>engine</span>, provenienti principalmente dalla <span id='misp_0_6' class='hm'>russia</span> e che trattano nei loro siti argomenti di dubbio interesse, hanno iniziato a prelevare contenuti dal mio blog ed &quot;assimilarli&quot; nei propri siti.<br /> Tutto questo non sarebbe neanche grave, se non fosse che tali contenuti contengono link verso il mio sito, che tutto fanno fuorché aumentare la mia visibilità o offrire un servizio ai loro utenti&#8230; anzi! Per me sono un danno (anche grave ai fini del posizionamento), per loro uno strumento per acquisire la mia email se dovessi chiedere la rimozione di tali link!</a></p>
<p> Nella fattispecie, nell&#8217;ultimo mese, ho ricevuto visite, che avrei preferito non avere da questi <span id='misp_0_8' class='hm'>referrer</span>:</p>
<p> http://###drun.com<br /> http://www.revi###antiaging.com<br /> http://n##s.ws <br /> http://###-notebook.arayoine.org<br /> http://www.###ymix.biz <br /> http://fre###editscore.forum5<wbr></wbr>.com<br /> http://buyme###iarxq.forum5.com<br /> http://www.#cam.jed.pl<br /> http://online###rmacy4you.org<br /> http://tra###.pharmacylog.com<br /> http://xa###.pharmaxet.com</p>
<p> Ed altri&#8230;</p>
<p> Vista la presenza di questi ospiti indesiderati ho preso la decisione poco sofferta di bloccare ogni visita dall&#8217;Europa dell&#8217;est, sperando che i loro <span id='misp_0_9' class='hm'>crawler</span>, vedendo un sito non funzionante, tolgano i contenuti, non rompano più le scatole e se ne vada <span id='misp_0_10' class='hm'>af</span>&#8230;</p>
<p> La procedura per mettere in atto questa cosa è semplice, vediamola in pochi passaggi.</p>
<p> 1. Collegarsi al sito <a href='http://www.countryipblocks.net/' target='_blank' onclick='return top.js.OpenExtLink(window,event,this)'>http://www.countryipblocks.net</a><br /> 2. Cliccare sul menù a lato su .<span id='misp_0_11' class='hm'>htaccess</span> <span id='misp_0_12' class='hm'>deny</span><br /> 3. Selezionare uno alla volta i paesi da cui non desiderata più visitatori sgraditi<br /> 4. Scaricate il file .<span id='misp_0_13' class='hm'>gz</span>, ed estraete il <span id='misp_0_14' class='hm'>fiel</span> di testo tipo RU_cidr.<span id='misp_0_15' class='hm'>txt</span><br /> 5. Apritelo, selezionate il contenuto e copiatelo ed incollatelo in coda al vostro file .<span id='misp_0_16' class='hm'>htaccess</span> (nella <span id='misp_0_17' class='hm'>root</span> del sito)<br /> 6. Salvate e pubblicate il file, dicendo così addio ai visitatori di quello specifico paese</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2008/03/bloccare-visite-dagli-ip-di-un-determinato-paese/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eseguire script PHP ad intervalli di tempo regolari</title>
		<link>http://www.sarnari.net/programmazione/2007/09/eseguire-script-php-ad-intervalli-di-tempo-regolari/</link>
		<comments>http://www.sarnari.net/programmazione/2007/09/eseguire-script-php-ad-intervalli-di-tempo-regolari/#comments</comments>
		<pubDate>Sun, 02 Sep 2007 01:20:02 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/senza-categoria/2007/09/eseguire-script-php-ad-intervalli-di-tempo-regolari/</guid>
		<description><![CDATA[Nonostante il poco tempo, torno alla carica con un articolo tecnico che sarà utile ai più. A volte capita di aver bisogno di eseguire delle operazioni di routine, backup di un db, invio di mailinglist oppure di auguri di compleanno, ecc&#8230; per farlo si può ricorrere a degli script php che effettuano un controllo sulla [...]]]></description>
			<content:encoded><![CDATA[<p>Nonostante il poco tempo, torno alla carica con un articolo tecnico che sarà utile ai più.<br /> A volte capita di aver bisogno di <strong>eseguire delle operazioni di routine</strong>, backup di un db, invio di mailinglist oppure di auguri di compleanno, ecc&#8230; per farlo si può ricorrere a degli script php che effettuano un controllo sulla data e registrano un log delle attività, ma per essere eseguiti c&#8217;è sempre bisogno di almeno un visitatore che apra la pagina dove sono inclusi questi script. Il metodo funziona in caso si necessiti di un check al giorno, ma è un po&#8217; &quot;casereccio&quot;.</p>
<p> Nei sistemi operativi Unix ci viene in aiuto il comando <strong>crontab</strong>.</a><br /> <img width='120' height='220' align='right' src='/wp-content/uploads/crontab.jpg' alt='' />Per eseguire questo comando bisogna accedere via SSH al proprio server tramite putty o programmi similari, inoltre l&#8217;utente con cui ci ci logghiamo deve avere il permesso di utilizzare il <strong>demone cron</strong> (suona bene, dovrò usarlo per il mio prossimo racconto fantasy).<br /> Il demone <strong>viene eseguito automaticamente ogni minuto dal sistema</strong>, in caso l&#8217;ora coincida con un cronjob da eseguire, allora lancia il comando impostato.</p>
<p> Gli script che vogliamo eseguire periodicamente vanno inseriti nel file crontab dell&#8217;utente.</p>
<p> I comandi più importanti per &quot;parlare&quot; con il demone sono i seguenti:</p>
<p> crontab -l // visualizza il file crontab dell&#8217;utente corrente<br /> crontab -e // crea o modifica il file crontab dell&#8217;utente corrente<br /> crontab -r // cancella il file crontab dell&#8217;utente corrente</p>
<p> Una volta eseguito l&#8217;editor dei cronjob digitando &quot;crontab -e&quot; nella shell, ci troveremo davanti ad <strong>un&#8217;amichevole schermata nera</strong>, dove dovremo impostare i comandi che vorremo schedulare, seguendo la seguente sintassi:</p>
<p> * * * * * comando da eseguire</p>
<p> <img width='186' height='146' align='left' src='/wp-content/uploads/cronjobs.gif' alt='' /><br /> Ogni asterisco corrisponde ad uno dei seguenti valori:<br /> 1) minuti (0 &#8211; 59)<br /> 2) ora (0 &#8211; 23)<br /> 3) giorno del mese (1 &#8211; 31)<br /> 4) mese (1 &#8211; 12)<br /> 5) giorno della settimana (0 &#8211; 6) (domenica=0)</p>
<p> <strong></p>
<p> Esempi di base:</strong></p>
<p> 00 8 * * * /usr/lib/php /home/web/www.sito.it/backup.php<br /> (utilizza l&#8217;interprete php nella cartella /usr/lib/ per eseguire lo script backup.php alle 8.00 di ogni giorno)</p>
<p> 00 8 * 15 * /usr/lib/php /home/web/www.sito.it/backup.php<br /> (esegue lo script backup.php nei giorni 15 di ogni mese alle 8.00)</p>
<p> 00 8 * * 0 /usr/lib/php /home/web/www.sito.it/backup.php<br /> (esegue lo script backup.php tutte le domeniche alle 8.00)</p>
<p> Raccomandazione:<br /> <strong>non inserite il terzo ed il quinto campo contemporaneamente</strong> (il numero del giorno ed il giorno della settimana), perchè si escludono a vicenda ed averli entrambi genera un errore.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2007/09/eseguire-script-php-ad-intervalli-di-tempo-regolari/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bloccare l&#8217;accesso ai motori da file .htaccess</title>
		<link>http://www.sarnari.net/programmazione/2007/05/bloccare-laccesso-ai-motori-da-file-htaccess/</link>
		<comments>http://www.sarnari.net/programmazione/2007/05/bloccare-laccesso-ai-motori-da-file-htaccess/#comments</comments>
		<pubDate>Thu, 03 May 2007 10:59:04 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/senza-categoria/2007/05/bloccare-laccesso-ai-motori-da-file-htaccess/</guid>
		<description><![CDATA[Perché dovrei bloccare un motore di ricerca che viene a visitarmi? Semplice, non voglio che tutti i motori mi visitino, e soprattutto non voglio che sbircino su tutto il mio sito! A volte ho il sospetto che inserire nel file robots.txt una cartella con il parametro disallow, più che evitare gli spider, mi attiri gli [...]]]></description>
			<content:encoded><![CDATA[<p>Perché dovrei bloccare un motore di ricerca che viene a visitarmi? Semplice, non voglio che tutti i motori mi visitino, e soprattutto non voglio che sbircino su tutto il mio sito!<br /> A volte ho il sospetto che inserire nel file <span id='misp_compose_3' class='hm'>robots</span>.<span id='misp_compose_4' class='hm'>txt</span> una cartella con il parametro <span id='misp_compose_5' class='hm'>disallow</span>, più che evitare gli spider, mi attiri gli impiccioni.<br /> (ho scoperto una sacco di cose su Google <a href='http://www.google.it/robots.txt'>frugando nel suo <span id='misp_compose_6' class='hm'>robots</span>.<span id='misp_compose_7' class='hm'>txt</span></a>)<br /> </a><br /> Se si hai un server Apache e sai smanettare un po&#8217; ecco fatto il nostro lucchetto funzionante, che impedisci a determinati indirizzi di visitare tutto il sito, una carella o un singolo file.</p>
<p> Come fare? Nulla di più semplice, basta inserire questi codici:</p>
<p> Per impedire l&#8217;accesso a tutto il sito ad uno o più IP o classi di IP.</p>
<p> <span id='misp_compose_10' class='hm'>Options</span> +<span id='misp_compose_11' class='hm'>FollowSymLinks</span><br /> Order <span id='misp_compose_12' class='hm'>deny</span>,<span id='misp_compose_13' class='hm'>allow</span><br /> <span id='misp_compose_14' class='hm'>Deny</span> <span id='misp_compose_15' class='hm'>from</span> 192.168.1.254 #blocca l&#8217;accesso all&#8217;IP 192.168.1.254<br /> <span id='misp_compose_16' class='hm'>Deny</span> <span id='misp_compose_17' class='hm'>from</span> 192.168.1.* #blocca l&#8217;accesso alla classe di IP 192.168.1.*<br /> <span id='misp_compose_18' class='hm'>Deny</span> <span id='misp_compose_19' class='hm'>from</span> 192.168.*.* #blocca l&#8217;accesso alla classe di IP 192.168.*.*<br /> <span id='misp_compose_20' class='hm'>Deny</span> <span id='misp_compose_21' class='hm'>from</span> 192.*.*.* #blocca l&#8217;accesso alla classe di IP 192.*.*.*<br /> <span id='misp_compose_22' class='hm'>Deny</span> <span id='misp_compose_23' class='hm'>from</span> .google.com #blocca l&#8217;accesso al dominio google.com</p>
<p> <span id='misp_compose_24' class='hm'>Options</span> +<span id='misp_compose_25' class='hm'>FollowSymLinks</span><br /> Order <span id='misp_compose_26' class='hm'>deny</span>,<span id='misp_compose_27' class='hm'>allow</span><br /> <span id='misp_compose_28' class='hm'>Deny</span> <span id='misp_compose_29' class='hm'>from</span> all # blocca l&#8217;accesso a tutti gli <span id='misp_compose_30' class='hm'>ip</span></p>
<p> <span id='misp_compose_31' class='hm'>Options</span> +<span id='misp_compose_32' class='hm'>FollowSymLinks</span><br /> Order <span id='misp_compose_33' class='hm'>deny</span>,<span id='misp_compose_34' class='hm'>allow</span><br /> <span id='misp_compose_35' class='hm'>Deny</span> <span id='misp_compose_36' class='hm'>from</span> all #blocca tutti tranne:<br /> <span id='misp_compose_37' class='hm'>Allow</span> <span id='misp_compose_38' class='hm'>from</span> 192.168.1.254 #questo indirizzo io<br /> <span id='misp_compose_39' class='hm'>Allow</span> <span id='misp_compose_40' class='hm'>from</span> 192.168.1.* #questa classe di IP<br /> <span id='misp_compose_41' class='hm'>Allow</span> <span id='misp_compose_42' class='hm'>from</span> .google.com #questo dominio<br /> # consente l&#8217;accesso solo agli <span id='misp_compose_43' class='hm'>ip</span> specificati e al dominio google.com</p>
<p> Ogni cartella può <span id='misp_compose_44' class='hm'>contere</span> un diverso file .<span id='misp_compose_45' class='hm'>htaccess</span>, <span id='misp_compose_46' class='hm'>im</span> modo da poter specificare per ognuna le restrizioni che desideriamo.</p>
<p> Per proteggere solo uno o alcuni file ecco il trucco:</p>
<p> &lt;Files *.doc&gt; #l&#8217;estensione, il percorso o il nome del file, con l&#8217;asterisco come carattere <span id='misp_compose_47' class='hm'>jolly</span><br /> Order <span id='misp_compose_48' class='hm'>Deny</span>, <span id='misp_compose_49' class='hm'>Allow</span><br /> <span id='misp_compose_50' class='hm'>Deny</span> <span id='misp_compose_51' class='hm'>from</span> all #o una qualunque delle direttive viste precedentemente<br /> &lt;/Files&gt;</p>
<p> <a href='http://www.iplists.com/'> Qui</a> troverete gli <span id='misp_compose_52' class='hm'>ip</span> di molti dei motori di ricerca che girano per la rete.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2007/05/bloccare-laccesso-ai-motori-da-file-htaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Regioni, province e comuni per database MySql</title>
		<link>http://www.sarnari.net/programmazione/2007/04/regioni-province-e-comuni-per-database-mysql/</link>
		<comments>http://www.sarnari.net/programmazione/2007/04/regioni-province-e-comuni-per-database-mysql/#comments</comments>
		<pubDate>Fri, 20 Apr 2007 11:20:51 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/senza-categoria/2007/04/regioni-province-e-comuni-per-database-mysql/</guid>
		<description><![CDATA[Ecco una chicca che può essere utile a molti: nel file zip che trovate qui ci sono tre tabelle MySql che contengono l&#8217;elenco di regioni, province e comuni d&#8217;Italia.  Le relazioni tra le tabelle sono:
 



regioni  
province
comuni


idregione &#8211;&#62;
idregione
idcomune


nomeregione
idprovincia &#8211;&#62;
idprovincia


 
siglaprovincia
nomecomune


 
nomeprovincia
 



  Non dovrebbe essere difficile da usare. };)
 Scarica le tabelle [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco una chicca che può essere utile a molti: nel file zip che <a href='/wp-content/uploads/comuni.zip'>trovate qui</a> ci sono tre tabelle MySql che contengono l&#8217;elenco di regioni, province e comuni d&#8217;Italia.<br /> </a> Le relazioni tra le tabelle sono:</p>
<p> <strong><br />
<table width='390' cellspacing='1' cellpadding='1' border='0' align='' summary=''>
<tbody>
<tr>
<td><strong>regioni <br /> </strong></td>
<td><strong>province</strong></td>
<td><strong>comuni</strong></td>
</tr>
<tr>
<td><font size='2'>idregione &#8211;&gt;</font></td>
<td><font size='2'>idregione</font></td>
<td><font size='2'>idcomune</font></td>
</tr>
<tr>
<td><font size='2'>nomeregione</font></td>
<td><font size='2'>idprovincia &#8211;&gt;</font></td>
<td><font size='2'>idprovincia</font></td>
</tr>
<tr>
<td> </td>
<td><font size='2'>siglaprovincia</font></td>
<td><font size='2'>nomecomune</font></td>
</tr>
<tr>
<td> </td>
<td><font size='2'>nomeprovincia</font></td>
<td> </td>
</tr>
</tbody>
</table>
<p> </strong><br /> Non dovrebbe essere difficile da usare. };)</p>
<p> <a href='/wp-content/uploads/comuni.zip'>Scarica le tabelle in formato zip.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2007/04/regioni-province-e-comuni-per-database-mysql/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Trovare indirizzi email su Internet</title>
		<link>http://www.sarnari.net/programmazione/2007/02/trovare-indirizzi-email-su-internet/</link>
		<comments>http://www.sarnari.net/programmazione/2007/02/trovare-indirizzi-email-su-internet/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 06:54:13 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/senza-categoria/2007/02/trovare-indirizzi-email-su-internet/</guid>
		<description><![CDATA[Questo articolo tratta principalmente di insicurezza informatica e spiega come sia facile reperire dai personali di aziene presenti su internet senza il loro consenso. Ovviamente è creato solo a scopo dimostrativo e per far capire che spesso i database aziendali che vengono. Un database richiamato da pagine internet contiene solitamente nel suo URL alcune informazioni [...]]]></description>
			<content:encoded><![CDATA[<p>Questo articolo tratta principalmente di <strong>insicurezza informatica</strong> e spiega <strong>come sia facile reperire dai personali di aziene presenti su internet </strong>senza il loro consenso.<br /> Ovviamente è creato <strong>solo a scopo dimostrativo</strong> e per far capire che spesso i database aziendali che vengono.<br /> Un database richiamato da pagine internet contiene solitamente nel suo URL alcune informazioni utili sul contenuto della pagina.</a><br /> Analizziamo ad esempio la pagina: http://www.dominio.it/modules.php?name=contact&amp;idcompany=454&amp;file=categories&amp;op=newindex</p>
<p> E&#8217; un modulo molto probabilmente creato da qualche CMS, che richiama alcune variabili:</p>
<p> variabile name con valore &quot;contact&quot;<br /> variabile idcompany con valore &quot;454&quot;<br /> variabile file con valore &quot;categories&quot;<br /> variabile op con valore &quot;newindex&quot;</p>
<p> Diciamo che cliccando sul link otteniamo <strong>una pagina contenente le informazioni di un&#8217;azienda</strong> tra cui telefono, fax ed email.<br /> La variabile idcompany è abbastanza sospetta, sicuramente se porvassimo a cambiare il valore da 454 a 123 otterremmo i dati di un&#8217;altra agenzia.<br /> A questo punto rubare (perchè di furto si tratta) i dati delle varie aziende (diciamo che sia un sito di agenzie assicurative) presenti nel sito internet <strong>è un gioco da ragazzi</strong>.</p>
<p> Ovviamente non sto dicendo di scorrere manualmente ogni singola pagina e di copiare ed incollare i dati che ci interessano, ma parlo di <strong>una vera e propria procedura automatizzata</strong> che possa generarci un singolo file importabile all&#8217;interno di un DB o un foglio di calcolo.</p>
<p> Diciamo che la pagina contenga questo testo:</p>
<p> Nome agenzia: Cavaliere Assicurazioni<br /> Indirizzo: Via dello Stagno, 1<br /> 60019 Senigallia (AN)<br /> Telefono: +39 1234 56789 Fax +39 1234 456787<br /> E-mail: infohotel@hotelmaxi.it<br /> Link: www.hotelmaxi.it/hotel/index.htm</p>
<p> Che in codice HTML si traduce in:</p>
<p> &lt;font size=&quot;2&quot;&gt;&lt;b&gt;Nome agenzia: Cavaliere Assicurazioni&lt;br&gt;<br /> Indirizzo: Via dello Stagno, 1&lt;br&gt;<br /> 60019 Senigallia (AN)&lt;br&gt;<br /> Telefono: +39 1234 56789 Fax +39 1234 456787&lt;br&gt;<br /> E-mail: info@cavaliereassicurazioni.it&lt;br&gt;<br /> Link: http://www.cavaliereassicurazioni.it&lt;br&gt;<br /> &lt;/font&gt;<br /> &lt;br&gt;</p>
<p> La prima cosa che dobbiamo fare è capire poter inserire il codice HTML della pagina in una variabile per poi poter <strong>dividere ciò che ci serve dal resto</strong>.</p>
<p> Niente di più semplice, basta utilizzare la funzione <strong>file_get_contents</strong> (PHP 4 o superiore).</p>
<p> $pagina = &quot;http://www.dominio.it/modules.php?name=contact&amp;idcompany=454&amp;file=categories&amp;op=newindex;<br /> $contenuto=@file_get_contents($pagina);</p>
<p> A questo punto la variabile $contenuto conterrà il codice HTML della pagina che gli abbiamo indicato.</p>
<p> Per procedere con la divisione del codice utile da quello inutile utilizziamo questo comando:</p>
<p> list ($testo1, $testo2) = split (&quot;Nome agenzia:&quot;, $contenuto);</p>
<p> In pratica <strong>divido in due parti la variabile</strong> $contenuto appena trovo la stringa &quot;Nome agenzia&quot; (ovvero quando inizia la parte che mi interessa).</p>
<p> list ($testo1, $testo2) = split (&quot;&lt;/font&gt;&quot;, $testo2);</p>
<p> Stessa cosa ma così arrivo ad avere nella variabile $testo1 solo la parte che mi interessa, ora pensiamo a ripulire un po&#8217; il restante.</p>
<p> $testo1=str_replace(&quot;Indirizzo: &quot;,&quot;&quot;,$testo1);<br /> $testo1=str_replace(&quot;Telefono: &quot;,&quot;&quot;,$testo1);<br /> $testo1=str_replace(&quot;Email: &quot;,&quot;&quot;,$testo1);<br /> $testo1=str_replace(&quot;Link: &quot;,&quot;&quot;,$testo1);</p>
<p> <strong>In pratica così sono rimasti solo i dati utili; e per finire&#8230;</strong></p>
<p> $testo1=str_replace(&quot;&lt;br&gt;&quot;,&quot;#&quot;,$testo1);<br /> $testo1=str_replace(&quot;Fax: &quot;,&quot;#&quot;,$testo1);</p>
<p> Così nella variabile $testo1 avrò qalcosa come:</p>
<p> Cavaliere Assicurazioni#Indirizzo: Via dello Stagno, 1#60019 Senigallia (AN)#+39 1234 56789 #+39 1234 456787#info@cavaliereassicurazioni.it#http://www.cavaliereassicurazioni.it#</p>
<p> Ovvero una riga con tutti i dati dell&#8217;agenzia separati dal carattere &quot;#&quot;.<br /> Sarà sufficiente scrivere questi dati su un file di testo&#8230;</p>
<p> $fp = fopen(&quot;agenzie.txt&quot;,&quot;a&quot;); <br /> $riga = $testo1.&quot;\\r\\n&quot;;<br /> fputs ($fp,$riga);</p>
<p> &#8230;e con un semplice gioco di refresh, ricaricherete questa pagina cambiando il valore della variabile idcompany richiamata nell&#8217;URL (variabile $pagina).</p>
<p> $pagina = &quot;http://www.dominio.it/modules.php?name=contact&amp;idcompany=454&amp;file=categories&amp;op=newindex;<br /> $pagina = &quot;http://www.dominio.it/modules.php?name=contact&amp;idcompany=455&amp;file=categories&amp;op=newindex;<br /> $pagina = &quot;http://www.dominio.it/modules.php?name=contact&amp;idcompany=456&amp;file=categories&amp;op=newindex;<br /> $pagina = &quot;http://www.dominio.it/modules.php?name=contact&amp;idcompany=457&amp;file=categories&amp;op=newindex;</p>
<p> Non mi dilungo nei dettagli, non sarebbe politically correct. };)<br /> Purtroppo le aziende che permettono di visualizzare i loro archivi con dei semplici elenchi numerati (a volte per poca professionalità del webmaster, più raramente per esigenze di programmazione) possono subire quest&#8217;attacco.<br /> Ovviamente i dati così &quot;prelevati&quot; <strong>non possono essere utilizzati per inviare fax o intasare email con pubblicità, ma chi ricorre a questi trucchi spesso non si fa scrupoli</strong>.<br /> La cosa curiosa è che anche le grandi aziende che vendono gli indirizzi in loro possesso non hanno preso provvedimenti, permettono a qualunque malintenzionato con un po&#8217; di conoscenze di programmazione di fargliela sotto il naso.</p>
<p> <strong>DISCLAMER:<br /> Non ho fatto nulla di quanto c&#8217;è scritto, ma semplicemente è fattibile, ciò si evince dall&#8217;architettura dei vari siti che non ho citato appositamente.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2007/02/trovare-indirizzi-email-su-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verificare la lettura di un&#8217;email</title>
		<link>http://www.sarnari.net/programmazione/2007/01/verificare-la-lettura-di-unemail/</link>
		<comments>http://www.sarnari.net/programmazione/2007/01/verificare-la-lettura-di-unemail/#comments</comments>
		<pubDate>Thu, 11 Jan 2007 00:56:50 +0000</pubDate>
		<dc:creator>Sergio Sarnari</dc:creator>
				<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.sarnari.net/senza-categoria/2007/01/verificare-la-lettura-di-unemail/</guid>
		<description><![CDATA[Il codice qui riportato aiuta a verificare quante persone ricevono la mail in formato html che voi inviate. Si avvale di un trucco pensato nelle giornate invernali: una delle immagini non è una vera immagine ma un file PHP che, utilizzando le librerie GD ed un file di testo, annota gli indirizzi IP di tutti [...]]]></description>
			<content:encoded><![CDATA[<p>Il codice qui riportato aiuta a <strong>verificare quante persone ricevono la mail in formato html che voi inviate</strong>.<br /> Si avvale di un trucco pensato nelle giornate invernali: una delle immagini non è una vera immagine ma un file PHP che, <strong>utilizzando le librerie GD ed un file di testo, annota gli indirizzi IP di tutti quelli che aprono la vostra mail</strong>.</p>
<p>Recenti aggiornamenti dei client di posta, in particolare il nuovo Outlook che sembra utilizzerà pesanti filtri nelle email informato HTML e l&#8217;installazione del SP2 per XP (che disabilita la visualizzazione delle immagini nei messaggi HTML), lo rendono un po&#8217; antiquato, anche se sarà funzionante ancora per qualche tempo.</a> </p>
<p>Create nel sito http://www.miosito.it/ una cartella chiamata &quot;log&quot; con permesso 777.</p>
<p>All&#8217;interno della mail che inviate (sempre in formato HTML) ci sarà un&#8217;immagine chiamata &lt; img src=&quot;http://miosito.it/logo.php?n=codicespedizione&quot;&gt;</p>
<p>Il file http://www.miosito.it/logo.php avrà il contenuto seguente:</p>
<p>&lt; ? if ($n) {<br /> $indirizzo= $_SERVER[&quot;REMOTE_ADDR&quot;];<br /> if (!file_exists(&quot;./log/&quot;.$n.&quot;.txt&quot;)) {<br /> $fp = fopen(&quot;./log/&quot;.$n.&quot;.txt&quot;,&quot;w&quot;);<br /> } else {<br /> $fp = fopen(&quot;./log/&quot;.$n.&quot;.txt&quot;,&quot;r+&quot;);<br /> }<br /> while (!feof($fp)) {<br /> $riga= fgets($fp);<br /> list($numero,$data)=explode(&quot;-&quot;,$riga);<br /> if ($numero==$indirizzo) {<br /> $presente=1;<br /> }<br /> }<br /> fclose($fp);<br /> if ($presente!=1) {<br /> $adesso= date (&quot;d/m/Y H:i&quot;);<br /> $nuovariga=&quot;$indirizzo $adesso\\r\\n&quot;;</p>
<p> $fp = fopen(&quot;./log/&quot;.$n.&quot;.txt&quot;,&quot;a&quot;);<br /> fputs ($fp,$nuovariga);<br /> fclose($fp);<br /> }<br /> }<br /> $temp=imagecreatefromjpeg($img);<br /> header(&quot;Content-Type: image/jpeg&quot;);<br /> imagejpeg($temp,&#8221;,100);<br /> imagedestroy($temp);<br /> ?&gt;</p>
<p>Mi raccomando, fatemi sapere cosa ne pensate ed usatelo con cura&#8230;<br /> Un ultima cosa&#8230; l&#8217;ho chiamato Cassandra. };)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarnari.net/programmazione/2007/01/verificare-la-lettura-di-unemail/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
