
<?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>BitTrack &#187; PHP</title>
	<atom:link href="http://www.bittrack.it/archives/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bittrack.it</link>
	<description>BitTrack.it tratta di Informatica, Programmazione, Reti, Hack, Trucchi, Tutorial, Webdesign e simili.</description>
	<lastBuildDate>Wed, 01 Sep 2010 06:07:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Aggiungere o sostituire manualmente le smiley di wordpress</title>
		<link>http://www.bittrack.it/archives/aggiungere-o-sostituire-manualmente-le-smiley-di-wordpress/</link>
		<comments>http://www.bittrack.it/archives/aggiungere-o-sostituire-manualmente-le-smiley-di-wordpress/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 15:00:06 +0000</pubDate>
		<dc:creator>Raspo</dc:creator>
				<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[trick]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.bittrack.it/?p=1287</guid>
		<description><![CDATA[<div><img width="200" height="200" src="http://www.bittrack.it/wp-content/uploads/2010/03/smiley.png" class="attachment-post-thumbnail wp-post-image" alt="wordpress smiley" title="smiley" /></div>Per rendere i nostri articoli un po&#8217; meno noiosi, WordPress ci permette da sempre di aggiungere al testo tutta una serie di smiley (cioè delle faccine), semplicemente scrivendo determinate combinazioni di caratteri. Ma cosa fare se il set predefinito di faccine non ci soddisfa più e non ci accontentiamo neanche di quelli offerti dai vari [...]]]></description>
			<content:encoded><![CDATA[<div><img width="200" height="200" src="http://www.bittrack.it/wp-content/uploads/2010/03/smiley.png" class="attachment-post-thumbnail wp-post-image" alt="wordpress smiley" title="smiley" /></div><p>Per rendere i nostri articoli un po&#8217; meno noiosi, WordPress ci permette da sempre di aggiungere al testo tutta una serie di smiley (cioè delle faccine), semplicemente scrivendo determinate combinazioni di caratteri.<br />
Ma cosa fare se il set predefinito di faccine non ci soddisfa più e non ci accontentiamo neanche di quelli offerti dai vari plugin in circolazione? La soluzione più ovvia è quella di impostare manualmente un nostro set di smiley completamente personalizzato. Vediamo dunque come procedere.<br />
<span id="more-1287"></span></p>
<h2>Copiare le immagini</h2>
<p>Per prima cosa procuriamoci un set di faccine che ci piaccia; dovranno avere (preferibilmente) le dimensioni di 16X16 pixel. Ce ne sono a centinaia su Internet, basta fare una <a href="http://lmgtfy.com/?q=smiley+icon+set" target="_blank">breve ricerca con Google</a> per avere l&#8217;imbarazzo della scelta.</p>
<p>Adesso entriamo nella cartella in cui è installato WordPress e spostiamoci in <strong>/wp-includes/images/smilies</strong>. Questa è la cartella in cui WordPress tiene le icone di default ed è qui dove andremo ad incollare le nostre nuove faccine.</p>
<p>Arrivati a questo punto, abbiamo aggiunto le immagini, ma quasi sicuramente non funzioneranno perché saranno in numero diverso rispetto alle precedenti e avranno nomi altrettanto diversi.</p>
<h2>Il file di configurazione</h2>
<p>Apriamo dunque il file <strong>functions.php</strong> che si trova in <strong>/wp-includes/</strong>.<br />
Si tratta di un file molto lungo, sarà quindi necessaria una ricerca con la keyword &#8220;smiley&#8221; per raggiungere il punto che ci interessa (nel mio caso era intorno alla righa numero 2620) in cui troviamo scritto tra i commenti una cosa del genere:</p>
<blockquote><p>/**<br />
 * Convert smiley code to the icon graphic file equivalent.<br />
 *<br />
[...]</p></blockquote>
<p>Poco sotto troviamo finalmente elencate le combinazioni di caratteri che richiamano le faccine e il corrispettivo nome del file immagine che le rappresenta (ovviamente si dà per scontato che l&#8217;immagine si trovi in /wp-includes/images/smilies).</p>
<pre class="brush: php;">
	if ( !isset( $wpsmiliestrans ) ) {
		$wpsmiliestrans = array(
		':mrgreen:' =&gt; 'icon_mrgreen.gif',
		':neutral:' =&gt; 'icon_neutral.gif',
		':twisted:' =&gt; 'icon_twisted.gif',
		  ':arrow:' =&gt; 'icon_arrow.gif',
		  ':shock:' =&gt; 'icon_eek.gif',
		  ':smile:' =&gt; 'icon_smile.gif',
		    ':???:' =&gt; 'icon_confused.gif',
		   ':cool:' =&gt; 'icon_cool.gif',
		   ':evil:' =&gt; 'icon_evil.gif',
		   ':grin:' =&gt; 'icon_biggrin.gif',
		   ':idea:' =&gt; 'icon_idea.gif',
		   ':oops:' =&gt; 'icon_redface.gif',
		   ':razz:' =&gt; 'icon_razz.gif',
		   ':roll:' =&gt; 'icon_rolleyes.gif',
		   ':wink:' =&gt; 'icon_wink.gif',
		    ':cry:' =&gt; 'icon_cry.gif',
		    ':eek:' =&gt; 'icon_surprised.gif',
		    ':lol:' =&gt; 'icon_lol.gif',
		    ':mad:' =&gt; 'icon_mad.gif',
		    ':sad:' =&gt; 'icon_sad.gif',
		      '8-)' =&gt; 'icon_cool.gif',
		      '8-O' =&gt; 'icon_eek.gif',
		      ':-(' =&gt; 'icon_sad.gif',
		      ':-)' =&gt; 'icon_smile.gif',
		      ':-?' =&gt; 'icon_confused.gif',
		      ':-D' =&gt; 'icon_biggrin.gif',
		      ':-P' =&gt; 'icon_razz.gif',
		      ':-o' =&gt; 'icon_surprised.gif',
		      ':-x' =&gt; 'icon_mad.gif',
		      ':-|' =&gt; 'icon_neutral.gif',
		      ';-)' =&gt; 'icon_wink.gif',
		       '8)' =&gt; 'icon_cool.gif',
		       '8O' =&gt; 'icon_eek.gif',
		       ':(' =&gt; 'icon_sad.gif',
		       ':)' =&gt; 'icon_smile.gif',
		       ':?' =&gt; 'icon_confused.gif',
		       ':D' =&gt; 'icon_biggrin.gif',
		       ':P' =&gt; 'icon_razz.gif',
		       ':o' =&gt; 'icon_surprised.gif',
		       ':x' =&gt; 'icon_mad.gif',
		       ':|' =&gt; 'icon_neutral.gif',
		       ';)' =&gt; 'icon_wink.gif',
		      ':!:' =&gt; 'icon_exclaim.gif',
		      ':?:' =&gt; 'icon_question.gif',
		);
	}</pre>
<p>Ora non ci resta che sbizzarrirci quanto vogliamo, aggiungendo, togliendo scorciatoie o più semplicemente rinominando le immagini che abbiamo modificato.</p>
<p><strong>NOTA</strong>:<em> poiché si tratta di un file di sistema di WordPress, è bene crearsi una copia di backup prima di apportare qualsiasi modifica, se non sappiamo bene ciò che stiamo facendo.</em></p>
<p><strong>NOTA2</strong>: Poiché appunto si tratta di file di sistema di WordPress, quando andrete ad aggiornare il vostro CMS, questi file verranno sostituiti con quelli di default e dovrete eseguire nuovamente tutto il procedimento.</p>
<p>Per finire vi lascio con un po&#8217; di smiley del set che ho scelto&#8230;<br />
 <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_mad.gif' alt=':x' class='wp-smiley' />  <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' />  <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' />  <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /><br />
&#8230;e la tabella che indica le combinazioni di caratteri e le corrispettive faccine, per chi può interessare.<br />
<a href="http://www.bittrack.it/wp-content/uploads/2010/03/wp-smiley.jpg"><img src="http://www.bittrack.it/wp-content/uploads/2010/03/wp-smiley.jpg" alt="wordpress smiley table" title="wp-smiley" width="340" height="273" class="aligncenter size-full wp-image-1311" /></a></p>


<p>Articoli correlati:<ol><li><a href='http://www.bittrack.it/archives/sostituire-i-font-con-cufon/' rel='bookmark' title='Permanent Link: Sostituire i font con Cufón'>Sostituire i font con Cufón</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.bittrack.it/archives/aggiungere-o-sostituire-manualmente-le-smiley-di-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creare un ajax contact form con validazione dei dati</title>
		<link>http://www.bittrack.it/archives/creare-un-ajax-contact-form-con-validazione-dei-dati/</link>
		<comments>http://www.bittrack.it/archives/creare-un-ajax-contact-form-con-validazione-dei-dati/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 23:53:45 +0000</pubDate>
		<dc:creator>Raspo</dc:creator>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[contact]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[funzioni]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.bittrack.it/?p=668</guid>
		<description><![CDATA[<div><img src="http://www.bittrack.it/wp-content/uploads/2009/10/contact-form.png" class="attachment-post-thumbnail wp-post-image" alt="contact-form" title="contact-form" /></div>Con questo tutorial ti spiegherò come realizzare un form, da usare nella tua pagina contatti, per l&#8217;invio di email tramite ajax (quindi senza bisogno di ricaricare la pagina) con tanto di validazione dei dati inseriti. Caratteristiche Ogni campo ha dei dati predefiniti che vengono cancellati quando questo ottiene il “focus” Se l’utente non inserisce dei [...]]]></description>
			<content:encoded><![CDATA[<div><img src="http://www.bittrack.it/wp-content/uploads/2009/10/contact-form.png" class="attachment-post-thumbnail wp-post-image" alt="contact-form" title="contact-form" /></div><p>Con questo tutorial ti spiegherò come realizzare un form, da usare nella tua pagina contatti, per l&#8217;invio di email tramite ajax (quindi senza bisogno di ricaricare la pagina) con tanto di validazione dei dati inseriti.<span id="more-668"></span></p>
<h2>Caratteristiche</h2>
<ol>
<li>Ogni campo ha dei dati predefiniti che vengono cancellati quando questo ottiene il “focus”</li>
<li>Se l’utente non inserisce dei dati obbligatori o un indirizzo email valido, lo script notifica l’errore evidenziando in rosso i campi errati.</li>
<li>L’email viene inviata tramite ajax e restituisce un messaggio di notifica al termine dell’operazione</li>
<li>L&#8217;invio dell&#8217;email deve poter funzionare anche con javascript disabilitati.</li>
</ol>
<p>Per avere un idea più chiara di ciò che andremo a creare, ecco una demo funzionante del “prodotto finito”.</p>
<p style="text-align: center;"><a class="demo" href="http://www.bittrack.it/demo/ajax-contact-form/index.html" target="blank">LINK DEMO</a></p>
<h2>Preparazione</h2>
<p>Per iniziare avrai bisogno di una pagina html “di base”.</p>
<pre class="brush: xml;">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;it-IT&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;/&gt;

		&lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;/&gt;

		&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js&quot; &gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;contatti.js&quot;&gt;&lt;/script&gt;

		&lt;title&gt;Contatti&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;

	&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Notare l&#8217;inclusione della <strong>libreria jquery</strong> (direttamente dai server Google <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> ), di uno <strong>style.css</strong> e del <strong>contatti.js</strong> che sarà lo script con cui lavoreremo maggiormente.</p>
<h2>Aggiunta del contenuto</h2>
<p>Per adesso non abbiamo scritto nulla, perciò prosegui con l&#8217;inserimento di un po&#8217; di contenuto. I campi nome, e-mail, testo sono indispensabili e perchè no, anche un campo non obbligatorio per aggiungere un eventuale proprio sito web, oltre che ovviamente il pulsante di invio; il tutto incluso nel canonico <strong>&lt;form&gt;</strong> che  punta ad un certo<strong> inviaemail.php</strong>.</p>
<pre class="brush: xml;">&lt;form method=&quot;post&quot; name=&quot;contatti&quot; id=&quot;contatti&quot; action=&quot;inviaemail.php&quot;&gt;
	&lt;div id=&quot;contact_area&quot;&gt;
		&lt;h2&gt;Contattaci direttamente via email&lt;/h2&gt;

		&lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;name&quot; class=&quot;form&quot; value=&quot;Nome*&quot; /&gt;

		&lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot; class=&quot;form&quot; value=&quot;e-Mail*&quot; /&gt;

		&lt;input type=&quot;text&quot; name=&quot;sito&quot; id=&quot;sito&quot; class=&quot;form&quot; value=&quot;Sito Web&quot; /&gt;

		&lt;textarea name=&quot;message&quot; id=&quot;testo&quot; class=&quot;form&quot; rows=&quot;12&quot; cols=&quot;&quot; &gt;Testo*&lt;/textarea&gt;

		&lt;div&gt;
			&lt;input type=&quot;submit&quot; name=&quot;submit&quot; id=&quot;invia&quot; value=&quot;Invia&quot;/&gt;
			&lt;img src=&quot;load.gif&quot; alt=&quot;load&quot; id=&quot;load_img&quot; /&gt;
			&lt;span id=&quot;result&quot;&gt;&lt;/span&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/form&gt;
</pre>
<p>Sono da segnalare gli <strong>ID</strong> che corrispondono esattamente ai <strong>name</strong> dei vari campi (questo ci tornerà molto utile per la gestione dai dati da php in caso di javascript disabilitati), la presenza di un immagine di caricamento accanto al pulsante e uno span con ID<strong> result</strong> al momento vuoto. La classe <strong>form</strong> come anche l&#8217;ID <strong>contact_area</strong> sono del tutto arbitrari, servono solo a facilitare il lavoro sul CSS.</p>
<h2>Un po&#8217; di stile CSS</h2>
<p>Se provi a visualizzare questa pagina nel browser il risultato non sarà certo dei migliori.</p>
<p><a href="http://www.bittrack.it/wp-content/uploads/2009/10/form-senza-stile.png"><img class="alignnone size-medium wp-image-689" title="form-senza-stile" src="http://www.bittrack.it/wp-content/uploads/2009/10/form-senza-stile-600x249.png" alt="form-senza-stile" width="600" height="249" /></a></p>
<p>Senza perdere altro tempo aggiungi un po&#8217; di stile in un nuovo file CSS che dovrai chiamare <strong>style.css</strong> come indicato nell&#8217;head dell&#8217;HTML.</p>
<pre class="brush: css;">body {
	margin: 0;
	background: #ddd;
	color: #000;
}

h2 {
	font: bold 22px verdana;
	color: #333;
}

#contact_area  {
	width: 500px;
	margin: 0 auto;
}

.form {
	margin: 0 0 10px 0;
	width: 500px;
	font: normal 13px verdana;
	border: 1px solid #aaa;
	background: #eee;
	padding: 6px 10px;
	-moz-border-radius: 6px;
	-webkit-border-radius: 6px;
}

#invia {
	font: normal 16px verdana;
	border: 1px solid #aaa;
	background: #c9c9c9;
	padding: 2px 10px;
	margin: 0 10px 0 0;
	cursor: pointer;
	-moz-border-radius: 6px;
	-webkit-border-radius: 6px;
}

#load_img {
	display: none;
	line-height: 26px;
}

.error {
	border: 1px solid #ff5c5c
}

.fail {
	color: #F80000
}

.success {
	color: #009600
}</pre>
<p>Non ho alcuna intensione di soffermarmi sui vari accorgimenti usati nel CSS, ma devo far notare che abbiamo nascosto l&#8217;immagine di caricamento (linea 40) ed aggiunto le classi <strong>error</strong>, <strong>fail</strong>, <strong>success</strong> il cui scopo sarà più chiaro in seguito.</p>
<p><a href="http://www.bittrack.it/wp-content/uploads/2009/10/form-con-stile.png"><img class="alignnone size-medium wp-image-694" title="form-con-stile" src="http://www.bittrack.it/wp-content/uploads/2009/10/form-con-stile-600x431.png" alt="form-con-stile" width="600" height="431" /></a></p>
<p>Direi senza alcun dubbio che l&#8217;aspetto è migliorato <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .</p>
<h2>Aggiunta del motore (jquery)</h2>
<p>Ora che hai tutto pronto, entriamo nel vivo della programmazione<strong> jquery</strong>. Crea il file <strong>contatti.js</strong> e aggiungi queste prime linee di codice.</p>
<pre class="brush: jscript;">$().ready(function(){

	//variabili globali
	var name = $(&quot;#name&quot;);
	var nameText = $(name).val();
	var email = $(&quot;#email&quot;);
	var emailText = $(email).val();
	var sito = $(&quot;#sito&quot;);
	var sitoText = $(sito).val();
	var message = $(&quot;#testo&quot;);
	var messageText = $(message).val();

});</pre>
<p>Per adesso abbiamo solo dichiarato alcune variabili globali che useremo da quì in avanti. In particolare, abbiamo assegnato una variabile ad ogni campo della pagina HTML e ne abbiamo salvato il contenuto in un&#8217;altra variabile.</p>
<p>Per esempio, il campo con ID <strong>name</strong>, sarà indicato d&#8217;ora in poi semplicemente con &#8220;<strong>name</strong>&#8221; ed il suo contenuto predefinito, quello che possiede nel momento in cui la pagina viene caricata  (in questo caso &#8220;<em>Nome*</em>&#8220;), verrà memorizzato nella variabile <strong>nameText</strong>.</p>
<h2>Gestione dei valori di default nei singoli campi</h2>
<p>Per far sì che i valori dei campi si azzerino quando ricevono il focus e tornino come predefiniti se non viene inserito alcun dato, aggiungi queste semplici funzioni.</p>
<pre class="brush: jscript;">	//name
	name.focus(function(){
		if($(this).val() == nameText) $(this).val(&quot;&quot;);
	});
	name.blur(function(){
		if($(this).val() == &quot;&quot;) $(this).val(nameText);
	});
	//email
	email.focus(function(){
		if($(this).val() == emailText) $(this).val(&quot;&quot;);
	});
	email.blur(function(){
		if($(this).val() == &quot;&quot;) $(this).val(emailText);
	});
	//Sito web
	sito.focus(function(){
		if($(this).val() == sitoText) $(this).val(&quot;&quot;);
	});
	sito.blur(function(){
		if($(this).val() == &quot;&quot;) $(this).val(sitoText);
	});
	//message
	message.focus(function(){
		if($(this).val() == messageText) $(this).val(&quot;&quot;);
	});
	message.blur(function(){
		if($(this).val() == &quot;&quot;) $(this).val(messageText);
	});</pre>
<p>In tal modo, quando viene selezionato (<strong>.focus</strong>) un certo campo, la funzione ne azzera il contenuto se questo corrisponde a quello predefinito nell&#8217;HTML e quando il focus viene perso (<strong>.blur</strong>), se l&#8217;utente non ha aggiunto alcunchè, lasciando il campo vuoto, ne ripristina il valore predefinito.</p>
<h2>Validazione dei contenuti</h2>
<p>Per eseguire la validazione dei dati inseriti dall&#8217;utente, creeremo una funzione apposita per ogni campo che ne valuti la correttezza secondo criteri del tutto arbitrari. In questo caso, abbiamo imposto una lunghezza minima di nome utente e testo dell&#8217;email a 4 caratteri, mentre l&#8217;email dovrà rispettare la canonica forma <em>[qualcosa]@[qualcosa].[qualcosa]</em> .</p>
<pre class="brush: jscript;">function validateEmail(){
		var a = $(&quot;#email&quot;).val();
		var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
		if(filter.test(a)){
			$(&quot;#email&quot;).removeClass(&quot;error&quot;);
			return true;
		}
		else{
			$(&quot;#email&quot;).addClass(&quot;error&quot;);
			return false;
		}
	}
	function validateName(){
		if((name.val().length &lt; 4) || (name.val() == nameText)){
			name.addClass(&quot;error&quot;);
			return false;
		}
		else{
			name.removeClass(&quot;error&quot;);
			return true;
		}
	}
	function validateMessage(){
		if((message.val().length &lt; 4) || (message.val() == messageText)){
			message.addClass(&quot;error&quot;);
			return false;
		}
		else{
			message.removeClass(&quot;error&quot;);
			return true;
		}
	}	</pre>
<p>Per il controllo sulla lunghezza di un campo abbiamo usato la funzione <strong>.lenght</strong> che restituisce il numero di caratteri di una stringa; la validazione dell&#8217;email è invece un po&#8217; più complessa poiché fa uso di una regex confrontata alla stringa con la funzione <strong>.test()</strong>, quindi prendila pure per buona <img src='http://www.bittrack.it/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .</p>
<p>Un ulteriore controllo è stato eseguito sui campi testo e nome che non devono essere uguali a quelli preimpostati (linee 14 e 24), infatti, essendo &#8220;<em>Nome*</em>&#8221; e &#8220;<em>Testo*</em>&#8221; di per sé due stringhe più lunghe di 4 caratteri, verrebbe vanificata la validazione.</p>
<p>Notare inoltre, che ciascuna funzione restituisce <strong>false</strong> e aggiunge una classe <strong>error</strong> a quel campo, se la validazione ha avuto esito negativo; altrimenti, restituisce <strong>true</strong> e toglie la classe error (nel caso sia stata precedentemente applicata).</p>
<h2>Passaggio dei dati con Ajax</h2>
<p>Adesso non resta che inviare i dati al php tramite ajax.</p>
<pre class="brush: jscript;">	$(&quot;#contatti&quot;).submit(function(){
		if(!validateName() | !validateEmail() | !validateMessage()){
			return false;
		}
		else {
			//Invia email con ajax
		}
	});</pre>
<p>Prendiamo il click sul pulsante invia (o meglio il submit del form con id contatti) come evento da cui partire e quindi sottoporre i dati alla validazione.</p>
<pre class="brush: jscript;">       else {
			$('#load_img').fadeIn();
			$.ajax({
				type: 'post',
				url: 'inviaemail.php',
				data: 'name=' + name.val() + '&amp;email=' + email.val() + '&amp;site=' + sito.val() + '&amp;message=' + message.val(),

                                //.........

			}); // end ajax
			return false;
		}
</pre>
<p>Se la validazione viene superata: faccio apparire l&#8217;immagine di caricamento con un effetto fade in (linea 2) e poi, con <strong>metodo POST </strong>(linea 4), invio al file <strong>inviaemail.php</strong>, che si trova nella stessa cartella (linea 5), i dati contenuti all&#8217;interno dei vari campi, assegnando ad ognuno una variabile da far gestire al php (linea 6).</p>
<p>Prima di proseguire devi però sapere come è strutturato il  file <strong>inviaemail.php</strong>.</p>
<h2>Invio dell&#8217;email con PHP</h2>
<p>La parte php è piuttosto semplice.</p>
<pre class="brush: php;">
&lt;?php

	$mailTo = 'tuaemail@qualcosa.boh';

?&gt;</pre>
<p>Assegno alla variabile <strong>mailTo</strong> il mio indirizzo email dove voglio ricevere tutti i messaggi del contact form.</p>
<pre class="brush: php;">
	$name = htmlspecialchars($_POST['name']);
	$mailFrom = htmlspecialchars($_POST['email']);
	$siteurl = htmlspecialchars($_POST['site']);
	$message_text = htmlspecialchars($_POST['message']);
	$subject = 'Messaggio dal contact form';</pre>
<p>Prendo le variabili che mi ha precedentemente inviato ajax con metodo POST, le sottopongo alla funzione del php <strong>htmlspecialchars </strong>per correggere eventuali caratteri speciali e ne passo il contenuto in altrettante variabili php. Aggiungo anche un oggetto all&#8217;email, che mi faccia capire di cosa si tratta quando me la ritroverò nella casella di posta.</p>
<p><strong>Aggiornato. </strong>Perché l&#8217;email risulti leggibile, è bene far in modo che appaia nel formato HTML. Aggiungo dunque una variabile headers con queste informazioni.</p>
<pre class="brush: php;">	$headers = 'Content-type: text/html; charset=UTF-8' . &quot;\r\n&quot;;
	$headers .= 'From: '.$mailFrom;</pre>
<p>La presenza del parametro <strong>From</strong> inoltre, evita che l&#8217;email appaia nella casella spam di certi servizi webmail tipo GMail.</p>
<pre class="brush: php;">	$message =  &quot;&lt;html&gt;
					&lt;head&gt;
						&lt;title&gt; $subject &lt;/title&gt;
					&lt;/head&gt;
				&lt;body&gt;
					&lt;p&gt;----------------------------------------&lt;/p&gt;
					&lt;b&gt;Nome Utente:&lt;/b&gt; $name&lt;br /&gt;
					&lt;b&gt;e-Mail:&lt;/b&gt; $mailFrom&lt;br /&gt;
					&lt;b&gt;Sito:&lt;/b&gt; $siteurl&lt;br /&gt;
					&lt;b&gt;Testo della richiesta:&lt;/b&gt;&lt;br /&gt;
					&lt;p&gt;$message_text&lt;/p&gt;
					&lt;p&gt;----------------------------------------&lt;/p&gt;
				&lt;/body&gt;
				&lt;/html&gt;&quot;;</pre>
<p>Riunisco tutti i dati in un&#8217;ulteriore variabile <strong>message</strong>, in modo da comporre effettivamente il testo del messaggio di posta che riceverò. Notare la presenza di tutti i canonici tag HTML.</p>
<pre class="brush: php;">
	if (mail($mailTo, $subject, $message, $headers))
		echo &quot;email inviata!&quot;;
	else {
		echo &quot;Errore&quot;;
	}</pre>
<p>Con il comando <strong>mail()</strong> viene inviata effettivamente l&#8217;email e se non ci sono stati errori da parte del server in quest&#8217;ultima operazione, scrive il messaggio &#8220;<em>email inviata!</em>&#8220;; altrimenti scrive &#8220;<em>Errore</em>&#8220;.</p>
<h2>Completamento del codice ajax</h2>
<p>Adesso che sai cosa succede dal lato php, torniamo al nostro ajax.</p>
<pre class="brush: jscript;">
		else {
			$('#load_img').fadeIn();
			$.ajax({
				type: 'post',
				url: 'inviaemail.php',
				data: 'name=' + name.val() + '&amp;email=' + email.val() + '&amp;site=' + sito.val() + '&amp;message=' + message.val(),
				success: function(results) {
					$('#load_img').fadeOut(function() {
						if(results == &quot;email inviata!&quot;) {
							$('#result').html(&quot;&lt;span class='success'&gt;e-Mail inviata correttamente&lt;/span&gt;&quot;);
							$(name).val(nameText);
							$(email).val(emailText);
							$(sito).val(sitoText);
							$(message).val(messageText);
						}
						else
							$('#result').html(&quot;&lt;span class='fail'&gt;Errore&lt;/span&gt;&quot;)
					});
				}
			}); // end ajax
			return false;
		}
</pre>
<p>Dopo l&#8217;invio dei dati al php alla riga 6, siamo pronti a ricevere il risultato dell&#8217;operazione e salvarlo in una variabile qualsiasi che abbiamo chiamato result.</p>
<p>Nascondiamo l&#8217;immagine di caricamento (linea 8 ) e se il risultato del php corrisponde a ciò che avevamo scritto col comando echo, significa che l&#8217;email è stata inviata e possiamo dunque scrivere sulla pagina HTML (dentro a quell&#8217;inutilizzato span con id results) una notifica di operazione completata con successo; dato che l&#8217;email è stata inviata, possiamo anche riazzerare i campi ai valori predefiniti.<br />
Se c&#8217;è stato un problema sul php, mostreremo invece un messaggio di errore.</p>
<h2>Con i javascript disabilitati?</h2>
<p>Nel caso si tenti di inviare un email con i javascript disabilitati, non ci sarà alcun tipo di controllo sulla validazione dei dati, ma l&#8217;email verrà comunque inviata, poiché le variabili che abbiamo preso con metodo POST nel php corrispondono esattamente ai parametri <strong>name=&#8221;"</strong> assegnati  nell&#8217;HTML  ai vari campi.</p>
<p>Inviando l&#8217;email senza javascript, vieni rimandato alla pagina inviaemail.php contenente la sola scritta &#8220;<em>email inviata!</em>&#8221; oppure &#8220;<em>Errore</em>&#8221; nel caso si siano verificati o no errori sul php.</p>
<h2>Conclusioni</h2>
<p>Sperando che ti sia stato di aiuto, ti lascio i link per la demo ed il download del pacchetto completo.</p>
<p>Per qualsiasi tipo di osservazione o critica, un commento è sempre bene accetto!</p>
<p style="text-align: center;"><a class="demo" href="http://www.bittrack.it/demo/ajax-contact-form/index.html" target="blank">LINK DEMO</a> <a class="down" href="http://www.bittrack.it/download/ajax-contact-form.zip">link download</a></p>


<p>Articoli correlati:<ol><li><a href='http://www.bittrack.it/archives/creare-un-anteprima-dinamica-dei-commenti/' rel='bookmark' title='Permanent Link: Creare un anteprima dinamica dei commenti'>Creare un anteprima dinamica dei commenti</a></li>
<li><a href='http://www.bittrack.it/archives/primi-passi-con-jquery-%e2%80%93-3/' rel='bookmark' title='Permanent Link: Primi passi con jQuery – 3'>Primi passi con jQuery – 3</a></li>
<li><a href='http://www.bittrack.it/archives/primi-passi-con-jquery-2/' rel='bookmark' title='Permanent Link: Primi passi con jQuery &#8211; 2'>Primi passi con jQuery &#8211; 2</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.bittrack.it/archives/creare-un-ajax-contact-form-con-validazione-dei-dati/feed/</wfw:commentRss>
		<slash:comments>62</slash:comments>
		</item>
		<item>
		<title>HTML SpecialChar Encoder</title>
		<link>http://www.bittrack.it/archives/html-specialchar-encoder/</link>
		<comments>http://www.bittrack.it/archives/html-specialchar-encoder/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 20:28:48 +0000</pubDate>
		<dc:creator>Raspo</dc:creator>
				<category><![CDATA[Project]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.bittrack.it/?p=303</guid>
		<description><![CDATA[<div><img src="http://www.bittrack.it/wp-content/uploads/2009/09/htmlchars.jpg" class="attachment-post-thumbnail wp-post-image" alt="htmlchars" title="htmlchars" /></div>Come primo nostro progetto, siamo lieti di presentare HTML SpecialChar Encoder. Si tratta di una &#8220;Web App&#8221; piuttosto semplice che Codifica e Decodifica tutti i caratteri HTML che gli vengono fatti processare. Che cosa significa? Quando inserite direttamente nell&#8217;HTML dei caratteri speciali tipo le parentesi angolari, vocali accentate e altri simboli particolari, succede che o [...]]]></description>
			<content:encoded><![CDATA[<div><img src="http://www.bittrack.it/wp-content/uploads/2009/09/htmlchars.jpg" class="attachment-post-thumbnail wp-post-image" alt="htmlchars" title="htmlchars" /></div><p>Come primo nostro progetto, siamo lieti di presentare <a href="http://www.bittrack.it/project/htmlchars/" target="_blank">HTML SpecialChar Encoder</a>.<br />
Si tratta di una &#8220;Web App&#8221; piuttosto semplice che Codifica e Decodifica tutti i caratteri HTML che gli vengono fatti processare.<span id="more-303"></span></p>
<h2><strong>Che cosa significa?</strong></h2>
<p>Quando inserite direttamente nell&#8217;HTML dei caratteri speciali tipo le parentesi angolari, vocali accentate e altri simboli particolari, succede che o non vengono visualizzati perchè interpretati dal browser come tag HTML, oppure al loro posto appaiono dei simboli, tipo dei punti interrogativi (variano da browser a browser), che stanno a indicare che il carattere non è stato riconosciuto.</p>
<h2>Come si usa</h2>
<p><span style="font-weight: normal; font-size: 13px; ">Tutto ciò che dovete fare è andare alla pagina <a href="http://www.bittrack.it/project/htmlchars/" target="_blank">http://www.bittrack.it/project/htmlchars/</a> immettere nell&#8217;area di testo ciò che volete codificare e premere &#8220;</span><span style="font-weight: normal; font-size: 13px; "><strong>Codifica</strong></span><span style="font-weight: normal; font-size: 13px; ">&#8220;.</span></p>
<p>Immediatamente riceverete il testo correttamente codificato e pronto per essere copiato.</p>
<p>Qui di seguito sono indicati degli esempi di input e il corrispettivo output generato da HTML SpecialChar Encoder:</p>
<p><code><strong>Input:</strong><br />
&lt;a href="http://www.bittrack.it"&gt; Home&lt;/a&gt;<br />
<strong>Output:</strong><br />
&amp;lt;a href=&amp;#34;http://www.bittrack.it&amp;#34;&amp;gt; Home&amp;lt;/a&amp;gt;</code></p>
<p><code><strong>Input:</strong><br />
&amp; à è ì ò ù &lt; &gt;<br />
<strong>Output:</strong><br />
&amp;amp; &amp;agrave; &amp;egrave; &amp;igrave; &amp;ograve; &amp;ugrave; &amp;lt; &amp;gt;</code></p>
<p>Anche se più raramente, può capitare di aver bisogno dell&#8217;operazione inversa, per questo è stata  implementata l&#8217;opzione <strong>Decodifica</strong> che esegue esattamente il processo inverso.</p>
<p>Se trovate che sia un&#8217;applicazione utile, perché non aggiungerla tra i preferiti?!</p>
<p>In ogni caso ci aspettiamo un vostro feedback nei <a href="#respond">commenti</a>!</p>
<h2>Note tecniche</h2>
<p>L&#8217;applicazione usa ajax per richiamare uno script php, perciò non può funzionare con i javascript disabilitati.</p>
<h2>Changelog</h2>
<p>05/10/09 Resa pubblica la versione 1.0</p>


<p>Articoli correlati:<ol><li><a href='http://www.bittrack.it/archives/creare-un-ajax-contact-form-con-validazione-dei-dati/' rel='bookmark' title='Permanent Link: Creare un ajax contact form con validazione dei dati'>Creare un ajax contact form con validazione dei dati</a></li>
<li><a href='http://www.bittrack.it/archives/creare-un-anteprima-dinamica-dei-commenti/' rel='bookmark' title='Permanent Link: Creare un anteprima dinamica dei commenti'>Creare un anteprima dinamica dei commenti</a></li>
<li><a href='http://www.bittrack.it/archives/primi-passi-con-jquery-%e2%80%93-3/' rel='bookmark' title='Permanent Link: Primi passi con jQuery – 3'>Primi passi con jQuery – 3</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.bittrack.it/archives/html-specialchar-encoder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
