<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Gianni Leggio Blog</title>
    <link/>
    <description>Articoli, appunti, esperimenti di sviluppo per il web. PHP, Apache, Linux, jQuery, XML</description>
    <language>it-IT</language>
    <item>
      <title>Login di una applicazione Facebook</title>
      <link>login-facebook?utm_source=feedburner&amp;utm_medium=rss&amp;utm_campaign=feed_rss</link>
      <description>
        <p>
	Oggi ti spiego come realizzare un pulsante di login per la tua applicazione facebook.</p>
        <p>
	Come prima cosa devi aprire un'<strong>applicazione facebook</strong> dal <a href="https://www.facebook.com/developers/" target="_blank">centro sviluppatori facebook</a> e settare tutti i parametri necessari. Ai fini del mio esempio basta settare l'indirizzo del sito e il canvas url.</p>
        <p>
	A questo punto hai ottenuto un Application ID che ci servirà per far riconoscere la nostra applicazione al sistema.</p>
        <p>
	 </p>
        <p>
	Ecco il codice minimale per una pagina di login</p>
        <p>
	&lt;?php<br/>
	    header('P3P: CP="CAO PSA OUR"');<br/>
	    ?&gt;<br/>
	&lt;h1&gt;Test login facebook&lt;/h1&gt;<br/>
	&lt;fb:login-button show-faces="true" perms="email,user_birthday,offline_access,publish_stream"&gt;&lt;/fb:login-button&gt;<br/>
	&lt;div id="fb-root"&gt;&lt;/div&gt;<br/>
	&lt;script src="http://connect.facebook.net/it_IT/all.js" type="text/javascript"&gt;&lt;/script&gt;<br/>
	&lt;script type="text/javascript"&gt;<br/>
	    FB.init({appId: '*************', xfbml: true, status: true, cookie: true});<br/>
	    FB.XFBML.parse();<br/>
	    FB.Event.subscribe('auth.login', function(response) {<br/>
	        window.location.reload();<br/>
	      });<br/>
	&lt;/script&gt;</p>
        <p>
	Vado a commentarlo un pezzo per volta.</p>
        <p>
	Per evitare casini con le impostazioni di privacy di internet explorer, che ci impediscono di aprire delle sessioni per problemi con i cookies e i frames, per prima cosa invio un header P3P:</p>
        <p>
	header('P3P: CP="CAO PSA OUR"');</p>
        <p>
	In seguito metto il codice <strong>xfbml </strong>per renderizzare un <strong>bottone di login</strong> facebook</p>
        <p>
	&lt;fb:login-button show-faces="true" perms="email,user_birthday,offline_access,publish_stream"&gt;&lt;/fb:login-button&gt;</p>
        <p>
	Ci sono diversi parametri da settare, come puoi vedere nella pagina ufficiale dedicata al <a href="https://developers.facebook.com/docs/reference/plugins/login/" target="_blank">Login Button</a>, io ho solo utilizzato lo show-faces per mostare gli amici che utilizzano la mia applicazione e il perms, che serve per settare i permessi da chiedere all'utente, ma ce ne sono degli altri.</p>
        <p>
	<img alt="facebook login" src="http://images.giannileggio.com/facebook_login.png" style="width: 500px; height: 418px;"/></p>
        <p>
	Poi viene il &lt;div id="fb-root"&gt;&lt;/div&gt; che serve al javascript sdk di facebook per caricarsi correttamente all'interno della nostra pagina.</p>
        <p>
	Infine tutto il blocco javascript che prima carica il <a href="https://developers.facebook.com/docs/reference/javascript/" target="_blank">Javascript SDK di facebook</a>, poi inizializza l'oggetto FB con FB.init, al posto degli asterischi devi mettere il tuo ID Applicazione.</p>
        <p>
	FB.XFBML.parse() mi serve per parserizzare tutti i codici xfbml e renderizzarne il contenuto.</p>
        <p>
	Le ultime righe mi sono utili per monitorare l'evento login ed effettuare il reload della pagina nel caso in cui l'utente si logga. Questo mi è utile ad esempio per mostrare del contenuto diverso all'utente loggato.</p>
        <p>
	E' tutto qui, il nostro facebook login è completo, ciao!</p>
      </description>
      <pubDate>Sun, 05 Jun 2011 11:51:00 +0200</pubDate>
      <author/>
    </item>
    <item>
      <title>Bottone Google Plus One</title>
      <link>google-plusone?utm_source=feedburner&amp;utm_medium=rss&amp;utm_campaign=feed_rss</link>
      <description>
        <p>
	<img alt="plusone" src="http://images.giannileggio.com/plusone.png" style="margin-left: 10px; margin-right: 10px; margin-top: 10px; margin-bottom: 10px; float: left; width: 64px; height: 54px; "/></p>
        <p>
	Oggi Google ha rilasciato il tanto atteso 1 button, la risposta del motorone ai pulsanti <a href="http://developers.facebook.com/docs/reference/plugins/like/" target="_blank">Like di Facebook</a> e il <a href="http://twitter.com/about/resources/tweetbutton" target="_blank">Tweet di Twitter</a>.</p>
        <p>
	Le istruzioni per l'implementazione sono semplici e sono riportate nella pagina dedicata <a href="http://www.google.com/webmasters/ 1/button/" target="_blank">http://www.google.com/webmasters/ 1/button/</a></p>
        <p>
	Basta richiamare il codice js di google, indicando la lingua preferita</p>
        <div>
	&lt;script type="text/javascript" src="http://apis.google.com/js/plusone.js"&gt;</div>
        <div>
	  {lang: 'it'}</div>
        <div>
	&lt;/script&gt;</div>
        <div>
	 </div>
        <div>
	E poi mettere il tag del pulsante</div>
        <div>
	&lt;g:plusone&gt;&lt;/g:plusone&gt;</div>
        <div>
	nel punto in cui vogliamo venga renderizzato.</div>
        <div>
	 </div>
        <div>
	Segnalo questo articolo in cui si spiega come tracciare i <a href="http://yoast.com/plus-one-google-analytics/" target="_blank">click sul pulsante 1 di google</a></div>
        <div>
	 </div>
        <div>
	Io al momento ho scelto di tenere i 3 pulsanti sui miei blog, vediamo un pò che succede.</div>
        <div>
	 </div>
        <div>
	 </div>
      </description>
      <pubDate>Wed, 01 Jun 2011 22:50:00 +0200</pubDate>
      <author/>
    </item>
    <item>
      <title>Coordinate di un Luogo tramite le Google API</title>
      <link>coordinate-google-api?utm_source=feedburner&amp;utm_medium=rss&amp;utm_campaign=feed_rss</link>
      <description>
        <p>
	<img alt="Citt&#xE0; di Ragusa" src="http://images.giannileggio.com/ragusa.jpg" style="margin-left: 10px; margin-right: 10px; margin-top: 10px; margin-bottom: 10px; float: left; width: 500px; height: 288px; "/></p>
        <p>
	Utilizzando le API messe a disposizione da Google vedrai che è molto semplice reperire delle informazioni riguardo un luogo.</p>
        <p>
	In questo articolo spiego come fare con un semplice esempio, ottenendo la <strong>latitudine</strong> e la <strong>longitudine</strong> di un indirizzo.</p>
        <p>
	Per un programmatore php è un gioco di poche righe raggiungere questo obiettivo.</p>
        <p>
	 </p>
        <p>
	 </p>
        <p>
	 </p>
        <p>
	 </p>
        <p>
	Innanzitutto ti è necessario avere una API Key per Google Maps, la puoi ottenere facilmente a questo indirizzo: <a href="http://code.google.com/apis/maps/signup.html" target="_blank">http://code.google.com/apis/maps/signup.html</a></p>
        <p>
	In verità la api key non è indispensabile, ma noi siamo dei bravi nerd e facciamo le cose per bene :D</p>
        <p>
	Adesso passo a realizzare una semplice funzione, che accetta come paramentri un indirizzo e una google maps key, compone il giusto url, chiede i dati a google e restituisce la posizione del luogo desiderato, sotto forma di latitudine e longitudine.</p>
        <div>
	<span style="color:#696969;"><em>function getGmapPosition( $address, $key ){</em></span></div>
        <div>
	<span style="color:#696969;"><em>   $url = "http://maps.google.com/maps/geo?q=" . urlencode($address) . "&amp;output=json&amp;oe=utf8&amp;key=$key";</em></span></div>
        <div>
	<span style="color:#696969;"><em>  if( $json = file_get_contents( $url )) {</em></span></div>
        <div>
	<span style="color:#696969;"><em>      $json = json_decode($json);</em></span></div>
        <div>
	<span style="color:#696969;"><em>      if ( is_object ( $json ) &amp;&amp; is_object( $json-&gt;Placemark[0] ) ) {</em></span></div>
        <div>
	<span style="color:#696969;"><em>          return ($json-&gt;Placemark[0]-&gt;Point-&gt;coordinates);</em></span></div>
        <div>
	<span style="color:#696969;"><em>        }<span class="Apple-tab-span" style="white-space:pre"> </span></em></span></div>
        <div>
	<span style="color:#696969;"><em>     }</em></span></div>
        <div>
	<span style="color:#696969;"><em>  return false;<span class="Apple-tab-span" style="white-space:pre"> </span></em></span></div>
        <div>
	<span style="color:#696969;"><em>}</em></span></div>
        <div>
	 </div>
        <div>
	Alla prima riga di codice la funzione compone l'url, facendo l'encode dell'indirizzo passato e aggiungendo la chiave. Come output ho impostato <strong>json</strong>, ma è possibile ottenere i dati in formato <strong>xml</strong>. Ecco la <a href="http://code.google.com/apis/maps/documentation/geocoding/" target="_blank">documentazione sul geocoding di google</a>.</div>
        <div>
	 </div>
        <div>
	Alla seconda riga ottengo il documento e lo carico in una variabile, In seguito, grazie a <a href="http://it.php.net/manual/en/function.json-decode.php" target="_blank">json_decode</a>, ottengo l'oggetto json che poi posso leggere per ottenere i dati di mio interesse.</div>
        <div>
	Come puoi facilmente notare, ci sono due return, il primo in caso di successo mi restituisce un array di due valori (latitudine e longitudine), il secondo restituisce false in caso di fallimento.</div>
        <div>
	 </div>
        <div>
	All'interno di uno script posso richiamare la funzione in questo modo:</div>
        <div>
	<span style="color:#696969;"><em>list( $longitude , $latitude) = getGmapPosition($address, $key); </em></span></div>
        <div>
	dopo aver valorizzato la variabile $address con l'indirizzo di mio interesse (meglio se completo, costituito da via, numero civico, cap e città) e la variabile $key con la mia api key.</div>
        <div>
	 </div>
        <div>
	Il json (o xml) ottenuto contiene altre informazioni utili, che puoi sfruttare con un pò di fantasia nella tua applicazione, anche in base alle esigenze. </div>
        <div>
	Ecco un esempio di json che si ottiene:  <a href="http://maps.google.com/maps/geo?q=corso%20italia%2097100%20ragusa&amp;output=json&amp;oe=utf8" target="_blank">http://maps.google.com/maps/geo?q=corso%20italia%2097100%20ragusa&amp;output=json&amp;oe=utf8</a></div>
        <div>
	 </div>
        <div>
	oppure in versione xml : <a href="http://maps.google.com/maps/geo?q=corso%20italia%2097100%20ragusa&amp;output=xml&amp;oe=utf8" target="_blank">http://maps.google.com/maps/geo?q=corso%20italia%2097100%20ragusa&amp;output=xml&amp;oe=utf8</a></div>
        <meta content="text/html; charset=utf-8" http-equiv="content-type"/>
        <meta content="text/html; charset=utf-8" http-equiv="content-type"/>
        <div>
	 </div>
        <div>
	Se vuoi utilizzare i dati in formato xml puoi trovare delle informazioni utili in questo articolo che ho scritto sul blog, in cui parlo di <a href="http://giannileggio.com/xml-php">gestione dati xml in php</a>.</div>
        <div>
	 </div>
        <div>
	E tu hai idee al riguardo? Utilizzi fantasiosi delle API di googla maps?</div>
        <meta content="text/html; charset=utf-8" http-equiv="content-type"/>
      </description>
      <pubDate>Sat, 16 Apr 2011 16:22:00 +0200</pubDate>
      <author/>
    </item>
    <item>
      <title>Validazione di un prefisso telefonico</title>
      <link>prefisso-telefono?utm_source=feedburner&amp;utm_medium=rss&amp;utm_campaign=feed_rss</link>
      <description>
        <p>
	<img alt="Ragazza al telefono" src="http://images.giannileggio.com/ragazza_telefono.jpg" style="width: 300px; height: 200px; float: left; margin: 10px;"/></p>
        <p>
	 </p>
        <p>
	Oggi mi è capitato di dover validare il prefisso telefonico in un form validato con il <a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/" target="_blank">plugin validation di jquery</a>.</p>
        <p>
	Suppongo che sai validare un form con <strong>jquery</strong>, in caso contrario corri a studiare! Ci sono tante risorse in rete, come ad esempio questo <a href="http://howto.big-bug.net/art/Javascript/Validare-un-Form-Con-jQuery-e-Javascript/45/" target="_blank">articolo sulla validazione</a> ma su google trovi una marea di risorse al riguardo.</p>
        <p>
	Ho creato un metodo apposito, utilizzando addMethod e l'ho chiamato "phone_prefix".</p>
        <p>
	 </p>
        <p>
	 </p>
        <p>
	 </p>
        <p>
	Ecco il codice:</p>
        <p>
	$.validator.addMethod('phone_prefix', function(value, element) {<br/>
	        var prefix = value.substring(0,3);<br/>
	        var prefissi = new Array('330', '331', '333', '334', '335', '336', '337', '338', '339', '360', '363', '366',<br/>
	                        '368', '340', '342', '343', '345', '346', '347', '348', '349', '320', '323', '327', '328',<br/>
	                        '329', '380', '383', '388', '389', '390', '391', '392', '393', '313', '377', '373', '370');<br/>
	        if ( $.inArray(prefix, prefissi) == -1){<br/>
	            return false;<br/>
	        } else {<br/>
	            return true;<br/>
	        }<br/>
	    }, 'Hai inserito un prefisso telefonico non valido');</p>
        <p>
	 </p>
        <p>
	Alla prima riga della funzione estraggo la parte che contiene il prefisso (le prime 3 cifre, supponendo che non mi interessa il prefisso internazionale) var prefix = value.substring(0,3);</p>
        <p>
	Poi creo l'array dei prefissi permessi, che posso facilmente modificare ed ampliare nel tempo.</p>
        <p>
	Infine, faccio un return dell'esito del controllo. Ho utilizzato la funzione <a href="http://api.jquery.com/jQuery.inArray/" target="_blank">inArray() di jquery</a> in modo da semplicare al massimo il controllo stesso.</p>
        <p>
	Semplice e veloce, naturalmente è uno script minimale molto migliorabile e ampliabile ma già ci permette di prendere confidenza con addMethod nella <strong>validazione dei campi di un form</strong>.</p>
        <p>
	<br/>
	Immagine by <a href="http://www.flickr.com/photos/reegone/" target="_blank">http://www.flickr.com/photos/reegone/</a></p>
        <p>
	Licenza <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/deed.it" target="_blank">http://creativecommons.org/licenses/by-nc-sa/2.0/deed.it</a></p>
        <p>
	 </p>
      </description>
      <pubDate>Tue, 29 Mar 2011 17:58:00 +0200</pubDate>
      <author/>
    </item>
    <item>
      <title>Contenuti riservati per i fan su facebook</title>
      <link>like-iframe?utm_source=feedburner&amp;utm_medium=rss&amp;utm_campaign=feed_rss</link>
      <description>
        <p>
	Vediamo un semplice codice per verificare il "Mi Piace" su una <strong>pagina facebook</strong>, sfruttando i nuovi <strong>Tab IFrame</strong>.</p>
        <p>
	In questo modo potremo visualizzare dei contenuti riservati ai soli fan della pagina</p>
        <p>
	<img alt="Mi piace" src="http://images.giannileggio.com/mipiace.png" style="width: 82px; height: 23px;"/></p>
      </description>
      <pubDate>Wed, 23 Feb 2011 18:46:00 +0100</pubDate>
      <author/>
    </item>
  </channel>
</rss>
