<?xml version="1.0" encoding="ISO-8859-1"?>
<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>Linux, PHP, MySQL, Windows, C# &#187; PHP il turbo nel web</title>
	<atom:link href="http://www.massimo-caselli.com/category/opensource-world/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.massimo-caselli.com</link>
	<description>Articoli, news e pillole sul mondo LAMP e l&#039;opensource. Pillole di C#</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:36:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Creare un form con Zend Form, decorator pattern e display group con esempio completo form di registrazione utente</title>
		<link>http://www.massimo-caselli.com/2012/01/16/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/</link>
		<comments>http://www.massimo-caselli.com/2012/01/16/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 15:16:07 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[decorators]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[zend form]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=311</guid>
		<description><![CDATA[Rilancio l&#8217;articolo di Sergio che nel suo blog spiega come creare un form con Zend Form, decorator pattern e display group con esempio completo form di registrazione utente. Tale tecnica consente di non dover creare una view-scripts per ogni form se a priori si sa già come deve essere generato il codice html dei form. http://razorblade.netsons.org/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/]]></description>
			<content:encoded><![CDATA[<p>Rilancio l&#8217;articolo di Sergio che nel suo blog spiega come <strong>creare un form con Zend Form, decorator pattern e display group con esempio completo form di registrazione utente.</strong></p>
<p>Tale tecnica consente di non dover creare una view-scripts per ogni form se a priori si sa già come deve essere generato il codice html dei form.</p>
<p><a href="http://razorblade.netsons.org/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/" target="_blank">http://razorblade.netsons.org/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2012/01/16/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework e la sua (pessima) implementazione del pattern MVC</title>
		<link>http://www.massimo-caselli.com/2011/05/10/zend-framework-e-la-sua-pessima-implementazione-del-pattern-mvc/</link>
		<comments>http://www.massimo-caselli.com/2011/05/10/zend-framework-e-la-sua-pessima-implementazione-del-pattern-mvc/#comments</comments>
		<pubDate>Tue, 10 May 2011 15:37:30 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zend framework mvc]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=288</guid>
		<description><![CDATA[Dopo aver sperimentato l&#8217;utilizzo di Zend Framework in piccoli progettini, dapprima come framework puro (tipo pear per intenderci) e in un paio di occasioni con l&#8217;utilizzo della sua gestione del pattern MVC, mi ero fatto l&#8217;idea che: Come framework in sé non sia per niente male L&#8217;implementazione dell&#8217;MVC fosse buona, non eccezionale ma buona Bene, [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo aver sperimentato l&#8217;utilizzo di Zend Framework in piccoli progettini, dapprima come framework puro (tipo pear per intenderci) e in un paio di occasioni con l&#8217;utilizzo della sua gestione del pattern MVC, mi ero fatto l&#8217;idea che:</p>
<ul>
<li>Come framework in sé non sia per niente male</li>
<li>L&#8217;implementazione dell&#8217;MVC fosse buona, non eccezionale ma buona</li>
</ul>
<p>Bene, sto lavorando da un paio di settimane su un progetto complesso e sto utilizzando <strong>Zend Framework nella sua piena implementazione dell&#8217;MVC</strong>.<br />
Per cominciare (ma questo lo avevo già deciso sulla base delle precedenti esperienze), ho preferito evitare l&#8217;utilizzo di Zend_DB e della modalità che suggerisce la Zend stessa nei suoi tutorial per la gestione del model.<br />
La motivazione era dovuta al fatto che non amavo la libreria in generale, ma soprattutto mi è sempre sembrato che la <strong>definizione del model richiedesse un overhead di sviluppo eccessivo</strong>.<br />
Morale, il model l&#8217;ho gestito con classi scritte da me direttamente e utilizzando il caro, vecchio e affidabile adodb.</p>
<p>Sono però rimasto esterrefatto dalla <strong>terribile applicazione del pattern MVC</strong> per le seguenti cose, <strong>in ordine di gravità</strong>:</p>
<ol>
<li><strong><em>Mischione logico tra View e Controller/BusinessLogic nella definizione delle form (Zend_Form)</em></strong></li>
<li><strong><em>Assenza di parametri nelle action</em></strong></li>
<li><strong><em>Action i quali nomi dei metodi devono essere tutti minuscoli, tutti attaccati e con alla fine &#8220;Action&#8221;</em></strong></li>
</ol>
<p><strong>Vado a spiegarmi meglio, per il punto 1:</strong><br />
La Zend suggerisce/propina l&#8217;utilizzo di Zend Form. Le Zend form di fatto definiscono i campi del form, le validazioni e via discorrendo. Fin qui direi tutto sommato abbastanza bene, è sufficiente definire una classe ApplicationForm che estenda Zend_Form. All&#8217;interno dell&#8217;init() si aggiungono tutti i vari elementi con le loro particolarità (ovviamente alcune cose specifiche possono essere inserite sia a livello di metodi aggiuntivi della classe che direttamente da controller).<br />
Peccato però che all&#8217;interno di questa definizione di campi, oltre a cose sensate come le validazioni, il required etc&#8230; sia necessario inserire label, id, classi css, ovvero tutti aspetti sostanzialmente relativi alla parte di view.<br />
Infatti da controller si istanzia la classe, tipo $form = new ApplicationForm(); e $form si passa alla view direttamente. La view non farà altro che renderizzare la form.<br />
Questo significa che se un grafico/htmlista deve modificare qualcosa NON lo può fare dalla view, ma deve chiedere (o fare direttamente) al programmatore di agire sulla classe ApplicationForm().</p>
<p>@Zend: ma la separazione dei livelli dove la lasciamo?</p>
<p>Al di là di aspetti puristici e filosofici, questo rappresenta UN PROBLEMA CONCRETO.</p>
<p><strong>Punto 2:</strong><br />
Il minimo che potevo aspettarmi (ovviamente lo avevo già notato anche in progetti più piccoli ma davo per scontato esistesse qualche variante per gestirlo) è che i metodi delle action potessero/dovessero essere parametrici.<br />
Invece niente, il metodo detailsAction() che vorrebbe molto probabilmente l&#8217;id da cui attingere i dati, non può essere detailsAction($id), ma $id va recuperato in get/post come si fa da 100 anni.<br />
Ho trovato qualche variante in giro di terze parti per avere i parametri nelle action ma a parte che non funzionavano benissimo, mi pare paradossale che un framework di X Mbyte non supporti i parametri nelle action della sua versione dell&#8217;MVC.</p>
<p><strong>Punto 3:</strong><br />
Se richiamo ad esempio: http://www.massimo-caselli.com/Article/GetArticleDetails sono costretto a nominare la action in: public function getarticledetailsAction().<br />
E&#8217; il minore dei mali, però insomma anche la leggebilità del codice non è che sia poi una cosa troppo secondaria.</p>
<p>Per farla comunque breve devo dire che in questo caso, <strong>Microsoft batte Zend nell&#8217;implementazione dell&#8217;MVC 10 a 0. <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/05/10/zend-framework-e-la-sua-pessima-implementazione-del-pattern-mvc/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Implementare Zend Framework MVC in un subfolder</title>
		<link>http://www.massimo-caselli.com/2011/04/18/implementare-zend-framework-mvc-in-un-subfolder/</link>
		<comments>http://www.massimo-caselli.com/2011/04/18/implementare-zend-framework-mvc-in-un-subfolder/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 20:07:07 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Mondo informatica]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=273</guid>
		<description><![CDATA[Vediamo rapidamente come implementare Zend Framework all&#8217;interno di un subfolder. Tipicamente i tutorial e la documentazione ufficiale parlano sempre di avere un&#8217;applicazione essenzialmente composta dalla struttura di ZF esterna alla document root, il folder public che rappresenta la document root. Facendo un esempio pratico, normalmente per implementare il sito: http://www.massimo-caselli.com mediante ZF ed MVC, la [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Vediamo rapidamente come implementare <a title="Zend framework" href="http://framework.zend.com/" target="_blank">Zend Framework</a> all&#8217;interno di un subfolder.</strong><br />
Tipicamente i tutorial e la documentazione ufficiale parlano sempre di avere un&#8217;applicazione essenzialmente composta dalla struttura di ZF esterna alla document root, il folder public che rappresenta la document root.<br />
Facendo un esempio pratico, normalmente per implementare il sito:</p>
<p><a href="http://www.massimo-caselli.com">http://www.massimo-caselli.com</a> mediante ZF ed <a title="Model Viewer Controller" href="http://it.wikipedia.org/wiki/Model-View-Controller" target="_blank">MVC</a>, la situazione che ci troviamo comunemente è composta da:</p>
<ul>
<li>application</li>
<li>docs</li>
<li>library</li>
<li>public (document root di <a target="_blank" href="http://www.apache.org">apache</a>)</li>
</ul>
<p>Ipotizzando di volere ad esempio implementare una specifica sezione del sito sotto ZF e il resto diversamente, possiamo immaginarci una soluzione di questo tipo:</p>
<p>http://www.massimo-caselli.com/zend-frameword</p>
<p>Per fare questo bastano due piccoli interventi (almeno con le versioni più recenti del framework):</p>
<ul>
<li>Creare il folder zend-framework sotto la document root del sito web</li>
<li>All&#8217;interno del folder zend-framework installare la struttura di ZF</li>
<li>Modificare il file application/config/application.ini aggiungendo la riga: resources.frontController.baseUrl = &#8220;/zend-framework&#8221;</li>
<li>Proteggere il file application.ini da lettura da web (a questo punto avremo ZF all&#8217;interno della docs root del server web)</li>
<li>Rimuovere pure il folder public da dentro ZF avendo prima copiato il file index.php all&#8217;interno della root del folder zend-framework</li>
<li>Modificare l&#8217;ultima rewrite rule in: RewriteRule ^.*$ /zend-framework/index.php [NC,L]</li>
</ul>
<p>Il gioco è fatto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/04/18/implementare-zend-framework-mvc-in-un-subfolder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP for android, php per il mobile?</title>
		<link>http://www.massimo-caselli.com/2010/11/12/php-for-android-php-per-il-mobile/</link>
		<comments>http://www.massimo-caselli.com/2010/11/12/php-for-android-php-per-il-mobile/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 21:04:45 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=245</guid>
		<description><![CDATA[Segnalo il progetto php for android: http://phpforandroid.net/ Ammetto di non averlo mai provato per adesso, ma ce l&#8217;ho nei todo&#8217;s!]]></description>
			<content:encoded><![CDATA[<p>Segnalo il progetto <strong><a target="_blank" href="http://www.php.net">php</a> for android</strong>:<br />
<a href="http://phpforandroid.net/" target="_blank"> http://phpforandroid.net/</a></p>
<p>Ammetto di non averlo mai provato per adesso, ma ce l&#8217;ho nei todo&#8217;s! <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2010/11/12/php-for-android-php-per-il-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux/Ubuntu, usare Access tramite ODBC con PHP</title>
		<link>http://www.massimo-caselli.com/2010/02/25/linuxubuntu-usare-access-tramite-odbc-con-php/</link>
		<comments>http://www.massimo-caselli.com/2010/02/25/linuxubuntu-usare-access-tramite-odbc-con-php/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 13:25:27 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mdb]]></category>
		<category><![CDATA[odbc]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=188</guid>
		<description><![CDATA[Linko un ottimo articolo che spiega come utilizzare Access da php su Linux utilizzando ODBC. L&#8217;articolo fa riferimento ad Ubuntu, comunque in linea di massima è applicabile su qualunque altra distro. http://www.lorenzoingrilli.it/database-access-mdb-da-linux-via-odbc]]></description>
			<content:encoded><![CDATA[<p>Linko un ottimo articolo che spiega come utilizzare Access da <a target="_blank" href="http://www.php.net">php</a> su Linux utilizzando ODBC.<br />
L&#8217;articolo fa riferimento ad Ubuntu, comunque in linea di massima è applicabile su qualunque altra distro.</p>
<p><a href="http://www.lorenzoingrilli.it/database-access-mdb-da-linux-via-odbc" target="_blank">http://www.lorenzoingrilli.it/database-access-mdb-da-linux-via-odbc</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2010/02/25/linuxubuntu-usare-access-tramite-odbc-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMware server 2.0 console plugin su Firefox 3.6 e IE su sistemi operativi 64 bit</title>
		<link>http://www.massimo-caselli.com/2010/02/19/vmware-server-2-0-console-plugin-su-firefox-3-6-e-ie-su-sistemi-operativi-64-bit/</link>
		<comments>http://www.massimo-caselli.com/2010/02/19/vmware-server-2-0-console-plugin-su-firefox-3-6-e-ie-su-sistemi-operativi-64-bit/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 14:32:38 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[console vmware]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=186</guid>
		<description><![CDATA[Per chi avesse appena aggiornato a firefox 3.6 oppure installato ex-novo, fate attenzione che la console plugin per firefox di VMware 2.0 non funziona. La cosa più semplice è di usarla su internet explorer o in alternativa downgradare a firefox 3.5 Attenzione ancora però, se avete il sistema operativo a 64 bit come nel mio [...]]]></description>
			<content:encoded><![CDATA[<p>Per chi avesse appena aggiornato a <a target="_blank" href="http://www.mozilla.com">firefox</a> 3.6 oppure installato ex-novo, fate attenzione che la console plugin per <a target="_blank" href="http://www.mozilla.com">firefox</a> di VMware 2.0 non funziona.</p>
<p>La cosa più semplice è di usarla su internet explorer o in alternativa downgradare a <a target="_blank" href="http://www.mozilla.com">firefox</a> 3.5</p>
<p>Attenzione ancora però, se avete il sistema operativo a 64 bit come nel mio caso, la console funziona solamente nella versione a 32 bit di internet explorer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2010/02/19/vmware-server-2-0-console-plugin-su-firefox-3-6-e-ie-su-sistemi-operativi-64-bit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installazione IonCube Loader su Zend Server CE in Windows</title>
		<link>http://www.massimo-caselli.com/2009/10/27/installazione-ioncube-loader-su-zend-server-ce-in-windows/</link>
		<comments>http://www.massimo-caselli.com/2009/10/27/installazione-ioncube-loader-su-zend-server-ce-in-windows/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 12:09:14 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Apache, Webserver]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[ioncube]]></category>
		<category><![CDATA[zend server]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=171</guid>
		<description><![CDATA[Semplice guida per installare IonCube Loader su Zend Server CE in Windows, l&#8217;how to standard non funziona: 1) Scaricare pacchetto e scompattare sul desktop (versione NON TS): http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_win_nonts_x86.zip 2) Copiare il file ioncube_loader_win_5.2.dll in: C:\Programmi\Zend\ZendServer\lib\phpext 3) Aprire il file con editor testuale: C:\Programmi\Zend\ZendServer\etc\php.ini Sopra la riga: zend_extension=&#8221;C:\Programmi\Zend\ZendServer\lib\ZendExtensionManager.dll&#8221; Inserire queste due righe: zend_extension=&#8221;C:\Programmi\Zend\ZendServer\lib\phpext\ioncube_loader_win_5.2.dll&#8221; zend_extension_ts=&#8221;C:\Programmi\Zend\ZendServer\lib\phpext\ioncube_loader_win_5.2.dll&#8221; Salvare e [...]]]></description>
			<content:encoded><![CDATA[<p>Semplice guida per installare IonCube Loader su Zend Server CE in Windows, l&#8217;how to standard non funziona:</p>
<p><strong>1) Scaricare pacchetto e scompattare sul desktop (versione NON TS): </strong><br />
<a class="moz-txt-link-freetext" href="http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_win_nonts_x86.zip">http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_win_nonts_x86.zip</a></p>
<p><strong>2) Copiare il file </strong><br />
ioncube_loader_win_5.2.dll in:<br />
C:\Programmi\Zend\ZendServer\lib\phpext</p>
<p><strong>3) Aprire il file con editor testuale: </strong><br />
C:\Programmi\Zend\ZendServer\etc\<a target="_blank" href="http://www.php.net">php</a>.ini<br />
Sopra la riga:<br />
zend_extension=&#8221;C:\Programmi\Zend\ZendServer\lib\ZendExtensionManager.dll&#8221;<br />
Inserire queste due righe:<br />
zend_extension=&#8221;C:\Programmi\Zend\ZendServer\lib\phpext\ioncube_loader_win_5.2.dll&#8221;<br />
zend_extension_ts=&#8221;C:\Programmi\Zend\ZendServer\lib\phpext\ioncube_loader_win_5.2.dll&#8221;</p>
<p><strong>Salvare e riavviare <a target="_blank" href="http://www.apache.org">apache</a>. </strong></p>
<p>Verificare in phpinfo() se l&#8217;estensione viene caricata correttamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2009/10/27/installazione-ioncube-loader-su-zend-server-ce-in-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to installazione mssql su Zend Server CE su linux con freetds</title>
		<link>http://www.massimo-caselli.com/2009/06/26/how-to-installazione-mssql-su-zend-server-ce-su-linux-con-freetds/</link>
		<comments>http://www.massimo-caselli.com/2009/06/26/how-to-installazione-mssql-su-zend-server-ce-su-linux-con-freetds/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 13:52:55 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Apache, Webserver]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[freetds]]></category>
		<category><![CDATA[mssql]]></category>
		<category><![CDATA[zend server]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=169</guid>
		<description><![CDATA[Di seguito alcuni semplici passaggi per installare su Zend Server CE installato su linux l&#8217;estensione mssql, freetds, per poter utilizzare un server MSSQL da php su macchina Linux. Per prima cosa, installiamo freetds: yum install freetds Dopo procediamo a installare l&#8217;estensione mssql di ZS che non è fornita di default: yum install php-mssql-zend-ce L&#8217;estensione sarà [...]]]></description>
			<content:encoded><![CDATA[<p>Di seguito alcuni semplici passaggi per installare su Zend Server CE installato su linux l&#8217;estensione mssql, freetds, per poter utilizzare un server MSSQL da <a target="_blank" href="http://www.php.net">php</a> su macchina Linux.</p>
<p>Per prima cosa, installiamo freetds:<br />
yum install freetds</p>
<p>Dopo procediamo a installare l&#8217;estensione mssql di ZS che non è fornita di default:<br />
yum install <a target="_blank" href="http://www.php.net">php</a>-mssql-zend-ce</p>
<p>L&#8217;estensione sarà attivata da sola. Meglio comunque riavviare lo zend server.</p>
<p>Andare all&#8217;interno di /etc/freetds.conf</p>
<p>Mettere:<br />
# Myserver<br />
[mysqlserver]<br />
host = 192.168.X.X<br />
port = 1433<br />
tds version = 8.0</p>
<p>A questo punto per connettersi da <a target="_blank" href="http://www.php.net">php</a> utilizzare:</p>
<p>mssql_connect(&#8220;192.168.X.X&#8221;, &#8220;login&#8221;, &#8220;pwd&#8221;) or die (&#8220;Failed&#8221;);</p>
<p>E il gioco è fatto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2009/06/26/how-to-installazione-mssql-su-zend-server-ce-su-linux-con-freetds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transazioni con Zend Framework</title>
		<link>http://www.massimo-caselli.com/2009/03/26/transazioni-con-zend-framework/</link>
		<comments>http://www.massimo-caselli.com/2009/03/26/transazioni-con-zend-framework/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 19:31:40 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[transazioni mysql]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=167</guid>
		<description><![CDATA[Recentemente avendo sviluppato nelle ore serali un progetto web ( www.animalhelp-spb.com ) per supportare e cercare di far trovare casa a cani e gatti randagi russi, ho deciso di realizzarlo iniziando a farmi le ossa con Zend Framework. Premetto che devo ancora dettagliare ed approfondire la conoscenza di questo strumento, in particolare nell&#8217;utilizzo secondo la [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente avendo sviluppato nelle ore serali un progetto web ( <a title="Animal help san pietroburgo" href="http://www.animalhelp-spb.com" target="_blank">www.animalhelp-spb.com</a> ) per supportare e cercare di far trovare casa a cani e gatti randagi russi, ho deciso di realizzarlo iniziando a farmi le ossa con <a title="Zend framework" href="http://framework.zend.com" target="_blank"><strong>Zend Framework</strong></a>.</p>
<p>Premetto che devo ancora dettagliare ed approfondire la conoscenza di questo strumento, in particolare nell&#8217;utilizzo secondo la logica <strong>MVC (model &#8211; viewer &#8211; controller)</strong>, però l&#8217;ho trovato molto interessante, in particolare per la <strong>gestione delle transazioni</strong>.</p>
<p>In sostanza prima di tutto istanzio la classe corretta parametrizzando gli accessi al database:</p>
<p>$dbparams = array(&#8216;host&#8217; =&gt; DB_HOST, &#8216;username&#8217; =&gt; DB_USER, &#8216;password&#8217; =&gt; DB_PWD, &#8216;dbname&#8217; =&gt; DB_NAME);<br />
$db = new Zend_Db_Adapter_Mysqli($dbparams);<br />
$db-&gt;setFetchMode(Zend_Db::FETCH_OBJ);</p>
<p>Successivamente apro la transazione:</p>
<p>$db-&gt;beginTransaction();<br />
try<br />
{<br />
&#8230;. query 1 &#8230;.<br />
&#8230;. query 2 &#8230;.</p>
<p>$db-&gt;commit();<br />
}<br />
catch (Exception $e)<br />
{<br />
$db-&gt;rollBack();<br />
&#8230;.<br />
}</p>
<p>In sostanza nel caso vi sia un errore all&#8217;interno della transazione viene automaticamente rollbackato secondo una modalità simile a quella usata da adodb &#8220;Smart Transaction&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2009/03/26/transazioni-con-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Potenziale SQL Injection con AdoDB e driver mysqli</title>
		<link>http://www.massimo-caselli.com/2008/12/29/sql-injection-con-adodb-estensione-mysqli/</link>
		<comments>http://www.massimo-caselli.com/2008/12/29/sql-injection-con-adodb-estensione-mysqli/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 21:59:42 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Apache, Webserver]]></category>
		<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[adodb]]></category>
		<category><![CDATA[adodb mysqli]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqli]]></category>
		<category><![CDATA[sql injection]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=156</guid>
		<description><![CDATA[[SEGNALO CHE HO SCOPERTO QUESTA COSA DA POCO E LIMITANDOMI AD ALCUNI TEST E PROVE VELOCI MA REALI, PERCUI OGNI EVENTUALE APPROFONDIMENTO/SMENTITA ETC... E' BEN ACCETTO] Segnalo una problematica di sicurezza abbastanza importante per coloro che utilizzano adodb utilizzando il driver mysqli (le nuove funzioni di connessione con mysql native in php 5). In sostanza [...]]]></description>
			<content:encoded><![CDATA[<p>[SEGNALO CHE HO SCOPERTO QUESTA COSA DA POCO E LIMITANDOMI AD ALCUNI TEST E PROVE VELOCI MA REALI, PERCUI OGNI EVENTUALE APPROFONDIMENTO/SMENTITA ETC... E' BEN ACCETTO]</p>
<p>Segnalo una <strong>problematica di sicurezza abbastanza importante</strong> per coloro che utilizzano <strong><a title="Adodb" href="http://adodb.sourceforge.net/" target="_blank">adodb </a>utilizzando il driver mysqli</strong> (le nuove funzioni di connessione con <a target="_blank" href="http://www.mysql.com">mysql</a> native in <a target="_blank" href="http://www.php.net">php</a> 5).</p>
<p>In sostanza le nuove funzioni mysqli consentono mediante la seguente funzione: <a title="mysql multi query" href="http://it.php.net/manual/en/mysqli.multi-query.php" target="_blank">mysqli_multi_query</a> di poter <strong>eseguire più statement SQL in <a target="_blank" href="http://www.mysql.com">mysql</a></strong> come ad esempio:</p>
<p><em>SELECT * FROM TBL1 WHERE id = 1; DROP table TBL2;</em></p>
<p>Questa query utilizzando le <strong>vecchie librerie <a target="_blank" href="http://www.mysql.com">mysql</a> (es. mysql_connect) dava errore</strong>.<br />
La possibilità di <strong>eseguire più query SQL è supportata su <a target="_blank" href="http://www.mysql.com">mysql</a> 5.0.x anche da command line</strong>, non saprei se anche vecchie versioni lo consentivano.</p>
<p>Questo significa che se per esempio utilizziamo in <a target="_blank" href="http://www.php.net">php</a> una query del tipo:</p>
<p><em>$sql = &#8220;SELECT * FROM tbl1 WHERE id = $_GET['id']&#8220;; // (Premesso che venga come minimo fatto l&#8217;escape dei caratteri come &#8216; o &#8220;)</em></p>
<p>Possiamo rischiare che qualche burlone passi in GET il seguente valore:<br />
<em>&#8220;1; DROP TABLE tbl2;&#8221;</em><br />
Il che comporterebbe che l&#8217;SQL eseguito sia:</p>
<p><em>SELECT * FROM TBL1; DROP table TBL2;</em></p>
<p>Di fatto quindi con AdoDB con driver mysqli, la seconda query viene effettivamente eseguita.</p>
<p>Diventa quindi <strong>essenziale fare un controllo sull&#8217;input dell&#8217;utente per $_GET['id']</strong>. Ad esempio verificando che sia un numero intero.</p>
<p><strong>La soluzione più rapida è quella di cambiare la connect di AdoDB dicendogli di usare il driver <a target="_blank" href="http://www.mysql.com">mysql</a></strong> anziché mysqli, la soluzione migliore e da fare comunque resta <strong>in ogni caso il filtraggio di tutti i dati in input.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2008/12/29/sql-injection-con-adodb-estensione-mysqli/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

