<?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>paniko &#187; PHP</title>
	<atom:link href="http://www.paniko.org/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paniko.org</link>
	<description>Un blog dedicato alla programmazione...</description>
	<lastBuildDate>Thu, 05 Jan 2012 13:51:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Zend 1.11.0</title>
		<link>http://www.paniko.org/2010/11/02/zend-1-11/</link>
		<comments>http://www.paniko.org/2010/11/02/zend-1-11/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 22:47:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Designer]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.paniko.org/?p=201</guid>
		<description><![CDATA[E' finalmente disponibile per il donwload il nuovo framework Zend 1.11.0, sono curioso di scoprire tutte le novità del nuovo framework e di studiare i nuovi tutorial che spero usciranno sulla rete.

Ecco le principali novità:]]></description>
			<content:encoded><![CDATA[<p><a href="http://zendframework.com/download/latest"><img class="alignleft" title="zend framework" src="http://zendframework.com/images/download/zend_framework_box.png" alt="zend framework" width="77" height="91" /></a></p>
<p>E&#8217; finalmente disponibile per il donwload il nuovo framework Zend  1.11.0, sono curioso di scoprire tutte le novità del nuovo framework e  di studiare i nuovi tutorial che spero usciranno sulla rete.</p>
<p>Ecco le principali novità:<span id="more-201"></span></p>
<h3>Mobile di supporto</h3>
<p>Supporto per i  dispositivi mobili, attraverso il nuovo componente <strong>Zend_Http_UserAgent</strong>. Questo componente è stato sviluppato da Carles Raffaello. Carles è CTO di Interakting, l&#8217;agenzia digitale di Business &amp; Decision Group of France. Interakting  impiega 150 professionisti PHP per costruire progetti industriali di  PHP, ei suoi clienti includono Canal / Vivendi, BNP Paribas, Samsung  Francia, Ministero della Pubblica Istruzione, Alapage (Orange), Orange  Tunisia, e molti altri. Come tali, hanno una vasta  esperienza nel supportare i dispositivi mobili, contribuendo all&#8217;utilizzo diZend Framework nei loro progetti.</p>
<p>Zend_Http_UserAgent svolge due compiti:</p>
<ul>
<li> User-Agent rilevazione</li>
<li> Dispositivo di capacità di rilevazione, basata su User-Agent</li>
</ul>
<p>Il  componente include un meccanismo di &#8220;caratteristiche&#8221;  che  permette agli sviluppatori di legare in diversi backend ai fini della  funzionalità del dispositivo. Attualmente,  Zend Framework viene fornito con adattatori per il WURFL (Wireless  Universal Resource File) API, Tera-WURFL, e DeviceAtlas, con più  previsti per il futuro.</p>
<p>Luca  Passani, autore e capofila del progetto WURFL, ha previsto una deroga a  Zend Framework per fornire una scheda non-GPL accesso alla WURFL PHP  API.</p>
<p>Hook aggiuntivi nel  componente sono forniti tramite una risorsa Zend_Application plugin, e  di un helper Zend_View, permettendo agli sviluppatori la possibilità  di restituire l&#8217;output su misura per il dispositivo individuato (per  esempio, layout alternativi, le alternative  immagini, Flash versus  supporto HTML5, ecc.)<br />
Zend_Cloud: API SimpleCloud</p>
<p>Durante ZendCon 2009, Zend ha annunciato un prototipo di API SimpleCloud. Questa API è stato quello di fornire hook in deposito documento cloud-based, servizi di coda e archiviazione di file.</p>
<p>Zend  Framework 1.11.0 Markes il primo ufficiale, versione stabile di  Zend_Cloud, versione di PHP di Zend Framework delle API SimpleCloud. Il sostegno attuale comprende:</p>
<ul>
<li> Document Services:
<ul>
<li> Amazon <code>SimpleDB</code></li>
<li> Windows Azure&#8217;s Table Storage</li>
</ul>
</li>
<li> Queue Services:
<ul>
<li> Amazon Simple Queue Service (SQS)</li>
<li> Windows Azure&#8217;s Queue Service</li>
<li> All adapters supported by <code>Zend_Queue</code>:
<ul>
<li> Zend Platform <code>JobQueue</code></li>
<li> Memcacheq</li>
<li> Relational Database</li>
<li> <code>ActiveMQ</code></li>
</ul>
</li>
</ul>
</li>
<li> Storage Services:
<ul>
<li> Amazon Simple Storage Service (S3)</li>
<li> Windows Azure&#8217;s Blog Storage</li>
<li> Nirvanix</li>
<li> Local filesystem</li>
</ul>
</li>
</ul>
<p>Quando  si utilizza una qualsiasi delle API SimpleCloud, il codice sarà  portabile in tutti i vari adattatori forniti, con la possibilità di scegliere i  propri servizi, oltre a provare i vari servizi fino a trovare uno che  si adatta alle esigenze di applicazione. Inoltre,  se si scopre che è necessario un codice specifico per il proprio adapter, questo è possibile realizzarlo.</p>
<p>Più schede arriveranno nei prossimi mesi, che vi offriranno maggiori opzioni!</p>
<p>Ringraziamo Wil Sinclair e Stas Malyshev per la loro assistenza nella release iniziale di Zend_Cloud.</p>
<h3>Sicurezza</h3>
<p>Su diverse  classi di Zend Framework sono state applicate le patch per eliminare il  rischio di fuga di informazioni di temporizzazione dal confronto  diretto dei dati sensibili come le password in chiaro o firme di  cifratura per l&#8217;input dell&#8217;utente. Queste perdite derivano dal normale processo di confronto tra le due stringhe in PHP. La  natura delle fughe di notizie è che le stringhe sono spesso paragonati  byte per byte, con un numero negativo è tornato presto, non appena ogni  insieme di bytes non-matching viene rilevato. I  byte di più che sono uguali (a partire dal primo byte) tra entrambi i  lati del confronto, il più necessario per un risultato finale deve  essere restituito. Sulla base del tempo  necessario per restituire un risultato positivo o negativo, è possibile  che un malintenzionato potrebbe, più di molti campioni di richieste, il  mestiere di una stringa che confronta positivamente a un altro valore  stringa segreto noto solo a un server di destinazione semplicemente  indovinando la stringa un byte alla volta e la misurazione del tempo di esecuzione di ogni congettura &#8216;. Questo  segreto server potrebbe essere una password in chiaro o la firma  corretta crittografica di una richiesta l&#8217;attaccante vuole eseguire,  come ad esempio viene utilizzato in molti protocolli aperti tra cui  OpenID e OAuth. Questo ovviamente potrebbe  consentire a un utente malintenzionato di ottenere informazioni  sufficienti per effettuare un attacco secondario, quali mascherata da un  utente autenticato.</p>
<p>Questa forma di attacco è noto come un attacco di sincronizzazione remota. Gli  attacchi sono stati problemi di sincronizzazione in passato, ma ad oggi  è stata molto difficile da eseguire in remoto via Internet a causa  delle interferenze di jitter di rete che limita la loro efficacia nella  risoluzione di differenze temporali molto piccole. Mentre  Internet rappresenta ancora una sfida per eseguire attacchi Timing  successo contro un server remoto, il crescente impiego di quadri sulle  reti locali e nel cloud computing, in cui il jitter di rete può essere  significativamente ridotta, aumenta la possibilità concreta che gli  attacchi a distanza Timing sarà possibile contro sempre più piccole fughe di informazioni temporali, come quelli trapelato durante il confronto di due stringhe. Per  precauzione, le modifiche applicate attuare un confronto tempo fisso  per diverse classi che sarebbe un target interessante in qualsiasi  potenziale attacco di sincronizzazione remota. Una  volta fissato funzione di confronto non perde tutte le informazioni  utili per timing un attaccante così in modo proattivo per prevenire ogni  futura vulnerabilità a queste forme di attacco.</p>
<p>Ringraziamo Padraic Brady per il suo impegno a individuare e patching queste vulnerabilità.</p>
<h4>Dojo di supporto</h4>
<p>predefinito  di Zend Framework versione Dojo Toolkit è stato portata alla versione  1.5.0, che include il nuovo componente dojox.mobile, un quadro semplice  per le applicazioni mobili sul lato client.</p>
<h4>SimpleDB</h4>
<p>Zend  Framework ha fornito il supporto per Amazon Simple Storage Service  (S3), Simple Queue Service (SQS), e Elastic Compute Cloud (EC2)  piattaforme di numerose release. Zend Framework 1.11.0 aggiunge il supporto per SimpleDB, storage  Amazon non-relazionali. Il supporto è disponibile per tutte le operazioni SimpleDB via Zend_Service_Amazon_SimpleDb.</p>
<p>adattatore SimpleDB di Zend Framework è stato originariamente scritto da Wil Sinclair.</p>
<h4>eBay API di supporto</h4>
<p>eBay ha un vasto REST API, permettendo agli sviluppatori di creare applicazioni che interagiscono con i loro dati estesi. Zend Framework 1.11.0 include Zend_Service_Ebay_Findings, che fornisce un supporto completo per le API di eBay Giudizio. Questa API consente agli sviluppatori di eBay query per i dettagli sulle aste attive, utilizzando categorie o parole chiave.</p>
<p>Zend_Service_Ebay è un contributo di Renan de Lima, Ramon Henrique Ornelas, e Don Bosco Nguyen Van Hoi.</p>
<h4>MariaDB Compatibilità</h4>
<p>Zend_Db  gli adattatori mysql e pdo_mysql sono pienamente compatibili MariaDB, e  la documentazione è stata aggiornata per riflettere opzioni di  configurazione per questo fork di MySQL.</p>
<h4>Nuovi formati di configurazione</h4>
<p>Zend_Config  è stata una componente molto popolare in Zend Framework, e ha offerto adapter per gli array di PHP, XML e file di configurazione INI. Zend Framework 1.11.0 ora offre due ulteriori formati di configurazione: YAML e JSON.</p>
<p>Zend_Config_Yaml  fornisce un rudimentale parser YAML, che dovrebbe funzionare con la  maggior parte dei formati di configurazione. Ma  consente anche di specificare un parser YAML alternativo, se desiderato,  consentendo di strumenti di leva come ext PECL&#8217;s / syck o componente  YAML symfony, sfYaml.</p>
<p>Zend_Config_Json sfrutta la componente Zend_Json, e per estensione ext / JSON.</p>
<p>Entrambe  le schede hanno il supporto per le costanti PHP, oltre a fornire la  possibilità di scrivere i file di configurazione basati su oggetti di  configurazione.</p>
<p>Stas Malyshev creato  entrambi gli adattatori per Zend Framework; Zend_Config_Json ha avuto  anche un contributo Sudheer Satyanarayana.</p>
<h4>Accorciamento URL</h4>
<p>Zend_Service_ShortUrl è stata aggiunta per questa versione. Il  componente offre una semplice interfaccia per l&#8217;utilizzo con servizi  più accorciamento URL, che definisce semplicemente i metodi di  &#8220;accorciare&#8221; e &#8220;unshorten&#8221;. Adattatori per due servizi, http://jdem.cz e http://tinyurl.com, sono dotati di questa versione.</p>
<p>Zend_Service_ShortUrl è un contributo di Martin Hujer.<br />
Vedi aggiuntivi Helpers</p>
<p>I diversi helper sono ora brevemente esposti:</p>
<ul>
<li>Zend_View_Helper_UserAgent nel componente Zend_Http_UserAgent, di cui sopra. Vi dà l&#8217;accesso all&#8217;istanza UserAgent, che consente di interrogare per il dispositivo e capacità.</li>
</ul>
<ul>
<li> Zend_View_Helper_TinySrc è una porzione aggiuntiva di offerta mobile di Zend Framework della versione 1.11.0. I  legami di supporto nella API TinySrc, permettendo a) per fornire le  dimensioni delle immagini specifiche della periferica e formati per il  vostro sito, e b) generazione di scaricare le immagini a questo servizio  di terze parti. L&#8217;helper crea i tag img che punta al servizio, e fornisce opzioni per specificare il dimensionamento adattivo e formati.</li>
</ul>
<ul>
<li> Zend_View_Helper_Gravatar nella API Gravatar, consentendo di  fornire un&#8217;immagine avatar per gli utenti registrati che utilizzano il  servizio di Gravatar. Questo supporto è un contributo di Marcin Morawski.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.paniko.org/2010/11/02/zend-1-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestionale banner open source</title>
		<link>http://www.paniko.org/2009/09/28/gestionale-banner-open-source/</link>
		<comments>http://www.paniko.org/2009/09/28/gestionale-banner-open-source/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 11:58:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.paniko.org/?p=102</guid>
		<description><![CDATA[Vuoi gestire la pubblicità, banner e annunci testuali, sul tuo website in modo professionale? Allora ti consigliamo il miglior gestore di banner open source, che per di più è gratuito. Si tratta del grandioso OpenX, un ad server completo e potente per gestire in ogni aspetto la pubblicità sul tuo network. In Italia e nel [...]]]></description>
			<content:encoded><![CDATA[<p><span class="CATrecord"><span class="CATdescrizione">Vuoi gestire la pubblicità, banner e annunci testuali, sul tuo website in modo professionale?<br />
Allora ti consigliamo <strong>il miglior gestore di banner open source</strong>, che per di più è gratuito. Si tratta del grandioso <strong>OpenX</strong>, un ad server completo e potente per gestire in ogni aspetto la pubblicità sul tuo network.</p>
<p>In Italia e nel mondo i siti più importanti usano OpenX per veicolare spot, banner, annunci testuali e quant&#8217;altro ai propri visitatori.</p>
<p>Con OpenX per esempio puoi alternare le pubblicità su criteri personali, per evitare il cosiddetto effetto <strong>cecità da banner</strong>. Potrai decidere di veicolare nella prima pagina visitata gli annunci AdSense, mentre nella seconda i banner di altri circuiti, puoi anche adottare questo meccanismo per singole zone. Ma OpenX è in grado di svolgere compiti ben più raffinati, come ben spiegato nel <a href="http://www.openx.org/ad-server" target="_blank">manuale online</a>, dove viene evidenziata, oltre alle altre tante feature, la capacità di questo ad server di comparare le varie campagne pubblicitarie per capire quali rendono di più e quelle da ottimizzare sotto il profilo dei guadagni.</p>
<p>Visitando il sito di OpenX scoprirete quanto è sofisticato e intuitivo questo ad server.</p>
<p><a href="http://www.openx.org/" target="_blank"><strong>www.openx.org</strong></a></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paniko.org/2009/09/28/gestionale-banner-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPMyAdmin 3.1</title>
		<link>http://www.paniko.org/2008/11/30/phpmyadmin-31/</link>
		<comments>http://www.paniko.org/2008/11/30/phpmyadmin-31/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 22:44:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.paniko.org/?p=76</guid>
		<description><![CDATA[Per addetti ai lavori, è disponibile la nuova versione dell&#8217;utility Open Source per la gestione dei database MySQL. Tanti bugfix e migliorie, per la lista completavi rimando al sito del team di sviluppo. http://www.phpmyadmin.net/]]></description>
			<content:encoded><![CDATA[<p>Per addetti ai lavori, è disponibile la nuova versione dell&#8217;utility Open Source per la gestione dei database MySQL. Tanti bugfix e migliorie, per la lista completavi rimando al sito del team di sviluppo.<br />
<a href="http://www.phpmyadmin.net/">http://www.phpmyadmin.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paniko.org/2008/11/30/phpmyadmin-31/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NetBeans e PHP, un accoppiata vincente?</title>
		<link>http://www.paniko.org/2008/06/19/netbeans-e-php-un-accoppiata-vincente/</link>
		<comments>http://www.paniko.org/2008/06/19/netbeans-e-php-un-accoppiata-vincente/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 06:04:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.paniko.org/?p=42</guid>
		<description><![CDATA[Sun torna all’attacco dei desktop degli sviluppatori con la versione 6.1 di NetBeans, disponibile ufficialmente da qualche giorno. La mamma di Java non sembra intenzionata a cedere terreno ad Eclipse ed ogni nuovo rilascio del suo editor apporta novità sostanziali: se in NetBeans 6.0 abbiamo visto l’introduzione del supporto a Ruby, la 6.1 sfoggia, tra [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ossblog.it/tag/netbeans"><img src="http://static.blogo.it/ossblog/netbeans_180.png" class="post" alt="NetBeans" style="border-color: white" align="left" border="0" height="50" width="180" /></a>Sun torna all’attacco dei desktop degli sviluppatori con la <a href="http://www.netbeans.org/servlets/NewsItemView?newsItemID=1230">versione 6.1 di NetBeans</a>, disponibile ufficialmente da qualche giorno. La mamma di Java non sembra intenzionata a cedere terreno ad Eclipse ed ogni nuovo rilascio del suo editor apporta novità sostanziali: se in <a href="http://www.ossblog.it/post/3536/netbeans-6-e-qui/">NetBeans 6.0</a> abbiamo visto l’introduzione del supporto a Ruby, la 6.1 sfoggia, <a href="http://www.netbeans.org/community/releases/61/index.html">tra le altre cose</a>, la possibilità di gestire in maniera grafica DB MySQL, il <a href="http://wiki.netbeans.org/PHP">supporto iniziale a PHP</a> ed ai <em>source code management</em> <a href="http://www.selenic.com/mercurial/wiki/">Mercurial</a> e <a href="http://git.or.cz/">Git</a>.</p>
<p>La <a href="http://download.netbeans.org/netbeans/6.1/final/">pagina dei download</a>, oltre a rendere disponibile il setup completo, offre anche vari <em>bundle</em>, ognuno dedicato ad un linguaggio di programmazione / tecnologia specifico (il design modulare è un’altra delle novità introdotte in NetBeans 6.0).</p>
<p>da Html.it</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paniko.org/2008/06/19/netbeans-e-php-un-accoppiata-vincente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PRADO un RAD per PHP</title>
		<link>http://www.paniko.org/2008/03/13/34/</link>
		<comments>http://www.paniko.org/2008/03/13/34/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 06:49:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.paniko.org/?p=34</guid>
		<description><![CDATA[PRADO sta per Php Rapid Application Development Object-oriented e, come dice l&#8217;acronimo, è un ambiente di programmazione per PHP5 basato sull’uso dei componenti e sulla logica ad aventi applicata agli oggetti. PRADO è stato recentemente realizzato da un piccolo team di sviluppo diretto da Qiang Xue, un dottorando di informatica della Duke University ed ha [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.equal.it/images/stories/img_articoli/web_coding/prado/logo_prado.png" align="left" border="0" height="92" width="92" />PRADO sta per Php Rapid Application Development Object-oriented e, come dice l&#8217;acronimo,  è un ambiente di programmazione per PHP5 basato sull’uso dei componenti e sulla logica ad aventi applicata agli oggetti.<br />
PRADO è stato recentemente realizzato da un piccolo team di sviluppo diretto da Qiang Xue, un dottorando di informatica della Duke University ed ha appena stravinto lo <a href="http://www.zend.com/php5/contest/contest.php?id=36&amp;single=1" target="_blank">ZEND PHP5 Coding Contest</a>, la competizione per il miglior software scritto in PHP organizzata da Zend la società israeliana che mantiene il progetto Open Source di PHP e che ne sfrutta le applicazioni commerciali.<br />
Costruire un’applicazione web con PRADO significa essenzialmente instanziare dei tipi di componenti predefiniti, configurarli settando alcune delle loro proprietà ed assegnare i comportamenti da eseguire in risposta ad alcuni eventi.<br />
Per intenderci, la logica di funzionamento è del tutto simile ad alcuni ambienti di sviluppo visuali (RAD) come Delphi, Visual Basic e JavaBuilder. Come è noto, però, i tre esempi appena citati si riferiscono a linguaggi compilati per la creazione di eseguibili. L’assoluta novità di PRADO consiste nell’aver trasferito la filosofia dei linguaggi <em>component-based</em> ed <em>event-driven</em> ad un linguaggio interpretato e lato server quale è, appunto, il PHP.<br />
Intendiamoci: non c’è nulla in PRADO che non sia possibile fare usando soltanto il PHP. Il valore aggiunto di PRADO risiede in ben altre caratteristiche: nell’estrema semplicità, robustezza e versatilità d’uso per cominciare ma, soprattutto, nella riusabilità del codice, che permette la realizzazione di nuove applicazioni web a partire da implementazioni precedenti con uno sforzo davvero minimo.<br />
Seguendo le indicazioni riportate sul sito <a href="http://www.xisc.com/" target="_blank">www.xisc.com</a> del team di sviluppo, proviamo a fare un piccolo esempio per descrivere la flessibilità e la potenza di PRADO.<br />
Supponiamo di voler creare un classico modulo per un pagina di login per l’accesso ad un’area riservata come quello riportato in figura.</p>
<p align="center"><img src="http://www.equal.it/images/stories/img_articoli/web_coding/prado/risultato.png" border="0" height="150" width="233" /></p>
<p>Cominceremo con il definire un modulo come istanza del componente <tt><strong><font color="#999900">TForm</font> </strong></tt>ed al suo interno useremo due componenti <tt><strong><font color="#999900">TTextBox</font> </strong></tt>per le caselle di testo dedicate all’inserimento dell’username e della password e un componente <tt><strong><font color="#999900">TButton</font> </strong></tt>per il bottone di invio.<br />
Per configurare adeguatamente questi componenti, assegniamo il valore <tt><strong><font color="#ff33ff">Username</font> </strong></tt>alla proprietà <tt><strong><font color="#cc0000">ID</font> </strong></tt>del componente <tt><strong><font color="#999900">TTextBox</font> </strong></tt>destinato a raccogliere il nome utente, diamo il valore <tt><strong><font color="#ff33ff">Password</font> </strong></tt>alla proprietà <tt><strong><font color="#cc0000">ID</font> </strong></tt>ed il valore <tt><strong><font color="#ff66ff">Password</font> </strong></tt>alla proprietà <tt><strong><font color="#993366">TextMode</font> </strong></tt>del componente <tt><strong><font color="#999900">TTextBox</font> </strong></tt>destinato a raccogliere la password, quindi colleghiamo una funzione <tt><strong><font color="#cc00cc">loginClicked</font> </strong></tt>all’evento <tt><strong><font color="#cc0000">OnClick</font> </strong></tt>del bottone di invio.<br />
Così, a parte qualche trascurabile abbellimento &#8211; ad esempio per racchiudere il modulo in un riquadro con titolo e per stampare anche delle etichette esplicative per le due caselle di testo &#8211; la descrizione del nostro modulo in PRADO si concretizza nella scrittura di un <strong>template</strong>, cioè di un file HTML avente estensione <strong>.tpl </strong>in cui i vari componenti vengono richiamati con degli speciali tag <strong><font color="#0000cc">&lt; </font></strong><strong><font color="#999900">com:</font> </strong><strong><font color="#0000cc">&gt;</font> </strong>e che nel nostro caso è il seguente:</p>
<p align="center"><img src="http://www.equal.it/images/stories/img_articoli/web_coding/prado/template.png" border="0" height="129" width="441" /></p>
<p>Questo è sufficiente per creare un completo modulo di login. I due componenti <tt><strong><font color="#999900">TTextBox</font> </strong></tt>si faranno carico di raccogliere il testo necessario nella maniera appropriata (ad esempio quello relativo alla password nasconderà il testo digitato per via della proprietà <tt><strong><font color="#993366">TextMode</font> </strong></tt>settata col valore <tt><strong><font color="#ff66ff">Password</font>) </strong></tt>ed il componente <tt><strong><font color="#999900">TButton</font> </strong></tt>invocherà la nostra funzione <tt><strong><font color="#cc00cc">loginClicked</font> </strong></tt>alla pressione del bottone di invio del modulo.<br />
Tale funzione andrà definita in una opportuna sottoclasse PHP,  <tt><strong><font color="#993300">LoginPage</font> </strong></tt>ereditata della classe <tt><strong><font color="#993300">TPage</font> </strong></tt>ed in essa toccherà a noi specificare cosa concretamente accadrà al momento dell’invio del modulo. Banalmente, in tale funzione, la nostra prima preoccupazione sarà quella di prelevare i dati forniti dai due componenti<tt><strong> <font color="#999900">TTextBox</font> </strong></tt>utilizzando il metodo <tt><strong><font color="#993300">Text</font> </strong></tt>ed immagazzinarli in due variabili, ad esempio per poterli confrontare con i risultati di una query su un database.<br />
La <strong>classe</strong> in questione avrà quindi una forma del tipo:</p>
<p align="center"><img src="http://www.equal.it/images/stories/img_articoli/web_coding/prado/classe.png" border="0" height="131" width="382" /></p>
<p>Come si vede, questa tecnica di programmazione è molto differente da quella classica del PHP puro e semplice, in cui lo sviluppatore deve farsi carico di molti dettagli operativi quali la preparazione dei tag HTML più appropriati per la definizione delle caselle di testo, l’indicazione dell’URL a cui inviare i dati del modulo, la validazione dei dati prima dell’invio (tipicamente eseguita con funzioni JavaScript), la lettura dei dati forniti, ecc.<br />
In sostanza, PRADO libera il programmatore da tutte queste operazioni di routine, che peraltro sono spesso fonte di errori, e gli permette di concentrarsi sulla funzionalità delle pagine semplicemente scrivendo un template in un HTML arricchito di qualche tag ed una classe in PHP.</p>
<p>Ovviamente questa sintetica introduzione sfiora appena le peculiarità del prodotto e ci sarebbe ancora molto da dire, ad esempio su come definire le proprietà dei componenti per mezzo di un file di specificazione XML o su come generare dinamicamente dei nuovi componenti.<br />
Pertanto, rimandiamo le persone interessate (o semplicemente incuriosite) al sito <a href="http://www.xisc.com/" target="_blank">www.xisc.com</a> del progetto PRADO dove, oltre a scaricare il codice sorgente, è possibile trovare ulteriori descrizioni, guide e persino esempi in linea.</p>
<p>In conclusione, PRADO ci piace veramente. È un prodotto ben fatto, creato da sviluppatori per altri sviluppatori, che sarà estremamente vantaggioso usare nella progettazione di complesse applicazioni web e che &#8211; per il momento &#8211; ha il solo difetto di girare esclusivamente su PHP5, una piattaforma attualmente davvero poco diffusa nell&#8217;hosting commerciale.</p>
<p>da equal.it</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paniko.org/2008/03/13/34/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

