<?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>ZenGFX.net &#187; PHP</title>
	<atom:link href="http://www.blog.zengfx.net/category/tutorial/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.zengfx.net</link>
	<description>Graphic &#38; Informatic Resources</description>
	<lastBuildDate>Tue, 10 May 2011 10:11:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Convertitore bbcode to html</title>
		<link>http://www.blog.zengfx.net/2009/11/23/convertitore-bbcode-to-html/</link>
		<comments>http://www.blog.zengfx.net/2009/11/23/convertitore-bbcode-to-html/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 03:10:44 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[BBCode]]></category>
		<category><![CDATA[Convertitore]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[ln2br]]></category>
		<category><![CDATA[str_replace]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=513</guid>
		<description><![CDATA[Quante volte abbiamo avuto bisogno di avere un semplice convertitore di BBCODE in HTML? Il BBCODE è una realtà ed è ampiamente utilizzato in quasi tutte le communiti ed i siti per vari motivi che variano dalla semplicità d&#8217;uso alla sicurezza stessa di un sito. Tuttavia realizzare un convertitore non è poi una cosa semplicissima. [...]]]></description>
			<content:encoded><![CDATA[<p>Quante volte abbiamo avuto bisogno di avere un semplice convertitore di BBCODE in HTML?<br />
Il BBCODE è una realtà ed è ampiamente utilizzato in quasi tutte le communiti ed i siti per vari motivi che variano dalla semplicità d&#8217;uso alla sicurezza stessa di un sito.<br />
Tuttavia realizzare un convertitore non è poi una cosa semplicissima.<br />
Esistono svariate soluzioni, javascript, php, ma io ve ne mostrerò una molto semplice che usa degli array ed uno string replace in PHP.<br />
Ovviamente se affiancherete questa funzione con strumenti migliori di sicurezza, quale la <a href="/2009/11/23/eliminare-tag-html-in-una-stringa/" target ="_blank">strip_tags</a> vista precedentemente, non farete altro che migliorare la sicurezza del vostro sito.</p>
<p>Ecco la funzione che vi permetterà di effettuare la conversione:</p>
<pre class="brush: php">
function bb2tohtml($testo){
  $bbcode = array(&quot;&lt;&quot;, &quot;&gt;&quot;,
                &quot;[list]&quot;, &quot;[*]&quot;, &quot;[/list]&quot;,
                &quot;[img]&quot;, &quot;[/img]&quot;,
                &quot;[b]&quot;, &quot;[/b]&quot;,
                &quot;[u]&quot;, &quot;[/u]&quot;,
                &quot;[i]&quot;, &quot;[/i]&quot;,
                &#039;[color=&quot;&#039;, &quot;[/color]&quot;,
                &quot;[size=\&quot;&quot;, &quot;[/size]&quot;,
                &#039;[url=&quot;&#039;, &quot;[/url]&quot;,
                &quot;[code]&quot;, &quot;[/code]&quot;,
                &#039;&quot;]&#039;);
  $html = array(&quot;&lt;&quot;, &quot;&gt;&quot;,
                &quot;&lt;ul&gt;&quot;, &quot;&lt;li&gt;&quot;, &quot;&lt;/ul&gt;&quot;,
                &quot;&lt;img src=\&quot;&quot;, &quot;\&quot;&gt;&quot;,
                &quot;&lt;b&gt;&quot;, &quot;&lt;/b&gt;&quot;,
                &quot;&lt;u&gt;&quot;, &quot;&lt;/u&gt;&quot;,
                &quot;&lt;i&gt;&quot;, &quot;&lt;/i&gt;&quot;,
                &quot;&lt;span style=\&quot;color:&quot;, &quot;&lt;/span&gt;&quot;,
                &quot;&lt;span style=\&quot;font-size:&quot;, &quot;&lt;/span&gt;&quot;,
                &#039;&lt;a href=&quot;&#039;, &quot;&lt;/a&gt;&quot;,
                &quot;&lt;code&gt;&quot;, &quot;&lt;/code&gt;&quot;,
                &#039;&quot;&gt;&#039;);
  $testo = str_replace($bbcode, $html, $testo);
  $testo = nl2br($testo);
  return $testo;
}
</pre>
<p>Molto semplice da implementare. basta inserirla nei vostri script e richiamarla, penserà a tutto lei.<br />
Ovviamente potrete aggiungere nuovi tag bbcode semplicemente aggiungendo nuovi elementi nell&#8217;array ma badate bene, le posizioni del tag HTML e quello BBCode all&#8217;interno dell&#8217;array, devono coincidere!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2009/11/23/convertitore-bbcode-to-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eliminare Tag HTML in una stringa</title>
		<link>http://www.blog.zengfx.net/2009/11/23/eliminare-tag-html-in-una-stringa/</link>
		<comments>http://www.blog.zengfx.net/2009/11/23/eliminare-tag-html-in-una-stringa/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 02:33:29 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Espressioni Regolari]]></category>
		<category><![CDATA[Filtri]]></category>
		<category><![CDATA[strip_tags. HTML]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=510</guid>
		<description><![CDATA[Spesso succede che ci troviamo nella condizione di dover filtrare le stringhe che si ricevono attraverso degli input in modo tale che queste non contengano al loro interno del codice dannoso. Una delle solite soluzione è l&#8217;utilizzo di espressioni regolari che servono a filtrare i caratteri speciali HTML in modo tale che questi possano essere [...]]]></description>
			<content:encoded><![CDATA[<p>Spesso succede che ci troviamo nella condizione di dover filtrare le stringhe che si ricevono attraverso degli input in modo tale che queste non contengano al loro interno del codice dannoso.<br />
Una delle solite soluzione è l&#8217;utilizzo di espressioni regolari che servono a filtrare i caratteri speciali HTML in modo tale che questi possano essere eliminati.<br />
Tuttavia usare le espressioni regolari implica il saperle consocere non che, alle volte, si rende necessario abilitare l&#8217;HTML solamente per alcune specifiche tag.<br />
Tutto questo richiederebbe un lavoro non indifferente di filtraggio che può essere svolto attraverso la praticissima funzione massa a disposizione da PHP, parliamo di <b>strip_tags</b>.</p>
<p>Vediamo un esempio:</p>
<p>Supponiamo di avere una stringa e di questa volessimo rendere disponibili per HTML solamente alcuni comandi. per farlo dovremmo quindi impostare un filtro.<br />
La stringa che verrà quindi filtrata, vedrà essere eliminati tutti quei tag HTML che non rientrano nel filtro dei consentiti.</p>
<p>Ad esempio se volessimo che gli unici tag utilizzabili fossero:</p>
<pre class="brush: html">
&lt;font&gt;&lt;img&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;&lt;li&gt;&lt;ul&gt;&lt;br&gt;
</pre>
<p>Dovremmo fare così:</p>
<pre class="brush: php">
$Testo=strip_tags($Testo,&#039;&lt;font&gt;&lt;img&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;&lt;li&gt;&lt;ul&gt;&lt;br&gt;&#039;);
</pre>
<p>Che significa: sulla stringa contenuta in testo, elimina tutti i TAG HTML che non siano quelli forniti come parametro.</p>
<p>Se applicassimo questo comando PHP ad una stringa come in questo esempio:</p>
<pre class="brush: php">
$Testo=&quot;&lt;font color=&#039;#444000&#039;&gt;Ciao mondo&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;img src=&#039;http://www.zengfx.net/signage/Mila_Kunis_Sign_by_LoganDTR.jpg&#039; /&gt; &lt;br&gt;&lt;a href=&#039;blog.zengfx.net&#039;&gt;blog&lt;/a&gt;&quot;;
$Testo=strip_tags($Testo,&#039;&lt;font&gt;&lt;img&gt;&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;u&gt;&lt;li&gt;&lt;ul&gt;&lt;br&gt;&#039;);
echo $Testo;
</pre>
<p>Il risultato sarà esattamente la stringa offerta in HTML meno il link al blog contenuto nel tag a che sarà rimosso lasciando solo la scritta semplice &#8220;blog&#8221;.</p>
<blockquote></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2009/11/23/eliminare-tag-html-in-una-stringa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MixPod Patch 2.0</title>
		<link>http://www.blog.zengfx.net/2009/10/20/mixpod-patch-2-0/</link>
		<comments>http://www.blog.zengfx.net/2009/10/20/mixpod-patch-2-0/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 14:18:27 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[GDR/CD]]></category>
		<category><![CDATA[Mixpod]]></category>
		<category><![CDATA[MP3]]></category>
		<category><![CDATA[Playlist]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=487</guid>
		<description><![CDATA[Ho aggiornato la versione del lettore mp3 mixpod.com con nuove interessanti novità senza contare dei controlli aggiuntivi che lo rendono molto più pratico all&#8217;uso per gli utenti meno esperti. Le aggiunte che sono state fatte sono le seguenti: Javascript per l&#8217;aggiunta di una palette di selezione colori con anteprima Javascript per il controllo dei campi [...]]]></description>
			<content:encoded><![CDATA[<p>Ho aggiornato la versione del lettore mp3 mixpod.com con nuove interessanti novità senza contare dei controlli aggiuntivi che lo rendono molto più pratico all&#8217;uso per gli utenti meno esperti.<br />
Le aggiunte che sono state fatte sono le seguenti:</p>
<ol>
<li>Javascript per l&#8217;aggiunta di una palette di selezione colori con anteprima</li>
<li>Javascript per il controllo dei campi dati inseriti.</li>
</ol>
<p>Questa è un anteprima della palette per l&#8217;inserimento dei colori:</p>
<p align="center"><img src="/immagini/mixpod2/color.jpg" alt="Palette Colori" /></p>
<p>Ed invece qui un anteprima del form di inserimento dei dati per il lettore:</p>
<p align="center"><img src="/immagini/mixpod2/pannello.jpg" alt="Inserimento dati" /></p>
<p><span id="more-487"></span><br />
<strong>Cosa fa?</strong></p>
<p>Il plug-in permette di inserire all&#8217;interno del proprio sito un pratico form da compilare con anteprima dei colori e selezione della skin che permetterà di utilizzare il proprio account di mixpod.com senza bisogno di conoscere nulla di HTML e senza dover inserire alcun codice.<br />
Grazie alla palette, sarà facoltativo anche ricavare i colori della propria playlist, infatti, potranno praticamente essere scelti ed inseriti automaticamente, proprio come la skin.</p>
<p><strong>Come si installa?</strong></p>
<p>All&#8217;interno del pacchetto troverete i seguenti file:<br />
<em><br />
scheda.php<br />
scheda3.php<br />
mixpod.js<br />
301a.js<br />
musica.sql<br />
README.txt</em></p>
<p><strong>Javascript</strong></p>
<p>Il primo passo è semplicemente quello di mettere nella cartella principale del sito, o dove meglio preferite l&#8217;importante che poi ricordiate di modificare il path nel richiamare lo script, i due file.js che serviranno per il corretto funzionamento del plug-in.<br />
E&#8217; bene spendere nello specifico alcune parole per i due script.</p>
<p><em><strong>301a.js</strong></em></p>
<p>Al suo interno troverete tutte le indicazioni sotto forma di commenti, ricordo che è stato realizzato da <a href="http://www.free-color-picker.com" target="_blank">http://www.free-color-picker.com</a> al suo interno troverete anche le avvertenze d&#8217;uso ossia, non modificare in alcun modo lo script per garantirne il corretto funzionamento.</p>
<p><em><strong>Mixpod.js</strong></em></p>
<p>questo è stato realizzato da me e semplicemente fa il controllo sui dati inseriti ossia, i tre colori e l&#8217;id.</p>
<pre class="brush: javascript">
function checkMixPod(){
	var test = true;
	var id = document.dati.myid.value;
	var color1 = document.dati.color1.value;
	var color2 = document.dati.color2.value;
	var color3 = document.dati.color3.value;
	var espressione = /^#+[A-Fa-f0-9]{6}/;

	if ((isNaN(id))||(parseInt(id)!=id)){
		alert(&quot;Hai inserito un numero ID non valido, ricontrollalo!&quot;);
		document.dati.myid.focus();
		test = false;
	}
	if ((color1 == &quot;&quot;)||(color1.length !=7)||(!(espressione.test(color1)))){
		alert(&quot;Codice colore 1 non valido, inserire un valore esadecimale a 6 cifre preceduto da #&quot;);
		document.dati.color1.focus();
		test = false;
	}
	if ((color2 == &quot;&quot;)||(color2.length != 7)||(!(espressione.test(color2)))){
		alert(&quot;Codice colore 2 non valido, inserire un valore esadecimale a 6 cifre preceduto da #&quot;);
		document.dati.color2.focus();
		test = false;
	}
	if ((color3 == &quot;&quot;)||(color3.length != 7)||(!(espressione.test(color3)))){
		alert(&quot;Codice colore 3 non valido, inserire un valore esadecimale a 6 cifre preceduto da #&quot;);
		document.dati.color3.focus();
		test = false;
	}
	return test;
}
</pre>
<p>Lo script si assicura che l&#8217;invio dei dati venga bloccato nel caso in cui:</p>
<ol>
<li>L&#8217;ID non è un intero</li>
<li>Il colore non è in una forma valida</li>
</ol>
<p>Per il colore vale spendere due parole, esso controlla fondamentalmente che la stringa non sia vuota, che sia lunga 7 caratteri (6 del codice colore e uno per il cancelletto) e con un espressione regolare controlla che le stringhe inizino sempre con # ed abbiano i caratteri compresi tra AF af e 09.</p>
<p>Se questo non dovesse essere vero, allora restituirà un alert comunicando il messaggio d&#8217;errore e dove si è verificato bloccando l&#8217;invio per consentire all&#8217;utente di inserire i dati corretti.</p>
<p><strong>SQL</strong></p>
<p>Fatto questo, si passerà alla modifica del database, vi basterà semplicemente importare in esso il file musica.sql che apporterà le modifiche necessarie alla tabella Personaggio.</p>
<pre class="brush: sql">
ALTER TABLE Personaggio ADD MyID integer(11) default &#039;0&#039;;
ALTER TABLE Personaggio ADD Skin varchar(30) default &#039;myflashfetish-mp3-player.swf&#039;;
ALTER TABLE Personaggio ADD Color1 varchar(6) default &#039;000000&#039;;
ALTER TABLE Personaggio ADD Color2 varchar(6) default &#039;000000&#039;;
ALTER TABLE Personaggio ADD Color3 varchar(6) default &#039;000000&#039;;
</pre>
<p><strong>Scheda.php</strong></p>
<p>Le modifiche da apportare qui non sono molto differenti da quelle fatte nella versione 1.0 se non per ulteriori semplici controlli.<br />
Comunque nel codice base, sono presenti dei commenti molto semplici che vi permetteranno di capire da dove iniziano e dove finiscono le modifiche.<br />
Le troverete alle seguenti posizioni del file che scaricherete dal sito:<br />
Riga 24-30</p>
<pre class="brush: php">
 $myid = ereg_replace(&quot;[^0-9 ]&quot;, &quot;0&quot;, $_POST[&#039;myid&#039;]);
 $skin = ereg_replace(&quot;[^A-Za-z0-9.-]&quot;, &quot;0&quot;, $_POST[&#039;skin&#039;]);
 $color1 =ereg_replace(&quot;[^A-Fa-f0-9 ]&quot;, &quot;0&quot;, substr($_POST[&#039;color1&#039;], -6));
 $color2 =ereg_replace(&quot;[^A-Fa-f0-9 ]&quot;, &quot;0&quot;, substr($_POST[&#039;color2&#039;],-6));
 $color3 =ereg_replace(&quot;[^A-Fa-f0-9 ]&quot;, &quot;0&quot;, substr($_POST[&#039;color3&#039;],-6));
</pre>
<p>Queste modifiche servono semplicemente a togliere il # dal codice esadecimale che viene passato come parametro (substr) ed aggiungere un controllo con un espressione regolare che ci assicura ulteriormente che, i valori ricevuti siano effettivamente compresi tra AF, af, 09 per i codici esadecimali e controlla che l&#8217;ID sia un valore compreso tra 0 e 9 ossia un intero.</p>
<p>Le altre modifiche le troverete dalla riga 179 alla 185:</p>
<pre class="brush: php">
$myid =trim($myid);
$skin =trim($skin);
$color1 =trim($color1);
$color2 =trim($color2);
$color3 =trim($color3);
</pre>
<p>Poi per l&#8217;inserimento si andrà a modificare la query alla riga 238-244</p>
<pre class="brush: php">
$MySql .= &quot; MyID = &#039;&quot;.$myid.&quot;&#039;,&quot;;
$MySql .= &quot; Skin = &#039;&quot;.$skin.&quot;&#039;,&quot;;
$MySql .= &quot; Color1 = &#039;&quot;.$color1.&quot;&#039;,&quot;;
$MySql .= &quot; Color2 = &#039;&quot;.$color2.&quot;&#039;,&quot;;
$MySql .= &quot; Color3 = &#039;&quot;.$color3.&quot;&#039;&quot;;
</pre>
<p>Finita la parte di modifica per il salvataggio dei dati, andremo a modificare la visualizzazione della scheda per mostrare il nostro lettore MP3. Come sempre questa parte trova ampia personalizzazione dato che, non c&#8217;è un vero e proprio posto dove per esempio potevo collocarlo, ma starà al webmaster decidere dove e come posizionarlo nel modo più idoneo alla sua community.<br />
Le modifiche iniziano dalla riga 464 – 571.</p>
<pre class="brush: php">
&lt;?
if(($rs[&#039;MyID&#039;] != 0)){
	$height = 0;
	$width = 0;
.....
.....
&lt;tr&gt;&lt;td colspan=2 align=center&gt;
&lt;?
echo &quot;&lt;center&gt;&lt;p style=&#039;visibility:visible;&#039;&gt;&lt;embed src=&#039;http://assets.myflashfetish.com/swf/mp3/&quot;.$rs[&#039;Skin&#039;].&quot;?myid=&quot;.$rs[&#039;MyID&#039;].&quot;&amp;path=2009/09/27&#039; quality=&#039;high&#039; wmode=&#039;transparent&#039; flashvars=&#039;mycolor=&quot;.$rs[&#039;Color1&#039;].&quot;&amp;mycolor2=&quot;.$rs[&#039;Color2&#039;].&quot;&amp;mycolor3=&quot;.$rs[&#039;Color3&#039;].&quot;&amp;autoplay=true&amp;rand=0&amp;f=4&amp;vol=100&amp;pat=0&amp;grad=false&#039; width=&#039;&quot;.$width.&quot;&#039; height=&#039;&quot;.$height.&quot;&#039; name=&#039;myflashfetish&#039; salign=&#039;TL&#039; type=&#039;application/x-shockwave-flash&#039; pluginspage=&#039;http://www.macromedia.com/go/getflashplayer&#039; border=&#039;0&#039; style=&#039;visibility:visible;width:&quot;.$width.&quot;px;height:&quot;.$height.&quot;px;&#039; /&gt;&lt;/p&gt;&lt;/center&gt;&quot;;
?&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;? }; ?&gt;
</pre>
<p>E con queste sono finite le modifiche da fare al file, passiamo all&#8217;ultimo:</p>
<p><strong>scheda3.php</strong></p>
<p>Come prima cosa dobbiamo richiamare qui i due script che abbiamo caricato sul nostro server, questi dovranno essere collocati nell&#8217;head. Troverete le modifiche dalla linea 81-84</p>
<pre class="brush: javascript">
&lt;script src=&quot;mixpod.js&quot; type=&quot;text/javascript&quot; language=&quot;javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;301a.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
<p>Fatto questo passiamo al form di inserimento, modifichiamo i suoi parametri come mostrato nella riga 112</p>
<pre class="brush: html">
&lt;form action=&quot;scheda.php?pg=&lt;?= urlencode($pg) ?&gt;&quot; method=&quot;POST&quot; name=&quot;dati&quot; onSubmit=&quot;return checkMixPod()&quot;&gt;
</pre>
<p>Ed infine dalla riga 166 fino alla 216 di cui ometterò il codice della selezione del lettore vista la sua semplicità per spendere qualche parola su quello per l&#8217;uso dello javascript.</p>
<pre class="brush: html">
	&lt;tr&gt;
    	&lt;td align=center colspan=3&gt;MyId &lt;br/&gt;
	    &lt;input type=&quot;text&quot; name=&quot;myid&quot; maxlength=&quot;8&quot; size=&quot;8&quot;  value=&quot;&lt;?=htmlspecialchars($rs[&quot;MyID&quot;])?&gt;&quot;/&gt;&lt;/td&gt;
    &lt;/tr&gt;
......
......
	&lt;tr&gt;
    	&lt;td align=center colspan=3&gt;Colore 1&lt;br/&gt;
        &lt;div id=&quot;colorpicker301&quot; class=&quot;colorpicker301&quot;&gt;&lt;/div&gt;
		&lt;input type=&quot;button&quot; onClick=&quot;showColorGrid3(&#039;color1&#039;,&#039;color11_sample&#039;);&quot; value=&quot;...&quot;&gt;&amp;nbsp;&lt;input type=&quot;text&quot; ID=&quot;color1&quot; name=&quot;color1&quot; maxlength=&quot;7&quot; size=&quot;7&quot; value=&quot;#&lt;?=htmlspecialchars($rs[&quot;Color1&quot;])?&gt;&quot;&gt;&amp;nbsp;&lt;input type=&quot;text&quot; ID=&quot;color11_sample&quot; size=&quot;1&quot; value=&quot;&quot; style=&quot;background-color:#&lt;?=htmlspecialchars($rs[&quot;Color1&quot;])?&gt;&quot;&gt;&lt;/td&gt;
    &lt;/tr&gt;
	&lt;tr&gt;
    	&lt;td align=center colspan=3&gt;Colore 2&lt;br/&gt;
        &lt;div id=&quot;colorpicker301&quot; class=&quot;colorpicker301&quot;&gt;&lt;/div&gt;
		&lt;input type=&quot;button&quot; onClick=&quot;showColorGrid3(&#039;color2&#039;,&#039;color12_sample&#039;);&quot; value=&quot;...&quot;&gt;&amp;nbsp;&lt;input type=&quot;text&quot; ID=&quot;color2&quot; name=&quot;color2&quot; maxlength=&quot;7&quot; size=&quot;7&quot; value=&quot;#&lt;?=htmlspecialchars($rs[&quot;Color2&quot;])?&gt;&quot;&gt;&amp;nbsp;&lt;input type=&quot;text&quot; ID=&quot;color12_sample&quot; size=&quot;1&quot; value=&quot;&quot; style=&quot;background-color:#&lt;?=htmlspecialchars($rs[&quot;Color2&quot;])?&gt;&quot;&gt;&lt;/td&gt;
    &lt;/tr&gt;
	&lt;tr&gt;
    	&lt;td align=center colspan=3&gt;Colore 3&lt;br/&gt;
        &lt;div id=&quot;colorpicker301&quot; class=&quot;colorpicker301&quot;&gt;&lt;/div&gt;
		&lt;input type=&quot;button&quot; onClick=&quot;showColorGrid3(&#039;color3&#039;,&#039;color13_sample&#039;);&quot; value=&quot;...&quot;&gt;&amp;nbsp;&lt;input type=&quot;text&quot; ID=&quot;color3&quot; maxlength=&quot;7&quot; name=&quot;color3&quot; size=&quot;7&quot; value=&quot;#&lt;?=htmlspecialchars($rs[&quot;Color3&quot;])?&gt;&quot;&gt;&amp;nbsp;&lt;input type=&quot;text&quot; ID=&quot;color13_sample&quot; size=&quot;1&quot; value=&quot;&quot; style=&quot;background-color:#&lt;?=htmlspecialchars($rs[&quot;Color3&quot;])?&gt;&quot;&gt;&lt;/td&gt;
    &lt;/tr&gt;
</pre>
<p>Semplicemente il javascript prevede l&#8217;aggiunta di una casella di testo come anteprima che io ho pensato bene di rendere disponibile anche nel momento in cui la scheda venga aperta e non solamente quando si seleziona un colore dalla palette.<br />
Ovviamente si da spazio alla libera modifica.</p>
<p>Tutto qui, buon divertimento con il vostro plug-in!</p>
Note: There is a file embedded within this post, please visit this post to download the file.
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2009/10/20/mixpod-patch-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Profile Image Fix</title>
		<link>http://www.blog.zengfx.net/2009/10/01/profile-image-fix/</link>
		<comments>http://www.blog.zengfx.net/2009/10/01/profile-image-fix/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 12:31:44 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=473</guid>
		<description><![CDATA[Quello che spesso succede nei codici OS è che mancano alcune rifiniture che rendono esteticamente più bello il nostro sito. Uno dei problemi del GDR/CD è che usando il BBCode le immagini nel profilo non possono essere limitate. Questo FIX si occupa molto semplicemente di ridimensionare le immagini qualora superino la dimenzione prefissata dall&#8217;amministratore. I [...]]]></description>
			<content:encoded><![CDATA[<p>Quello che spesso succede nei codici OS è che mancano alcune rifiniture che rendono esteticamente più bello il nostro sito.<br />
Uno dei problemi del GDR/CD è che usando il BBCode le immagini nel profilo non possono essere limitate. Questo FIX si occupa molto semplicemente di ridimensionare le immagini qualora superino la dimenzione prefissata dall&#8217;amministratore.</p>
<p>I file da modificare sono: <em>open2.php</em> e <em>main.css</em><br />
Come sempre su base GDR/CD Extented ma va benissimo anche per versioni precedenti.</p>
<p><strong>open2.php</strong><br />
Apriamo il file ed andiamo alla riga 47 e sostituire</p>
<pre class="brush: php">
$testo=str_replace(&quot;[/img]&quot;,&quot;&#039; border=0&gt;&quot;,$testo);
</pre>
<p>Con:</p>
<pre class="brush: php">
$testo=str_replace(&quot;[/img]&quot;,&quot;&#039; ID=&#039;scheda&#039;/&gt;&quot;,$testo);
</pre>
<p>andate alla riga 82 e sostituire:</p>
<pre class="brush: php">
$testo=str_replace(&quot;[/IMG]&quot;,&quot;&#039; border=0&gt;&quot;,$testo);
</pre>
<p>Con:</p>
<pre class="brush: php">
$testo=str_replace(&quot;[/IMG]&quot;,&quot;&#039; ID=&#039;scheda&#039;&gt;&quot;,$testo);
</pre>
<p><strong>main.css</strong><br />
Semplicemente andate alla fine del file ed aggiungete la classe CSS che vi permetterà di gestire le immagini all&#8217;interno del profilo della scheda:</p>
<pre class="brush: css">
img#scheda{
	max-width:500px;
	width:expression(this.width &gt; 500 ? 500: true );
}
</pre>
<p>Finito, comunque metterò i due file in download per ogni evenienza. Sono testati e funzionanti.</p>
<p>Un saluto ed a presto!</p>
Note: There is a file embedded within this post, please visit this post to download the file.
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2009/10/01/profile-image-fix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash Avatar</title>
		<link>http://www.blog.zengfx.net/2009/10/01/flash-avatar/</link>
		<comments>http://www.blog.zengfx.net/2009/10/01/flash-avatar/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 10:26:21 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Avatar]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[GDR/CD]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=469</guid>
		<description><![CDATA[Questo nuovo plug-in veramente molto semplice, permetterà di personalizzare ancora di più il vostro GDR/CD Extended. Molto probabilmente il codice funzionerà anche sulle versioni precedenti dato che la modifica apportate sono davvero irrisorie. Cosa fa? Questo plug-in, senza alcuna modifica al database, permette di inserire nelle schede degli avatar realizzati in flash. Come si installa? [...]]]></description>
			<content:encoded><![CDATA[<p>Questo nuovo plug-in veramente molto semplice, permetterà di personalizzare ancora di più il vostro GDR/CD Extended.<br />
Molto probabilmente il codice funzionerà anche sulle versioni precedenti dato che la modifica apportate sono davvero irrisorie.<br />
<strong>Cosa fa?</strong><br />
Questo plug-in, <em>senza alcuna modifica al database</em>, permette di inserire nelle schede degli avatar realizzati in flash.<br />
<strong>Come si installa?</strong><br />
L&#8217;installazione è davvero molto semplice e prevede una sola singola modifica al file <em>scheda.php</em>. Andiamo a vedere quale:</p>
<p>Andate alla riga 332 e sostituite questo codice:</p>
<pre class="brush: php">
&lt;img width=200 height=200 src=&quot;&lt;?= $UrlImg ?&gt;&quot; border=&quot;2&quot; bordercolor=&quot;brown&quot;&gt;
</pre>
<p>Con questo:</p>
<pre class="brush: php">
&lt;?
$ext = strtolower(substr($UrlImg,strlen($string)-3,3));
if ($ext==&quot;swf&quot;){
?&gt;
&lt;embed src=&quot;&lt;?= $UrlImg ?&gt;&quot; quality=&quot;high&quot; wmode=&quot;transparent&quot; width=&quot;200&quot; height=&quot;200&quot; name=&quot;avatar&quot; align=&quot;middle&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt;
&lt;?
}
else{
?&gt;
&lt;img width=200 height=200 src=&quot;&lt;?= $UrlImg ?&gt;&quot; border=&quot;2&quot; bordercolor=&quot;brown&quot;&gt;
&lt;? } ?&gt;
</pre>
<p>Inutile dirvi che potrete personalizzare il codice come meglio crediate.<br />
Le dimensioni degli avatar da me sono state fissate a 200&#215;200 ma ovviamente, sta a voi adattarle alle vostre esigenze.</p>
<p>A presto!</p>
Note: There is a file embedded within this post, please visit this post to download the file.
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2009/10/01/flash-avatar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MixPod Patch 1.0</title>
		<link>http://www.blog.zengfx.net/2009/09/28/mixpod-patch-1-0/</link>
		<comments>http://www.blog.zengfx.net/2009/09/28/mixpod-patch-1-0/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 12:38:58 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[GDR/CD]]></category>
		<category><![CDATA[MicPod]]></category>
		<category><![CDATA[Patch]]></category>
		<category><![CDATA[Plug In]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=457</guid>
		<description><![CDATA[Questo script è stato realizzato da me per permettere a tutti quei gestori che, non vogliono abilitare l&#8217;HTML nelle schede della loro community l&#8217;html ma che, tuttavia, desiderano concedere ad essi la possibilità di inserire una playlist Come piattaforma da utilizzare ho scelto il noto mixpod.com che sembra essere il fornitore di playlist più utilizzato [...]]]></description>
			<content:encoded><![CDATA[<p>Questo script è stato realizzato da me per permettere a tutti quei gestori che, non vogliono abilitare l&#8217;HTML nelle schede della loro community l&#8217;html ma che, tuttavia, desiderano concedere ad essi la possibilità di inserire una playlist<br />
Come piattaforma da utilizzare ho scelto il noto <a href="http://www.mixpod.com/" target="_blank">mixpod.com</a> che sembra essere il fornitore di playlist più utilizzato dai giocatori di tutte le community basate sul codice di Romeo Gentile.</p>
<p>Tutte le informazioni relative a cosa fa questo plugin potrete trovarle all&#8217;interno del file <em>README.txt</em> contenuto nel pacchetto in cui troverete:</p>
<ol>
<li>README.txt</li>
<li>musica.sql</li>
<li>scheda.php</li>
<li>scheda3.php</li>
</ol>
<p><span id="more-457"></span><br />
<strong>Cosa fa?</strong><br />
Questo script permette di inserire all&#8217;interno delle schede dei personaggi<br />
un lettore tratto da <a href="http://www.mixpod.com/" target="_blank">mixpod.com</a></p>
<p><strong>Come si usa?</strong><br />
Quando si sceglierà di modificare la scheda del proprio personaggio, l&#8217;utente<br />
avrà a disposizione una scelta molto semplice addizionale a quella che già avrete<br />
previsto per la vostra community.<br />
Compariranno i campi:</p>
<ol>
<li><strong>MyID</strong> &#8211; l&#8217;ID della playlist su mixpod</li>
<li><strong>Skin </strong>- si potrà selezionare la skin direttamente da mixpod</li>
<li><strong>Color 1,2,3</strong> &#8211; i colori in esadecimale per il proprio lettore</li>
</ol>
<p>questi valori sono limitati in input, il primo è limitato a 8 ma dato il crescente numero<br />
si playlist du <a href="http://www.mixpod.com/" target="_blank">mixpod.com</a>, il valore è espandibile fino ad 11 cifre (valore ragionevolmente grande).</p>
<p>il file <em>musica.sql</em> si occuperà di aggiornare la tabella personaggio del database<br />
in modo tale da permettere la memorizzazione di questi valori all&#8217;interno della scheda<br />
del personaggio. Di default sono posti tutti a 0.</p>
<p>Il file <em>scheda.php</em> contiene le modifiche necessarie per inserire i dati passati da<br />
<em>scheda3.php</em> all&#8217;interno del database ed ovviamente per recuperarli ed inserirli<br />
nel codice standard del lettore.</p>
<p>PS: il lettore deve essere posizionato a discrezione del programmatore all&#8217;interno della scheda<br />
Io l&#8217;ho posizionato così, senza premura, sta a voi sistemarlo come si conviene.</p>
<p>Se il valore di MyID è nullo viene posto a 0.<br />
Se l&#8217;id della playlist è nullo o zero, allora questa non viene visualizzata.</p>
<p><strong>Come si installa?</strong></p>
<p>Tengo a precisare ancora una volta che, non ho scritto un codice con grafica ossia, mini help, CSS, posizionamento nella scheda. No, ho inserito dei commenti la dove ho modificato lasciando l&#8217;incombenza della grafica al programmatore che l&#8217;adatterà a sua scelta alla propria community.<br />
Andiamo a vedere e commentare quali sono le parti del codice che sono state aggiunte all&#8217;interno dei vari file:<br />
<strong>musica.sql</strong></p>
<pre class="brush: sql">
ALTER TABLE Personaggio ADD MyID integer(11) default &#039;0&#039;;
ALTER TABLE Personaggio ADD Skin varchar(30) default &#039;myflashfetish-mp3-player.swf&#039;;
ALTER TABLE Personaggio ADD Color1 varchar(6) default &#039;000000&#039;;
ALTER TABLE Personaggio ADD Color2 varchar(6) default &#039;000000&#039;;
ALTER TABLE Personaggio ADD Color3 varchar(6) default &#039;000000&#039;;
</pre>
<p>Questo file è fondamentale dato che, modificherà la tabella personaggio e quindi consentirà di memorizzare le impostazioni della playlist di <a href="http://www.mixpod.com/" target="_blank">mixpod.com</a>.</p>
<p><strong>Scheda3.php</strong></p>
<p>Questo file consente di modificare la scheda. Semplicemente ho aggiunto dei campi che permettono di aggiungere i dati della playlist:</p>
<ol>
<li><strong>MyID:</strong> ovviamente contiene l&#8217;id della playlist ed è un intero a 8 cifre</li>
<li><strong>Skin:</strong> è una combobox con la scelta delle skin disponibili su mixpod</li>
<li><strong>Colori:</strong> i colori in formato esadecimale, limitati ovviamente a 6 caratteri.</li>
</ol>
<p>Premendo invio questi dati sono inviati a <em>Scheda.php</em><br />
<em>L&#8217;aggiunta va dalla riga 161 alla riga 207</em>.</p>
<p><strong>Scheda.php</strong></p>
<p>Qui le modifiche sono state più sostanziali.</p>
<p>Come vedrete nei commenti, quello che mi sono limitato a fare è aggiungere la ricezione dei parametri da <em>Scheda3.php</em> e quindi inserirli nelle query.<br />
E&#8217; fondamentale che nella prima parte rispettiate l&#8217;esatto ordine in cui ho modificato il file, ci sono dei vistosi commenti. <br/><br />
Aggiungere sotto:</p>
<pre class="brush: php">
$capacita = $_POST[&#039;capacita&#039;];
</pre>
<p>Questo:</p>
<pre class="brush: php">
//RACCOLTA DATI LETTORE
 $myid = ereg_replace(&quot;[^0-9 ]&quot;, &quot;0&quot;, $_POST[&#039;myid&#039;]);
 $skin = $_POST[&#039;skin&#039;];
 $color1 =ereg_replace(&quot;[^A-Fa-f0-9 ]&quot;, &quot;0&quot;, $_POST[&#039;color1&#039;]);
 $color2 =ereg_replace(&quot;[^A-Fa-f0-9 ]&quot;, &quot;0&quot;, $_POST[&#039;color2&#039;]);
 $color3 =ereg_replace(&quot;[^A-Fa-f0-9 ]&quot;, &quot;0&quot;, $_POST[&#039;color3&#039;]);
 //FINE
</pre>
<p>Aggiungere sotto:</p>
<pre class="brush: php">
$midi = trim($midi);
</pre>
<p>Questo:</p>
<pre class="brush: php">
 //VARIABILI PER LETTORINO
 $myid =trim($myid);
 $skin =trim($skin);
 $color1 =trim($color1);
 $color2 =trim($color2);
 $color3 =trim($color3);
 //FINE VARIABILI PER LETTOTINO
</pre>
<p>Aggiungere sotto:</p>
<pre class="brush: php">
 $MySql .= &quot; UrlImg = &#039;&quot;.$urlimg.&quot;&#039;,&quot;;
</pre>
<p>Questo:</p>
<pre class="brush: php">
	//AGGIUNTA LETTORE QUERY
	$MySql .= &quot; MyID = &#039;&quot;.$myid.&quot;&#039;,&quot;;
	$MySql .= &quot; Skin = &#039;&quot;.$skin.&quot;&#039;,&quot;;
	$MySql .= &quot; Color1 = &#039;&quot;.$color1.&quot;&#039;,&quot;;
	$MySql .= &quot; Color2 = &#039;&quot;.$color2.&quot;&#039;,&quot;;
	$MySql .= &quot; Color3 = &#039;&quot;.$color3.&quot;&#039;&quot;;
	//FINE AGGIUNTA
</pre>
<p>L&#8217;unica parte che potrete personalizzare a vostro piacimento è dalla linea 464 alla 561.</p>
<p>Ho inserito uno switch perché non volevo usare file esterni o accesso al database anche in vista di una facile modificabilità per modifiche future. Ma comunque liberi di personalizzare il vostro codice.</p>
<p>Inserite la porzione che vi ho indicato dove meglio credete all&#8217;interno del file <em>scheda.php</em> in modo tale che il lettore sia visibile.</p>
<p>Buon ascolto!<br />
Note: There is a file embedded within this post, please visit this post to download the file.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2009/09/28/mixpod-patch-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modifica Passaggio dati da Flash a PHP con invio mail</title>
		<link>http://www.blog.zengfx.net/2008/11/26/modifica-passaggio-dati-da-flash-a-php-con-invio-mail/</link>
		<comments>http://www.blog.zengfx.net/2008/11/26/modifica-passaggio-dati-da-flash-a-php-con-invio-mail/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 10:14:43 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Action Script 3.0]]></category>
		<category><![CDATA[Mailsender]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=270</guid>
		<description><![CDATA[In questo tutorial ci occuperemo di come inviare delle email attraverso l&#8217;ausilio di Flash e PHP. Gli aspetti importanti di questo tutorial, saranno la realizzazione di un modulo per l&#8217;invio di mail realizzato in flash, ma ancor di più il modo in cui i dati vengono inviati da quest&#8217;ultimo a PHP. Nel tutorial troverete il [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom: 0cm" align="justify"><img class="alignleft" style="border: 0pt none;" src="http://i241.photobucket.com/albums/ff284/Logan_Cale/Tutorial/TutorialMailFlashPHP/prew.jpg" border="0" alt="" width="150" height="58" />In questo tutorial ci occuperemo di come inviare delle email attraverso l&#8217;ausilio di Flash e PHP. Gli aspetti importanti di questo tutorial, saranno la realizzazione di un modulo per l&#8217;invio di mail realizzato in flash, ma ancor di più il modo in cui i dati vengono inviati da quest&#8217;ultimo a PHP.</p>
<p style="margin-bottom: 0cm" align="justify">Nel tutorial troverete il form d&#8217;esempio per l&#8217;email, il codice PHP e quello ActionScript 3.0 abbondantemente descritti passo per passo per facilitarne la comprensione ed un eventuale riutilizzo per altre applicazioni a vostra scelta.</p>
<p style="margin-bottom: 0cm" align="right"><span id="more-270"></span></p>
<p>In questo tutorial ci occuperemo di come inviare delle email attraverso l&#8217;ausilio di Flash e PHP. Gli aspetti importanti di questo tutorial, saranno la realizzazione di un modulo per l&#8217;invio di mail realizzato in flash, ma ancor di più il modo in cui i dati vengono inviati da quest&#8217;ultimo a PHP.<br />
Nel tutorial troverete il form d&#8217;esempio per l&#8217;email, il codice PHP e quello ActionScript 3.0 abbondantemente descritti passo per passo per facilitarne la comprensione ed un eventuale riutilizzo per altre applicazioni a vostra scelta.</p>
<p>Iniziamo con con il realizzare in flash un form come questo:</p>
<div style="text-align: center;"><img src="http://i241.photobucket.com/albums/ff284/Logan_Cale/Tutorial/TutorialMailFlashPHP/1.jpg" border="0" alt="" align="top" /></div>
<p>io ho dato le dimensioni di 400&#215;400, ma ovviamente voi potrete variare tutto come volete sia in dimensioni che forma, l&#8217;importante è che usiate gli stessi componenti che vengono utilizzati qui affinché l&#8217;action script che esamineremo sia compatibile.<br />
Io ho usato quattro text field di cui le prime due denominate, txtDestinatario, txtOggetto, sono impostate come campo testo di input, quella in trasparenza txtLog è impostata come testo dinamico ed infine, l&#8217;ultima txtMessaggio è impostata come testo di input multiriga.</p>
<p>Con queste impostazioni, una volta creato il form, andiamo a selezionare lo stage per inserire al suo interno nel campo Azione di Flash CS3 questo codice:</p>
<div class="geshi actionscript">
<ol>
<li class="li1">
<div class="de1">txtDestinatario.<span class="kw3">text</span>=<span class="st0">&#39;destinatario@mail.it&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1">txtOggetto.<span class="kw3">text</span>=<span class="st0">&#39;Object&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1">txtMessaggio.<span class="kw3">text</span>=<span class="st0">&#39;Messaggio&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> sendmail<span class="br0">&#40;</span>event:MouseEvent<span class="br0">&#41;</span>:<span class="kw3">void</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span>txtDestinatario.<span class="kw3">text</span> == <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="sy0">||</span><span class="br0">&#40;</span>txtOggetto.<span class="kw3">text</span> == <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span> <span class="sy0">||</span><span class="br0">&#40;</span>txtMessaggio.<span class="kw3">text</span> == <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">txtLog.<span class="kw3">text</span>=<span class="st0">&quot;Campo Vuoto!&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> mail:URLVariables = <span class="kw2">new</span> URLVariables<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">mail.<span class="me1">destinatario</span> = txtDestinatario.<span class="kw3">text</span>;</div>
</li>
<li class="li1">
<div class="de1">mail.<span class="me1">oggetto</span> = txtOggetto.<span class="kw3">text</span>;</div>
</li>
<li class="li1">
<div class="de1">mail.<span class="me1">messaggio</span> = txtMessaggio.<span class="kw3">text</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> ponte:URLRequest = <span class="kw2">new</span> URLRequest<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">ponte.<span class="kw3">url</span>=<span class="st0">&#39;sendmail.php&#39;</span>;</div>
</li>
<li class="li1">
<div class="de1">ponte.<span class="kw3">data</span>=mail;</div>
</li>
<li class="li1">
<div class="de1">ponte.<span class="me1">method</span>=URLRequestMethod.<span class="me1">POST</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> loader:URLLoader = <span class="kw2">new</span> URLLoader<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">loader.<span class="me1">dataFormat</span> = URLLoaderDataFormat.<span class="kw3">TEXT</span>;</div>
</li>
<li class="li1">
<div class="de1">addListeners<span class="br0">&#40;</span>loader<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">try</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">loader.<span class="kw3">load</span><span class="br0">&#40;</span>ponte<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">catch</span><span class="br0">&#40;</span><span class="kw3">error</span>:<span class="kw3">Error</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">trace</span><span class="br0">&#40;</span><span class="st0">&#39;Errore trasferimento&#39;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> addListeners<span class="br0">&#40;</span>dispac:IEventDispatcher<span class="br0">&#41;</span>:<span class="kw3">void</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">dispac.<span class="me1">addEventListener</span><span class="br0">&#40;</span>Event.<span class="me1">COMPLETE</span>,completo<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">dispac.<span class="me1">addEventListener</span><span class="br0">&#40;</span>IOErrorEvent.<span class="me1">IO_ERROR</span>,errore<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> completo<span class="br0">&#40;</span>evento:Event<span class="br0">&#41;</span>:<span class="kw3">void</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">txtLog.<span class="kw3">text</span>=<span class="st0">&quot;Fatto.&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> errore<span class="br0">&#40;</span>evento:IOErrorEvent<span class="br0">&#41;</span>:<span class="kw3">void</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">txtLog.<span class="kw3">text</span>=<span class="st0">&quot;Errore.&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">btnSend.<span class="me1">addEventListener</span><span class="br0">&#40;</span>MouseEvent.<span class="me1">CLICK</span>, sendmail<span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Lo script su riportato ha lo scopo di preparare i dati inseriti nel form per un invio a PHP, che avrà a sua volta la funzione di inviare l&#8217;email. Ma andiamo ad esaminare tute le funzionalità.</p>
<p>Per prima cosa, appena il filmato parte, bisogna inizializzare i campi testo d&#8217;input. Per farlo utilizziamo le prime tre righe del codice su proposto. Dobbiamo adesso valutare quando i dati devono essere inviati a PHP per l&#8217;invio dell&#8217;email, ovviamente la cosa che ad intuito si può comprendere, è che i dati debbono essere inviati con la pressione del tasto “send”. Per fare questo, introduciamo una linea di codice atta a catturare l&#8217;evento per il nostro pulsante denominato btnSend.</p>
<p>All&#8217;ultima riga del codice, possiamo notare che è stato aggiunta la cattura di un Evento ovvero, lo script è in attesa di un evento del tipo Mouse Click. Quando questo si verifica, deve essere attivata la funzione sendmail.</p>
<p>Analizziamo adesso quest&#8217;ultima funzione. Come prima cosa, bisogna effettuare un rapido controllo sull&#8217;integrità dei dati, ovvero in questo caso  che non ci siano campi vuoti. Il controllo è molto semplice e si fa con il blocco if in cui sono inserite le condizioni in OR. Se il test va a buon fine, significa che il mittente ha lasciato qualche campo vuoto e quindi deve essere generato un errore, che in questo caso corrisponde ad un messaggio comunicato attraverso la nostra txtLog. In questo esempio si è fatto solo il controllo sulle caselle vuote, ovviamente se si vuole realizzare qualcosa di più complesso, il controllo andrebbe effettuato anche sulla sintassi dell&#8217;indirizzo email.</p>
<p>Continuando nel blocco if, notiamo di essere arrivati all&#8217;else, questa porzione di codice viene eseguita nel caso in cui il test fallisca, ovvero tutti i campi del form sono pieni. Qui creiamo una variabile denominata mail, che servirà a confezionare i dati che vogliamo inviare allo script in PHP, prelevandoli direttamente dalle caselle di testo attraverso la proprietà .text.</p>
<p>Quando i dati sono pronti, bisogna aprire un canale verso PHP, quindi bisogna creare una variabile di tipo URLRequest, nell&#8217;esempio è denominata ponte. Con l&#8217;aiuto di questa variabile, per prima cosa selezioniamo il nostro script in PHP, poi selezioniamo i dati che vogliamo inviare, ovvero la nostra variabile mail, ed infine selezioniamo la modalità d&#8217;invio dei dati allo script, in questo esempio è stato scelto il metodo POST.</p>
<p>Inizia a questo punto la serie di controlli sulla corretta consegna dei dati allo script PHP.<br />
Creiamo una variabile loader e settiamo il tipo di formato di dati caricati come TEXT, dato che noi dobbiamo inviare delle email di testo. Una volta fatto questo, evochiamo la funzione addListeners(loader) che ci consentirà di catturare i vari eventi per comprendere se i dati sono stati correttamente inviati allo script PHP o se ci sono stati degli errori.<br />
Prima di esaminare la funzione addListeners, diamo considerazione al blocco try catch.</p>
<p>La funzione di caricamento della variabile loader, può generare degli errori che devono essere catturati e appunto per questo serve inserire la gestione errore con il try catch. Esaminiamo la funzione addListeners e scopriamo che altro non si tratta di un dispatcher atto a catturare eventi e quindi, assegnare ad essi una relativa funzione.</p>
<p>In questo caso a noi interessa catturare due eventi specifici, l&#8217;avvenuto invio dei dati ossia “complete” ed il verificarsi di qualche errore nel trasferimento ovvero “IOErrorEvent”.</p>
<p>La cattura di questi eventi implica il farne qualcosa e questo è demandato alle funzioni completo ed errore che si occuperanno di comunicare nella txtLog un messaggio sulla riuscita o sul fallimento dei dati.</p>
<p>Abbiamo visto tutto di questo script, adesso andiamo ad analizzare lo script PHP:</p>
<div class="geshi php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Destinatario</span> <span class="sy0">=</span> <span class="re1">$HTTP_POST_VARS</span><span class="br0">&#91;</span><span class="st0">&#39;destinatario&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Oggetto</span> <span class="sy0">=</span> <span class="re1">$HTTP_POST_VARS</span><span class="br0">&#91;</span><span class="st0">&#39;oggetto&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Messaggio</span> <span class="sy0">=</span> <span class="re1">$HTTP_POST_VARS</span><span class="br0">&#91;</span><span class="st0">&#39;messaggio&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">mail</span><span class="br0">&#40;</span><span class="re1">$Destinatario</span><span class="sy0">,</span><span class="re1">$Oggetto</span><span class="sy0">,</span><span class="re1">$Messaggio</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<div>Lo script è molto semplice, in queste tre variabili andiamo a depositare i dati prelevati attraverso il metodo POST. E&#8217; estremamente importante che i nomi dei parametri della funzione $HTTP_POST_VARS coincidano con i nomi dati ai campi della variabile mail nell&#8217;ActionScript, altrimenti è ovvio che non funziona. Per ulteriori spiegazioni sulla funzione mail, si faccia riferimento al tutorial sull&#8217;invio mail <a title=" Invio Mail con PHP" href="http://www.blog.zengfx.net/2008/11/21/invio-mail-con-php/" target="_self">qui</a> .</div>
Note: There is a file embedded within this post, please visit this post to download the file.
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2008/11/26/modifica-passaggio-dati-da-flash-a-php-con-invio-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invio Mail con PHP</title>
		<link>http://www.blog.zengfx.net/2008/11/21/invio-mail-con-php-2/</link>
		<comments>http://www.blog.zengfx.net/2008/11/21/invio-mail-con-php-2/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 16:39:15 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Destinatario]]></category>
		<category><![CDATA[indirizzo]]></category>
		<category><![CDATA[machera]]></category>
		<category><![CDATA[Mail]]></category>
		<category><![CDATA[Mittente]]></category>
		<category><![CDATA[Oggetto]]></category>
		<category><![CDATA[phpversion]]></category>
		<category><![CDATA[Testo]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=256</guid>
		<description><![CDATA[PHP mette a disposizione degli sviluppatori, molte funzioni che ne facilitano l&#8217;uso ed una di queste è la funzione mail(). Questa infatti, fornendo gli adeguati parametri quali il destinatario, l&#8217;oggetto, il messaggio, permette di inviare comodamente delle email a chi vogliamo, attraverso il server che ospita il nostro script. Vediamo adesso semplicemente, come creare uno [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="mail" src="http://img529.imageshack.us/img529/1157/mailiconsbyhitechloonuk3.png" alt="" width="128" height="128" />PHP mette a disposizione degli sviluppatori, molte funzioni che ne facilitano l&#8217;uso ed una di queste è la funzione mail(). Questa infatti, fornendo gli adeguati parametri quali il destinatario, l&#8217;oggetto, il messaggio, permette di inviare comodamente delle email a chi vogliamo, attraverso il server che ospita il nostro script.<br />
Vediamo adesso semplicemente, come creare uno script che consenta di inviare un email a qualcuno:<br />
<br/></p>
<p align="right"><span id="more-256"></span></p>
<p><br/><br/></p>
<div class="geshi php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?PHP</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$destinatario</span> <span class="sy0">=</span> <span class="st0">&quot;indirizzo@destinatario.it&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$oggetto</span> <span class="sy0">=</span> <span class="st0">&quot;Oggetto della mail&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$testo</span> <span class="sy0">=</span> <span class="st0">&quot;Testo della mail&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">mail</span><span class="br0">&#40;</span><span class="re1">$destinatario</span><span class="sy0">,</span> <span class="re1">$oggetto</span><span class="sy0">,</span> <span class="re1">$testo</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Questo semplice script permette di mandare delle mail senza il mittente, infatti non è specificato in alcun modo ed esso dipenderà in questo coso unicamente dal server mail di cui vi state servendo per inviarla.</p>
<p>Possiamo tuttavia inserire all&#8217;interno della funzione mail, un intestazione in cui specificare vari parametri, tra cui, quello più importante, il mittente della mail. Per fare questo, dobbiamo procedere nel seguente modo:</p>
<div class="geshi php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?PHP</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$intestazione</span> <span class="sy0">=</span> <span class="st0">&quot;From: indirizzo@mittente.it<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$intestazione</span> <span class="sy0">.=</span> <span class="st0">&quot;Reoly-To: indirizzo@mittente.it<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$intestazione</span> <span class="sy0">.=</span> <span class="st0">&quot;X-Mailer: PHP/&quot;</span> <span class="sy0">.</span><span class="kw3">phpversion</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$destinatario</span> <span class="sy0">=</span> <span class="st0">&quot;indirizzo@destinatario.it&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$oggetto</span> <span class="sy0">=</span> <span class="st0">&quot;Oggetto della mail&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$testo</span> <span class="sy0">=</span> <span class="st0">&quot;Testo della mail&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">mail</span><span class="br0">&#40;</span><span class="re1">$destinatario</span><span class="sy0">,</span> <span class="re1">$oggetto</span><span class="sy0">,</span> <span class="re1">$testo</span><span class="sy0">,</span> <span class="re1">$intestazione</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Inoltre è possibile aggiungere più destinatari elle mail che vogliamo spedire, e addirittura, possiamo far si che l&#8217;email che inviamo, mascherino l&#8217;indirizzo con del testo scelto da noi.<br />
Il tutto è possibile farlo nel seguente modo:</p>
<div class="geshi php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?PHP</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$intestazione</span> <span class="sy0">=</span> <span class="st0">&quot;From: mittente &lt;indirizzo@mittente.it&gt;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$intestazione</span> <span class="sy0">.=</span> <span class="st0">&quot;Reoly-To: mittente &lt;indirizzo@mittente.it&gt;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$intestazione</span> <span class="sy0">.=</span> <span class="st0">&quot;X-Mailer: PHP/&quot;</span><span class="sy0">.</span><span class="kw3">phpversion</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$destinatario</span> <span class="sy0">=</span> <span class="st0">&quot;destinatario &lt;indirizzo@destinatario.it&gt;,&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$destinatario</span> <span class="sy0">.=</span> <span class="st0">&quot;destinatario2 &nbsp;&lt;indirizzo@destinatario2.it&gt;&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$oggetto</span> <span class="sy0">=</span> <span class="st0">&quot;Oggetto della mail&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$testo</span> <span class="sy0">=</span> <span class="st0">&quot;Testo della mail&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">mail</span><span class="br0">&#40;</span><span class="re1">$destinatario</span><span class="sy0">,</span> <span class="re1">$oggetto</span><span class="sy0">,</span> <span class="re1">$testo</span><span class="sy0">,</span> <span class="re1">$intestazione</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>E con questo adesso siamo in grado di inviare una mail attraverso uno script PHP, a condizioni che il server ce lo permetti.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2008/11/21/invio-mail-con-php-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Realizzare una shoutbox in PHP</title>
		<link>http://www.blog.zengfx.net/2008/09/06/172/</link>
		<comments>http://www.blog.zengfx.net/2008/09/06/172/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 10:18:23 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Shoutbox]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=172</guid>
		<description><![CDATA[Questo script scritto in PHP ha come proposito l&#8217;illustrazione della realizzazione di una ShoutBox. Tutti sapranno di cosa si tratta, ma spesso ci si pongono molti interrogativi su come poterla implementare, ricorrendo spesso per i propri siti a lavori fatti da altri, che poi verranno più o meno sapientemente adattati al proprio sito. Lo scopo [...]]]></description>
			<content:encoded><![CDATA[<p><img src="images/stories/tec/bluetast.jpg" border="0" alt="Active Image" width="190" height="141" align="left" />Questo script scritto in PHP ha come proposito l&#8217;illustrazione della realizzazione di una ShoutBox. Tutti sapranno di cosa si tratta, ma spesso ci si pongono molti interrogativi su come poterla implementare, ricorrendo spesso per i propri siti a lavori fatti da altri, che poi verranno più o meno sapientemente adattati al proprio sito.<br />
Lo scopo di questo tutorial non è quello di fornire uno script da utilizzare nei propri siti, ma quello di insegnare qual&#8217;è il comportamento di una Shoutbox, quali sono i suoi funzionamenti e quindi come poterne realizzare una nostra, adatta in tutto e per tutto alle esigenze che vogliamo e quindi meglio adattabile al nostro sito.</p>
<p>Per poterla realizzare e quindi iniziare a muovere i primi passi, abiamo bisogno di aver installato sul nostro computer un webserver come Apache, con PHP e MySQL.</p>
<p>Una volta muniti di tali prerequisiti siete pronti per iniziare</p>
<p><span id="more-172"></span></p>
<p>Come prima cosa aprite un client MySQL (PHPmyAdmin, QueryBrowser, Terminale, etc..) ed eseguite lo script per la tabella della shoutbox che servirà a memorizzare tutti i vostri messaggi:</p>
<p><code>create table shoutbox(<br />
idmessaggio int not null auto_increment,<br />
utente varchar(30) not null,<br />
messaggio varchar(100) not null,<br />
datamessaggio datetime not null,<br />
ipaddress varchar(15) not null,<br />
primary key (idmessaggio)<br />
);</code></p>
<p>Una volta compiuta questa ooerazione, possiamo inziare a creare il nostro script. Io sono propenso a non accorpare i parametri e gli script per la connessione al Database in un unico file, ma ciò non toglie che sia possibile farlo, quindi per questa guida è necessario creare sul proprio webserver la cartelle /include/ e quindi salvare in essa i due seguenti file:</p>
<p><code>&lt;?PHP<br />
////////////////////////////////////////////<br />
/*Tutorial realizzato da Logan<br />
wwww.infone.netsons.org<br />
file di configurazione*/<br />
////////////////////////////////////////////</p>
<p>//Settaggio parametri di connessione.<br />
$database = "nomedatabase";<br />
$utentedb = "inserisciiltuonomeutente";<br />
$passdb = "inseriscilatuapassword";<br />
$hostdb = "localhost";</p>
<p>//Settaggio delle caratteristiche della Shoutbox.</p>
<p>//utente di default.<br />
$nick_utente_default = "Utente";<br />
//messaggio di default.<br />
$messaggio_default = "Messaggio";<br />
//limite minimo di caratteri.<br />
$limite_minimo = 10;<br />
//limite massimo di messaggi visualizzati.<br />
$limite_visualizzato = "LIMIT 10";<br />
?&gt;</code></p>
<p>Adesso tocca alla creazione del secondo file, quello per la connessione al database:</p>
<p><code>&lt;?PHP<br />
////////////////////////////////////////////<br />
/*Tutorial realizzato da Logan<br />
wwww.infone.netsons.org<br />
file di connessione*/<br />
////////////////////////////////////////////</p>
<p>include('config.php');</p>
<p>//Instaurazione connessione con il dataase.</p>
<p>$connessione = mysql_connect($hostdb,$utentedb,$passdb,true)<br />
or die("Spiacente ma la connessione non può essere stabilita");<br />
$database = mysql_select_db($database,$connessione)<br />
or die("Spiacente ma il database non è presente");<br />
?&gt;{/geshibot}</p>
<p>Bene una volta fatto questo, possiamo concentrarci sul cuore della nostra shoutbox che analizzaremo pezzo per pezzo, pertanto tutti i frammenti di codice che adesso andremo a visionare, sono tutti parte di un unico file che creeremo fuori dalla cartella include:</p>
<p>{geshibot lang="PHP" head="shoutbox.php - Inserimento dei dati nel database."}&lt;?PHP<br />
////////////////////////////////////////////<br />
/*Tutorial realizzato da Logan<br />
wwww.infone.netsons.org<br />
file di utilizzo*/<br />
////////////////////////////////////////////</p>
<p>//qui richiamiamo i due script di configurazione e connessione al dataase.<br />
include('include/config.php');<br />
include('include/connection.php');<br />
//qui raccogliamo i dati che vengono inviati.<br />
//se ho ricevuto il parametro post vuol dire che devo prelevare i dati passati.<br />
if ($_GET['action'] == 'post'){<br />
//ho bisogno di una variabile di errore.<br />
$ERRORE = false;<br />
//prendo l'IP.<br />
$IP = $_SERVER['REMOTE_ADDR'];<br />
//prendo il Nick.<br />
$Nick =$_POST['txtNome'];<br />
//controllo del nick.<br />
if($Nick == $nick_utente_default or empty($Nick)){<br />
echo "&lt;p&gt;Controllare che il nome non sia quello di defoult che non<br />
sia vuoto o che non superi i limiti consentiti&lt;/p&gt;";<br />
$ERRORE = true;<br />
}<br />
//prendo il messaggio<br />
$Messaggio =$_POST['txtMess'];<br />
//controllo del messaggio.<br />
if (($Messaggio == $messaggio_default) or (empty($Messaggio))<br />
or (strlen($Messaggio) &lt; $limite_minimo)){<br />
echo "&lt;p&gt;Controllare che il messaggio non sia quello di defoult,<br />
che non sia vuoto o che non superi i limiti consentiti&lt;/p&gt;";<br />
$ERRORE = true;<br />
}<br />
//se non ci sono errori allora posso inserire i dati all'interno del database.<br />
if (!$ERRORE){<br />
$Ora = date ("y-m-d h:i:s");<br />
//impedisco i tag HTML.<br />
$Nome = preg_replace('#(&lt;)([\/]?.*?)(&gt;)#is', "&lt;\\2&gt;", $Nick);<br />
$MessaggioF = preg_replace('#(&lt;)([\/]?.*?)(&gt;)#is', "&lt;\\2&gt;", $Messaggio);<br />
//Inserisco nel DB i dati con una query.<br />
$MySQLSend = "INSERT INTO shoutbox(utente, messaggio, datamessaggio, ipaddress)<br />
VALUES ('$Nome','$MessaggioF','$Ora','$IP');";<br />
mysql_query($MySQLSend);<br />
}<br />
}<br />
?&gt;</code></p>
<p>Adesso passiamo alla creazione della parte HTML, ovviamente non troverete decori fogli di stile particolari o altro, ma è ovvio che questo è solamente un tutorial su come funziona una shoutbox, non una vera shoutbox da usare in un sito, anche se il modello qui esposto è funzionante.</p>
<p><code>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;<br />
&lt;title&gt;Shoutbox&lt;/title&gt;<br />
&lt;meta name="GENERATOR" content="Kate  (Linux)"&gt;<br />
&lt;style type="text/css"&gt;<br />
&lt;!--<br />
@page { size: 21cm 29.7cm; margin: 2cm }<br />
P { margin-bottom: 0.21cm }<br />
--&gt;<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body dir="ltr" lang="it-IT"&gt;<br />
&lt;h1 style="margin-bottom: 0cm;"&gt;<br />
&lt;em&gt;&lt;strong&gt;Benvenuti nella nostra Shoutbox &lt;/strong&gt;&lt;/em&gt;&lt;/h1&gt;<br />
&lt;hr&gt;<br />
&lt;div align="center"&gt;<br />
&lt;p style="margin-bottom: 0cm; font-style: normal;"&gt;<br />
Elenco messaggi:<br />
&lt;/p&gt;<br />
&lt;form id="frmInterventi" name="interventi"&gt;<br />
&lt;table width="500" border="0"&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;</code></p>
<p>Adesso seguirà una parte molto interessante, ovvero la lettura e quindi la stampa dei messaggi inseriti, all&#8217;interno della nostra shoutbox, per fare questo abbiamo bisogno di uno script PHP:</p>
<p><code>&lt;?php<br />
/**Codice per la lettura dei messaggi da DB**/<br />
$MySQL = "SELECT utente, messaggio, datamessaggio";<br />
$MySQL.=" FROM shoutbox";<br />
$MySQL.=" ORDER BY datamessaggio DESC ".$limite_visualizzato.";";<br />
$vista = mysql_query($MySQL);<br />
while($rs = mysql_fetch_array($vista)){<br />
echo "&lt;hr&gt;&lt;P&gt;Nome: ".$rs['utente']."&lt;/p&gt;&lt;p&gt;Messaggio: "<br />
.$rs['messaggio']."&lt;/p&gt;&lt;p&gt;Alle:".$rs['datamessaggio']."&lt;/p&gt;";<br />
}<br />
$rs-&gt;close;<br />
?&gt;</code></p>
<p>Segue in ultimo, il form di inserimento dei dati in cui cariceremo il nome utente ed il messaggio di defoult e passeremo come parametro allo stesso script PHP che stiamo scrivendo adesso, il valore post, di modo che possa essere abilitato l&#8217;inserimento dei dati all&#8217;interno del database.</p>
<p><code> &lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;/div&gt;<br />
&lt;hr&gt;<br />
&lt;div align="center"&gt;<br />
&lt;p style="margin-bottom: 0cm; font-style: normal;"&gt;<br />
Fai il tui intervento!:<br />
&lt;/p&gt;<br />
&lt;form id="frmRisposta" name="risposta" method="post" action="?action=post"&gt;<br />
&lt;table width="500" border="0"&gt;<br />
&lt;tr&gt;<br />
&lt;td width="59"&gt;Nome:&lt;/td&gt;<br />
&lt;td width="125"&gt;<br />
&lt;input type="text" name="txtNome" value=&lt;? echo $nick_utente_default ?&gt; /&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;Messaggio:&lt;/td&gt;<br />
&lt;td&gt;<br />
&lt;textarea name="txtMess" cols="80" rows="10"&gt;&lt;? echo $messaggio_default ?&gt;&lt;/textarea&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;input type="submit" name="btnInvia" value="Invia" /&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;/div&gt;<br />
&lt;hr&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code></p>
<p>E con questo il nostro tutorial è concluso e la shoutbox è pronta all&#8217;uso, spero che questo script possa essere da spunto per la creazione di shoutbox personali di buon livello.</p>
<p>Buon lavoro e a presto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2008/09/06/172/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Consigli per ottimizzare il nostro Codice PHP</title>
		<link>http://www.blog.zengfx.net/2008/09/06/consigli-per-ottimizzare-il-nostro-codice-php/</link>
		<comments>http://www.blog.zengfx.net/2008/09/06/consigli-per-ottimizzare-il-nostro-codice-php/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 09:31:58 +0000</pubDate>
		<dc:creator>Logan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Ottimizzare Codice]]></category>

		<guid isPermaLink="false">http://www.blog.zengfx.net/?p=167</guid>
		<description><![CDATA[In questo tutorial andremo a trattare aspetti fondamentali della programmazione in PHP. Molti si avvicinano a questo linguaggio, ma in pochi effettivamente sanno quali sono le differenze tra un buon codice PHP e un codice qualsiasi. Di seguito, verranno mostrati alcuni punti molto esaustivi che, permetteranno a tutti di valutare quanto sia funzionale il proprio [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><img title="Logo PHP" src="http://static.php.net/www.php.net/images/php.gif" border="0" alt="Logo PHP" />In questo tutorial andremo a trattare aspetti fondamentali della programmazione in PHP. Molti si avvicinano a questo linguaggio, ma in pochi effettivamente sanno quali sono le differenze tra un buon codice PHP e un codice qualsiasi.</p>
<p align="justify">Di seguito, verranno mostrati alcuni punti molto esaustivi che, permetteranno a tutti di valutare quanto sia funzionale il proprio codice, ed eventualmente, riadattarlo seguendo questo pratico tutorial fatto tutto di suggerimenti.</p>
<p align="justify"><span id="more-167"></span></p>
<h3>le basi, sempre utile ripassarle&#8230;</h3>
<ol>
<li>Uno script  PHP è almeno 2-10 volte più lento di una pagina HTML su Apache. Usa più pagine HTML e meno script!</li>
<li><span style="background-color: #c0c0c0; color: #0000ff;"><em>echo</em></span> è più veloce di<span style="background-color: #c0c0c0"> </span><span style="background-color: #c0c0c0; color: #0000ff;"><em>print</em></span>.</li>
<li>Usa i multi-parametri di <em>echo</em> anzichè concatenare le stringhe, es. <span style="background-color: #c0c0c0; color: #0000ff;">echo(&#8216;Ciao &#8216;, $nome);</span></li>
<li>Fai uso delle innumerevoli funzioni predefinite  di PHP! Spesso non è necessario che tu scriva la tua!</li>
<li>Chiudi le connessioni al database quando non servono più.</li>
<li>Imposta il  maxvalue dei cicli for prima del ciclo stesso e non al suo interno.</li>
<li>Mai usare funzioni per il maxvalue, ad esempio  <span style="background-color: #c0c0c0; color: #0000ff;">for ($x=0; $x &lt; count($array); $x)</span> la funzione <span style="background-color: #c0c0c0; color: #0000ff;"><em>count()</em></span> viene eseguita ad ogni loop!</li>
<li>Fai l&#8217;unset delle variabili per liberare memoria, specialmente se sono grandi array.</li>
<li><span style="background-color: #c0c0c0; color: #0000ff;">$row[’id’]</span> è 7 volte più veloce di <span style="background-color: #c0c0c0; color: #0000ff;">$row[id]</span>.</li>
<li>Racchiudere 	le stringhe tra apostrofi (es &#8216;ciao&#8217;) anziché apici (es &#8220;ciao&#8221;) risulta 	leggermente più veloce dal momento che PHP cerca le variabili 	all&#8217;interno di &#8220;&#8230;&#8221; e non all&#8217;interno di &#8216;&#8230;&#8217;. Ovviamente puoi fare 	così solo quando non hai bisogno di variabili all&#8217;interno delle 	stringhe.</li>
</ol>
<hr id="system-readmore" />
<h3>più a fondo&#8230;</h3>
<ol>
<li><span style="color: #0000ff;"><em style="background-color: #c0c0c0">require_once()</em></span> è costosa.</li>
<li>Sopprimere gli errori con  @ è molto lento.</li>
<li>Meglio utilizzare <span style="background-color: #c0c0c0; color: #0000ff;"><em>select</em></span> anziché molti <span style="background-color: #c0c0c0; color: #0000ff;"><em>if</em></span> ed <span style="background-color: #c0c0c0; color: #0000ff;"><em>else if</em></span>.</li>
<li>Se un metodo può essere static,  dichiaralo static. E&#8217; 4 volte più veloce.</li>
<li>Usando 	percorsi assoluti negli include e require, viene speso meno tempo per 	risolvere i percorsi completi del SO. (Ma attenzione, imposta il 	percorso assoluto in una variabile, altrimenti dovrai riscrivere tutto 	in caso di cambio di path assoluto sul server).</li>
<li>Per conoscere l&#8217;istante in cui lo script è stato eseguito, <span style="background-color: #c0c0c0; color: #0000ff;"><em>$_SERVER[’REQUEST_TIME’]</em></span> è meglio di <span style="background-color: #c0c0c0; color: #0000ff;"><em>time()</em></span>.</li>
<li>Controlla se puoi utilizzare  <span style="background-color: #c0c0c0; color: #0000ff;"><em>strncasecmp</em></span>, <span style="background-color: #c0c0c0; color: #0000ff;"><em>strpbrk</em></span> e <span style="background-color: #c0c0c0; color: #0000ff;"><em>stripos</em></span> in luogo di <span style="background-color: #c0c0c0; color: #0000ff;"><em>regex</em></span>.</li>
<li><span style="background-color: #c0c0c0; color: #0000ff;"><em>str_replace</em></span> è più veloce di <span style="background-color: #c0c0c0; color: #0000ff;"><em>preg_replace</em></span>, ma <span style="background-color: #c0c0c0; color: #0000ff;"><em>strtr</em></span> è più veloce di <span style="background-color: #c0c0c0; color: #0000ff;"><em>str_replace</em></span> di 4 volte!</li>
<li>Se 	una funzione, per esempio di string replacement, accetta sia stringhe 	che array come argomenti, e se la tua lista di argomenti non è 	particolarmente lunga, considera di scrivere codice un po&#8217; più 	ridondante che utilizzi più volte la funzione passando le stringhe, 	anziché una singola linea di codice che utilizzi array come argomenti 	del search &amp; replace.</li>
<li>Incrementare una variabile locale in un metodo è più veloce. Così come richiamare una variabile locale in una funzione.</li>
<li>Incrementare una variabile globale è 2 volte più lento rispetto ad una variabile locale.</li>
<li>Incrementare le proprietà di un oggetto (es. <span style="background-color: #c0c0c0; color: #0000ff;">$this-&gt;prop++</span>) è 3 volte più lento rispetto ad una variabile locale.</li>
<li>Incrementare una variabile locale non definita è 9-10 volte più lento rispetto ad una inizializzata.</li>
<li>Anche 	dichiarare una variabile globale senza utilizzarla in una funzione 	rallenta le cose (tanto quanto incrementare una variabile locale). PHP 	probabilmente fa un controllo per verificare se esiste tale variabile 	globale.</li>
</ol>
<h3>per chi fa colazione con pane e oop&#8230;</h3>
<ol>
<li>Non 	sempre l&#8217;OOP in PHP è la scelta migliore, l&#8217;overhead è significativo. 	Ciascun metodo e chiamata ad un oggetto consumano molta memoria&#8230;</li>
<li>&#8230;richiamare una funzione vuota passando un solo parametro  impiega lo stesso tempo di 7-8 <span style="background-color: #c0c0c0; color: #0000ff;">$localvar++</span>. Analogamente, la chiamata di un metodo altrettanto semplice impiega l&#8217;equivalente di 15 <span style="background-color: #c0c0c0; color: #0000ff;">$localvar++</span>. Sei proprio sicuro di voler  utilizzare <span style="background-color: #c0c0c0; color: #0000ff;">obj-&gt;setValue($var)</span>?</li>
<li>Non implementare qualsiasi struttura dati come una classe, gli array sono altrettanto utili.</li>
<li>Non suddividere troppo i metodi: pensa quale parte di codice dovrai <span style="text-decoration: underline;">realmente</span> riutilizzare&#8230;</li>
<li>&#8230;puoi sempre dividere il codice di un metodo più tardi, quando e se sarà necessario.</li>
<li>I Metodi nelle classi derivate vengono eseguiti più velocemente di quelli definiti nella classe base.</li>
<li>Il 	tempo di invocazione di un metodo sembra non risentire del numero 	totale di metodi definiti nella classe. Infatti inserendo 10 metodi 	aggiuntivi (prima e dopo il metodo richiamato nel test) non ho 	riscontrato alcun cambiamento nelle performance.</li>
<li>Evita i  magici <span style="background-color: #c0c0c0; color: #0000ff;">__get</span>, <span style="background-color: #c0c0c0; color: #0000ff;">__set</span>, <span style="background-color: #c0c0c0; color: #0000ff;">__autoload</span>.</li>
<li>/* php_geek_mode=max  */<br />
Lavorando con le stringhe, se devi controllare che siano di una certa lunghezza probabilmente utilizzi la funzione <span style="background-color: #c0c0c0; color: #0000ff;"><em>strlen()</em></span>.<br />
Questa funzione è abbastanza rapida dato che non fa alcuna operazione 	di calcolo ma semplicemente restituisce la lunghezza, già conosciuta, 	della stringa presente nella struttura zval (la struttura C interna 	usata per salvare le variabili in PHP). Tuttavia, poiché <span style="background-color: #c0c0c0; color: #0000ff;"><em>strlen()</em></span> è una funzione rimane alquanto lenta a causa della chiamata stessa che 	richiede numerose operazioni come il lowercase &amp; hashtable lookup 	seguito dall&#8217;esecuzione della funzione. In alcuni casi puoi migliorare 	la velocità del codice usando questo trucco con <em>i<span style="background-color: #c0c0c0; color: #0000ff;">sset()</span></em>:<span style="background-color: #c0c0c0; color: #0000ff;">if (strlen($foo) &lt; 5) { echo &#8216;Foo is too short&#8217;; } // Correct</span><br />
vs.<br />
<span style="background-color: #c0c0c0; color: #0000ff;">if (!isset($foo{5})) { echo &#8216;Foo is too short&#8217;; } // Smarter</span></p>
<p>Richiamare <span style="background-color: #c0c0c0; color: #0000ff;"><em>isset()</em></span> risulta più veloce poiché  	è un costruttore del linguaggio e non una funzione quindi la sua 	esecuzione non richiede il lookup e lowercase delle funzioni. Non c&#8217;è 	quindi overhead si quello che è il vero codice che determina la 	lunghezza della stringa.<br />
/* php_geek_mode=default */</li>
<li> In PHP, <span style="background-color: #c0c0c0; color: #0000ff;">$i++</span> è leggermente più lento di  <span style="background-color: #c0c0c0; color: #0000ff;">++$i</span> (idem in caso di decremento).<br />
Il post-incremento <span style="background-color: #c0c0c0; color: #0000ff;">($i++)</span> causa la creazione di una variabile temporanea che viene poi 	incrementata laddove invece il pre-incremento opera direttamente sulla 	variabile. Questa è una delle tipiche ottimizzazioni effettuate dagli 	opcode optimizer come Zend, eAccelerator, phpAccelerator e altri.</li>
<li>Se hai funzioni particolarmente cpu-intensive, considera la possibilità di scriverle come C extensions.</li>
<li>Profila 	il tuo codice. Un &#8216;profiler&#8217; evidenzia il tempo impiegato dalle varie 	porzioni del codice. Il debugger Xdebug contiene già un &#8216;profiler&#8217; con 	il quale potrai individuare i colli di bottiglia e migliorare le 	performance globali della tua applicazione web.</li>
</ol>
<h3>[Lato server:~] #&#8230;</h3>
<ol>
<li>Valuta 	l&#8217;utilizzo del mod_deflate per Apache 2.x e mod_gzip per Apache 1.3 per 	risparmiare banda barattandola con una discreta quantità di tempo cpu.</li>
<li>Gli 	script PHP sono ricompilati ogni volta che vengono eseguiti a meno che 	non siano in cache. Installa un software di caching PHP per 	incrementare le performance del 25-100%.</li>
<li>Usa memcached,  un sistema di caching degli oggetti in memoria concepito per alleggerire il carico sul database.</li>
</ol>
<p><strong>Fonte:</strong> <a title="Hosting Professionale" href="http://www.hostingprofessionale.net/guide/php_ottimizzazioni.htm" target="_blank">HostingProfessionale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.zengfx.net/2008/09/06/consigli-per-ottimizzare-il-nostro-codice-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

