<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2571831738557073183</id><updated>2011-12-29T18:50:26.130+01:00</updated><category term='espacio'/><category term='juegos'/><category term='mootools'/><category term='creación web'/><category term='portfolio'/><category term='css'/><category term='javascript'/><category term='web 2.0'/><category term='web'/><category term='php'/><category term='ajax'/><category term='contacto'/><category term='proyecto'/><category term='bbva'/><category term='xhtml'/><category term='pasarela de pago'/><category term='sobre mi'/><category term='json'/><category term='tpv'/><category term='safari'/><title type='text'>SicilianGirl</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-5686085481870959400</id><published>2010-02-20T15:39:00.002+01:00</published><updated>2010-02-20T16:04:15.688+01:00</updated><title type='text'>modalbox para mootools</title><content type='html'>&lt;span style="font-weight:bold;"&gt;ModalBox para Mootools 1.2.x:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;e-moodalbox&lt;/span&gt; es una clase que podemos extender gracias a Mootools.&lt;br /&gt;Con ella podemos crear clases heredadas creando no solo las típica galería, sino también, formularios, etc.&lt;br /&gt;&lt;br /&gt;e-moodalbox usa javascript no intrusivo y es totalmente accesible, a demás, solo ocupa 2,69 KB (yui compressor).&lt;br /&gt;Es compatible con los navegadores Internet Explorer 6+, Firefox 2+, Safari 3+, Opera 9.5+, Chrome 1.0+ y seguramente otros más que no han sido probados.&lt;br /&gt;&lt;br /&gt;La ventaja de e-moodalbox es su flexibilidad, y con un mínimo conocimiento de javascript, podemos crear la cantidad de clases heredadas que queramos.&lt;br /&gt;Tengo pensado realizar clases heredadas genéricas que añadan funcionalidades, mientras tanto  os dejo el link con ejemplos, howto y la descarga de la última versión:&lt;br /&gt;&lt;a href="http://code.google.com/p/e-moodalbox/"&gt;modalbox para mootools&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-5686085481870959400?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/5686085481870959400/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=5686085481870959400' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/5686085481870959400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/5686085481870959400'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2010/02/modalbox-para-mootools.html' title='modalbox para mootools'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-4222229948548603625</id><published>2009-03-17T09:50:00.005+01:00</published><updated>2009-03-17T10:04:24.436+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='portfolio'/><title type='text'>Restaurante Loidi</title><content type='html'>&lt;div class="portfolio"&gt;&lt;br /&gt;&lt;img src="http://www.gruasorion.com/sg/images/portfolio/restaurante-loidi.jpg" title="restaurante loidi" alt="restaurante loidi" /&gt;&lt;b&gt;Cliente: &lt;/b&gt;Hotel Condes de Barcelona&lt;br /&gt;&lt;b&gt;Web: &lt;/b&gt;&lt;a href="http://www.loidi.com/" title="restaurante loidi"&gt;Restaurante Loidi&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Diseño web: &lt;/b&gt;Ricard Catalan Diaz&lt;br /&gt;&lt;b&gt;Maquetación: &lt;/b&gt;Xhtml 1.1, CSS 2.1&lt;br /&gt;&lt;b&gt;Programación: &lt;/b&gt;Javascript, mootools 1.2 y PHP5&lt;br /&gt;&lt;b&gt;Servicios web: &lt;/b&gt;No&lt;br /&gt;&lt;b&gt;Posicionamiento: &lt;/b&gt;Si&lt;br /&gt;&lt;b&gt;CMS: &lt;/b&gt;Si&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-4222229948548603625?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/4222229948548603625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/4222229948548603625'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2009/03/restaurante-loidi.html' title='Restaurante Loidi'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-5468435091366359220</id><published>2009-02-19T16:31:00.002+01:00</published><updated>2009-02-19T16:58:53.607+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><title type='text'>Crear elementos con mootools segunda parte</title><content type='html'>Este es el segundo artículo de &lt;em&gt;Como crear elementos con mootools&lt;/em&gt;, el primero podéis acceder &lt;a href="http://siciliangirl.blogspot.com/2008/12/crear-elementos-con-mootools-primera.html" tite="Crear elementos con mootools primera parte"&gt;aquí&lt;/a&gt;.&lt;br /&gt;En el primer artículo ya vimos como crear un elemento sencillo como puede ser un tag &lt;b&gt;A&lt;/b&gt;, &lt;b&gt;DIV&lt;/b&gt;, &lt;b&gt;IMG&lt;/b&gt;, etc. hasta uno algo más complejo como &lt;b&gt;SELECT&lt;/b&gt; por el cual necesitábamos de un bucle para recorrerlo.&lt;br /&gt;En este artículo explicaré un poco los métodos que hay y que podemos hacer con ellos.&lt;br/&gt;&lt;br /&gt;Los métodos para insertar un elemento son los siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;- injectBefore&lt;/em&gt;: Inserta el elemento antes del indicado en el parámetro&lt;/li&gt;&lt;li&gt;&lt;em&gt;- injectAfter&lt;/em&gt;: Inserta el elemento después del indicado&lt;/li&gt;&lt;li&gt;&lt;em&gt;- injectTop&lt;/em&gt;: Insertamos arriba del elemento que indiquemos&lt;/li&gt;&lt;li&gt;&lt;em&gt;- injectInside&lt;/em&gt;: Insertamos al final del elemento indicado&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;miElemento = new Element('div', { 'id': 'miElemento', 'html': 'Al insertar con injectInside, se colocará al final' });&lt;br /&gt;miElemento.injectInside($('elementoDestino')); //Inserta miElemento al final del elementoDestino&lt;/pre&gt;&lt;br /&gt;Esto en &lt;b&gt;HTML&lt;/b&gt; se podría traducir de la siguiente manera:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;miElemento&lt;/em&gt; es una etiqueta DIV con texto dentro, etc.&lt;/li&gt;&lt;li&gt;&lt;em&gt;elementoDestino&lt;/em&gt; es otro div que contiene otros div y estiquetas&lt;/li&gt;&lt;li&gt;Después de ejecutar el &lt;em&gt;JavaScript&lt;/em&gt;, quedaría asi:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;div id="elementoDestino"&amp;gt;&lt;br /&gt;  &amp;lt;p&amp;gt;1er parágrafo&amp;lt;/p&amp;gt;&lt;br /&gt;  &amp;lt;p&amp;gt;2on parágrafo&amp;lt;/p&amp;gt;&lt;br /&gt;  &amp;lt;div class="miClase"&amp;gt;1er layer&amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div id="miElemento"&amp;gt;Al insertar con injectInside, se colocará al final&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;br /&gt;Antes de la ejecución del JavaScript, no teníamos ese div, y ahora gracias al DOM, hemos insertado un DIV dentro de otro al final del mismo.&lt;br/&gt;&lt;br /&gt;Métodos para la entrada y salida &lt;i&gt;(getters y setters)&lt;/i&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;- get(string)&lt;/em&gt;: Recibimos el valor del atributo que pasamos por parámetro, ejemplo: &lt;em&gt;$('miElemento').get('id')&lt;/em&gt;, recibimos el nombre de su ID&lt;/li&gt;&lt;li&gt;&lt;em&gt;- set(string, value)&lt;/em&gt;: Insertamos un valor al atributo que le pasamos, ejemplo: &lt;em&gt;$('miElemento').set('id', 'otroElemento')&lt;/em&gt;, con eso cambiamos el valor de la ID&lt;/li&gt;&lt;li&gt;&lt;em&gt;- getPoperty(string)&lt;/em&gt;: Es un alias de get por lo que puede hacer prácticamente lo mismo  / Podemos recibir varios atributos a la vez de un elemento&lt;/li&gt;&lt;li&gt;&lt;em&gt;- setPoperty(string, value) / setPoperties&lt;/em&gt;: Es un alias de set / Podemos pasar varios atributos a la vez a un elemento&lt;/li&gt;&lt;li&gt;&lt;em&gt;- getNext, getFirst, getLast, getParent, etc.&lt;/em&gt;: Estos métodos y otros similares realizan mediante DOM una búsqueda sobre los elementos que hay antes, después, etc. del elemento que indiquemos. Supongamos que tenemos un elemento del tipo INPUT type="submit" y queremos acceder al elemento FORM, usaremos getParent('form').&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Varios ejemplos con la entrada y salida de atributos de un elemento:&lt;br /&gt;&lt;pre&gt;$('miElemento').set('html', 'Esto es &amp;lt;b&amp;gt;código HTML&amp;lt;/b&amp;gt; y se insertará dentro del "miElemento", pero &amp;lt;i&amp;gt;OJO&amp;lt;/i&amp;gt; si contenia algo, se perderá.');&lt;br /&gt;var temp = $('miElemento').getProperties('tag', 'id', 'html'); //Esto devolverá el TAG="div", la id="miElemento" y todo el contenido dentro de este DIV mediante HTML&lt;br /&gt;$('miElemento').setProperties({&lt;br /&gt; 'html': 'esto introducirá código HTML dentro de "miElemento" a demás de las siguientes propiedades',&lt;br /&gt; 'title': 'título para este DIV',&lt;br /&gt; 'class': 'miClase'&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;Aquí finalizo este artículo sobre &lt;em&gt;como crear elementos con mootools&lt;/em&gt;, en el próximo hablaré sobre eliminar contenido, borrar elementos y algunos ejemplos prácticos sobre los 3 artículos.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-5468435091366359220?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/5468435091366359220/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=5468435091366359220' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/5468435091366359220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/5468435091366359220'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2009/02/crear-elementos-con-mootools-segunda.html' title='Crear elementos con mootools segunda parte'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-5237047346983864855</id><published>2009-02-19T11:23:00.006+01:00</published><updated>2009-02-19T15:43:58.759+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><title type='text'>Usar Ajax con mootools y JSON</title><content type='html'>Lo prometido es deuda, y a continuación explicaré como realizar &lt;em&gt;consultas Ajax con mootools 1.2.x y JSON&lt;/em&gt;.&lt;br /&gt;He creado una clase llamada &lt;b&gt;moojson&lt;/b&gt; para realizar las peticiones al servidor con Request.JSON de hay un poco mi tardanza, pero ha valido la pena.&lt;br/&gt;&lt;br /&gt;Porqué Json? pues muy simple, Request.HTML solo recibimos texto formateado en código html, sin embargo con JSON recibimos un objeto, donde dentro hay propiedades, objetos, arrays, etc. Su gran dinamismo y el estar pensado para trabajar con javaScript, lo hace único y mejor que usar XML.&lt;br/&gt;&lt;br /&gt;&lt;b&gt;Un ejemplo que ilustra su sencillez:&lt;/b&gt; Si tenemos un objeto "coche" y una propiedad "color", solo con poner &lt;em&gt;coche.color&lt;/em&gt; tendremos el color. así de sencillo. En el caso de un array "caracteristicas" dentro de "coche", podremos acceder a su contenido con &lt;em&gt;coche.caracteristicas[0]&lt;/em&gt;. A continuación os pongo este ejemplo como sería en JSON:&lt;br /&gt;&lt;pre name="code" class="php"&gt;&lt;br /&gt;{ "coche": {&lt;br /&gt; "color": "rojo",&lt;br /&gt; "caracteristicas": ["AA","4 Airbags","5 puertas"]&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;La clase que he creado permite &lt;em&gt;realizar multiples consultas ajax&lt;/em&gt; dentro del mismo documento a diferentes documentos (PHP, ASP, .NET ...).&lt;br /&gt;Actualmente funciona solo con los tag &lt;b&gt;A&lt;/b&gt; (link) y &lt;b&gt;INPUT&lt;/b&gt; (del tipo BUTTON), cuando mejore la clase permitirá algunos más.&lt;br/&gt;&lt;br /&gt;Para realizar un &lt;b&gt;consulta ajax&lt;/b&gt; con un link, lo podemos realizar de la siguiente manera:&lt;br /&gt;&lt;pre name="code" class="php"&gt;&lt;br /&gt;&amp;lt;a class="moojson.tu_ID.true.false" href="#tudocumento.php"&amp;gt;tu_link&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El atributo &lt;b&gt;class&lt;/b&gt; es donde especificamos que queremos realizar una consulta, &lt;b&gt;moojson&lt;/b&gt; es el nombre por el que se identifica, y siempre deberá empezar así, &lt;b&gt;tu_ID&lt;/b&gt; indica a que ID queremos que aparezcan los resultados, es decir, si tenemos un DIV con "id=tu_ID" los resultados recibidos se mostrarán aquí. "TRUE" indica si queremos que se muestre el nombre de la propiedad, es decir, en el ejemplo anterior JSON, una propiedad es color, y su valor rojo, por defecto siempre mostraremos rojo, pero en algunos casos quizás nos interese que se muestre también el nombre de la propiedad. Para finalizar "FALSE" significa si queremos mostrar los resultados en DIV (false) o bien en TABLE (true).&lt;br/&gt; &lt;br /&gt;El atributo &lt;b&gt;href&lt;/b&gt; indica que documento realizará la &lt;em&gt;consulta ajax&lt;/em&gt;. Siempre se deberá poner &lt;b&gt;#&lt;/b&gt; delante.&lt;br /&gt;Con esto será suficiente, a continuación os pongo una imagen que muestra su funcionamiento:&lt;br&gt;&lt;br /&gt;&lt;img src="http://www.gruasorion.com/sg/images/moojson.gif" title="Usar Ajax con mootools y JSON" alt="Usar Ajax con mootools y JSON"/&gt;&lt;br/&gt;&lt;br /&gt;La &lt;em&gt;clase mooJson&lt;/em&gt; sigue los estándares de &lt;a href="http://www.w3c.org/"&gt;&lt;b&gt;W3C&lt;/b&gt;&lt;/a&gt; y es compatible con el &lt;em&gt;DOCTYPE&lt;/em&gt; XHTML 1.0 Strict / Transitional y XHTML 1.1&lt;br /&gt;A demás funciona con los navegadores Internet Explorer 6, 7 y 8, Firefox 2 y 3, Safari 2 y 3, Opera 9.5 y Chrome 1.0&lt;br/&gt;&lt;br /&gt;Para finalizar, solo deciros que la clase también permite recoger los datos del formulario y enviarlos, de esta manera, podremos realizar multiples combinaciones realizando consultas a la base de datos.&lt;br/&gt;&lt;br /&gt;Os dejo un link con el ejemplo y otro para descargar &lt;a href="http://siciliangirl.blogspot.com/2009/02/usar-ajax-con-mootools-y-json.html" title="Usar Ajax con mootools y JSON"&gt;&lt;b&gt;Usar Ajax con mootools y JSON&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="ejercicio"&gt;&lt;div class="ejemplo"&gt;&lt;a href="http://www.gruasorion.com/sg/ejemplos/moojson/" title="Usar Ajax con mootools y JSON"&gt;&lt;img src="http://www.gruasorion.com/sg/images/exercise-icon.gif" alt="Usar Ajax con mootools y JSON"/&gt;&lt;br/&gt;ejemplo&lt;/a&gt;&lt;/div&gt;&lt;div class="zip"&gt;&lt;a href="http://www.gruasorion.com/sg/ejemplos/moojson/moojson.zip" title="Usar Ajax con mootools y JSON"&gt;&lt;img src="http://www.gruasorion.com/sg/images/zip-icon.gif" alt="Usar Ajax con mootools y JSON"/&gt;&lt;br/&gt;descargar&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;NOTA:&lt;/b&gt; el ejemplo del formulario no funciona, pues el servidor donde esta alojado no tiene base de datos, pero si queréis os he puesto un &lt;em&gt;.sql&lt;/em&gt; con la tabla y los insert para hacer las pruebas.&lt;br /&gt;Cualquier duda de la clase, mejora, etc. agradecería que me informárais.&lt;br/&gt;Gracias y un saludo&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-5237047346983864855?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/5237047346983864855/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=5237047346983864855' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/5237047346983864855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/5237047346983864855'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2009/02/usar-ajax-con-mootools-y-json.html' title='Usar Ajax con mootools y JSON'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-8402751553326202700</id><published>2009-01-16T17:33:00.004+01:00</published><updated>2009-01-19T15:05:22.485+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='portfolio'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><title type='text'>Ibidem Group</title><content type='html'>&lt;div class="portfolio"&gt;&lt;br /&gt;&lt;img src="http://www.gruasorion.com/sg/images/portfolio/ibidem-group.jpg" title="Ibidem group" alt="Ibidem group" /&gt;&lt;b&gt;Cliente: &lt;/b&gt;Ibidem Group&lt;br /&gt;&lt;b&gt;Web: &lt;/b&gt;&lt;a href="http://www.ibidemgroup.es/" title="ibidem group"&gt;Ibidem Group&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Maquetación: &lt;/b&gt;Xhtml 1.1&lt;br /&gt;&lt;b&gt;Programación: &lt;/b&gt;Javascript, PHP, mootools 1.2&lt;br /&gt;&lt;b&gt;Servicios web: &lt;/b&gt;No&lt;br /&gt;&lt;b&gt;Posicionamiento: &lt;/b&gt;Si&lt;br /&gt;&lt;b&gt;Nota: &lt;/b&gt;Creación del formulario de presupuesto con javascript, mootools y PHP5&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-8402751553326202700?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/8402751553326202700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/8402751553326202700'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2009/01/cliente-ibidem-group-web-ibidem-group.html' title='Ibidem Group'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-9009870206005802828</id><published>2008-12-22T16:18:00.008+01:00</published><updated>2008-12-22T17:12:19.456+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><title type='text'>Crear elementos con mootools primera parte</title><content type='html'>Una de las grandes ventajas de cualquier framework de javascript es poder acceder con gran facilidad al DOM. Con esto quiero decir, poder recorrer y acceder a cualquier contenido de un documento html / xhtml.&lt;br&gt;&lt;br /&gt;En esta primera parte, quiero poner algunos ejemplos sencillo de como se usa y un explicacion de los mismo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;this.link = new Element('a',{&lt;br&gt; 'href': 'http://siciliangirl.blogspot.com',&lt;br&gt; 'title': 'Un blog sobre web 2.0, xhtml, css, javascript',&lt;br&gt; 'html': 'siciliangirl blog'&lt;br&gt;});&lt;br /&gt;this.link = new Element('img',{&lt;br&gt; 'src': 'http://siciliangirl.blogspot.com/images/mi_image.jpg',&lt;br&gt; 'alt': 'titulo de mi imagen'&lt;br&gt;})&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con &lt;em&gt;new Element&lt;/em&gt; podemos crear un elemento o &lt;b&gt;tag&lt;/b&gt; html, como el link expuesto en el ejemplo. Incluso podríamos añadir a que clase pertenece o si tiene una id única, o bien, añadirle estilos propios, etc.&lt;br /&gt;Ocurriría lo mismo si queremos crear un nuevo &lt;b&gt;div&lt;/b&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;this.link = new Element('div', {&lt;br&gt; 'id': 'id_unica',&lt;br&gt; 'class': 'mi_clase'&lt;br&gt;})&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Aunque hay muchas propiedades dentro de un elemento hay que seguir el estándar marcado por &lt;em&gt;W3C consortium&lt;/em&gt; y por nuesto &lt;em&gt;doctype&lt;/em&gt;, es decir, a un elemento &lt;b&gt;div&lt;/b&gt; no le pondremos la propiedad &lt;b&gt;src&lt;/b&gt; que es propia de algunos elementos como &lt;b&gt;img&lt;/b&gt;.&lt;br /&gt;Para añadir más dinamismo, imaginemos que queremos hacer un listado dinámico &lt;b&gt;(tag select)&lt;/b&gt;, se podría hacer de la siguiente manera:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;this.ids = new Element('div',{ 'class': 'selection' });&lt;br&gt;this.selects = new Element('select');&lt;br&gt;for(var i=0; i&amp;lt;options.tipo.length; i++){&lt;br&gt; this.tipo = new Element('option', { 'name': i, 'text':options.tipo[i] });&lt;br&gt; this.tipo.injectInside(this.selects);&lt;br&gt;}&lt;br&gt;this.selects.injectInside(this.ids);&lt;br&gt;this.ids.injectInside(select);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Aquí en este ejemplo hay más conceptos, vamos por partes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;options.tipo&lt;/em&gt;: options es un objeto que contiene un array llamado tipo y que recorremos con un bucle&lt;/li&gt;&lt;li&gt;&lt;em&gt;injectInside&lt;/em&gt;: es un método que tiene &lt;b&gt;Elements&lt;/b&gt; y sirve para indicar que incrustemos el elemento creado dentro de otro elemento al final de su contenido.&lt;/li&gt;&lt;li&gt;1. Creamos un elemento div con las clase 'selecction'&lt;/li&gt;&lt;li&gt;2. Creamos un elemento select&lt;/li&gt;&lt;li&gt;3. Recorremos con un bluce un array y dentro creamos por cada contenido dentro del array un elemento del tipo &lt;b&gt;option&lt;/b&gt;&lt;/li&gt;&lt;li&gt;4. Incrustamos los nuevos elementos del tipo &lt;b&gt;option&lt;/b&gt; dentro del elemento del tipo &lt;b&gt;select&lt;/b&gt;&lt;/li&gt;&lt;li&gt;5. Fuera del bucle incrustamos el elemento sel tipo &lt;b&gt;select&lt;/b&gt; dentro del elemento &lt;b&gt;div&lt;/b&gt; previamente creado&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;En próximos artículos iré ampliando &lt;b&gt;como crear elementos con mootools&lt;/b&gt;, entre ellos explicaré los métodos de &lt;em&gt;Element&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-9009870206005802828?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/9009870206005802828/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=9009870206005802828' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/9009870206005802828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/9009870206005802828'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/12/crear-elementos-con-mootools-primera.html' title='Crear elementos con mootools primera parte'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-3490030560633109494</id><published>2008-12-16T17:15:00.002+01:00</published><updated>2008-12-16T17:18:19.181+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='portfolio'/><title type='text'>Eidata</title><content type='html'>&lt;div class="portfolio"&gt;&lt;br /&gt;&lt;img src="http://www.gruasorion.com/sg/images/portfolio/eidata-internet-services.jpg" title="eidata internet services" alt="eidata internet services" /&gt;&lt;b&gt;Cliente: &lt;/b&gt;Eidata Internet Services&lt;br /&gt;&lt;b&gt;Web: &lt;/b&gt;&lt;a href="http://www.eidata.com/" title="eidata internet services"&gt;Eidata&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Diseño web: &lt;/b&gt;Ricard Catalan Diaz&lt;br /&gt;&lt;b&gt;Maquetación: &lt;/b&gt;Xhtml 1.1, CSS 2.1&lt;br /&gt;&lt;b&gt;Programación: &lt;/b&gt;Javascript, mootools 1.2 y PHP&lt;br /&gt;&lt;b&gt;Servicios web: &lt;/b&gt;No&lt;br /&gt;&lt;b&gt;Posicionamiento: &lt;/b&gt;Si&lt;br /&gt;&lt;b&gt;CMS: &lt;/b&gt;No&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-3490030560633109494?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/3490030560633109494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/3490030560633109494'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/12/eidata.html' title='Eidata'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-4409150058810853386</id><published>2008-12-09T10:37:00.014+01:00</published><updated>2008-12-10T13:48:35.217+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tpv'/><category scheme='http://www.blogger.com/atom/ns#' term='proyecto'/><category scheme='http://www.blogger.com/atom/ns#' term='bbva'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='pasarela de pago'/><title type='text'>Crear una pasarela de pago con BBVA tercera parte</title><content type='html'>En este tercer artículo sobre &lt;b&gt;crear una pasarela de pago con BBVA&lt;/b&gt;, explicaré el archivo &lt;em&gt;pasarela.php&lt;/em&gt;.&lt;br/&gt;&lt;br /&gt;Brevemente expondré los pasos que hará el cliente en nuestro comercio y que importancia tiene el documento &lt;b&gt;PHP&lt;/b&gt; &lt;em&gt;pasarela&lt;/em&gt;:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; El cliente insertará los datos de compra/reserva en el formulario que hayamos creado.&lt;/li&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; Finalizada la insercción de datos mostraremos el archivo &lt;em&gt;confirm.php&lt;/em&gt; &lt;i&gt;(por ejemplo)&lt;/i&gt; según la &lt;a href="http://siciliangirl.blogspot.com/2008/12/crear-una-pasarela-de-pago-con-bbva.html" title="crear una pasarela de pago con bbva - primera parte"&gt;primer parte&lt;/a&gt; del artículo&lt;/li&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; El cliente al confirmar la compra, enviaremos mediante &lt;b&gt;POST&lt;/b&gt; la variable &lt;em&gt;$xml&lt;/em&gt;, con formato &lt;b&gt;XML&lt;/b&gt; que contiene la &lt;em&gt;id transaccion&lt;/em&gt;, el precio formateado, la firma de la compra, etc.&lt;/li&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; Al cliente se le redirecciona al &lt;b&gt;tpv virtual del BBVA&lt;/b&gt; donde realiza los pasos finales de la compra.&lt;/li&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; El BBVA nos enviará mediante &lt;b&gt;GET&lt;/b&gt; una variable &lt;em&gt;peticion&lt;/em&gt; en formato &lt;b&gt;XML&lt;/b&gt; a &lt;em&gt;pasarela.php&lt;/em&gt;, independientemete de si se realizó o no la compra&lt;/li&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; En &lt;em&gt;pasarela.php&lt;/em&gt; realizaremos los pasos siguientes:  &lt;ul&gt;   &lt;li&gt;Parseo del XML enviado, extracción de la &lt;b&gt;id transacción&lt;/b&gt; y confirmación del &lt;b&gt;coderror&lt;/b&gt; &lt;i&gt;(el coderror es devuelto por el bbva y nos indica si la compra se realizó o no)&lt;/i&gt;&lt;/li&gt;   &lt;li&gt;Si la compra se realizó, accedemos al archivo &lt;b&gt;XML&lt;/b&gt; guardado en el servidor con el nombre de la &lt;b&gt;id transacción&lt;/b&gt;&lt;/li&gt;   &lt;li&gt;Extraemos los datos del cliente, y lo insertamos en nuestra &lt;b&gt;base de datos&lt;/b&gt;&lt;/li&gt;   &lt;li&gt;Borramos el archivo XML &lt;i&gt;(opcional)&lt;/i&gt;, y enviamos un e-mail al usuario que realizó la compra/reserva y otro e-mail al comercio.&lt;/li&gt;  &lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt; &lt;em&gt;Pasarela.php&lt;/em&gt; es llamado una vez se confirma o no la compra/reserva, por lo tanto no mostraremos ningún dato, solo realizaremos un proceso de la información y realizaremos los pasos según el estado de la compra.&lt;br /&gt;&lt;b&gt;El tpv del BBVA&lt;/b&gt; mostrará la confirmación de la compra o el error que hubo, justo después de enviar los datos a &lt;em&gt;pasarela.php&lt;/em&gt;, y nos dará la opción mediante un botón de redirigir a nuestro comercio. Esto es opcional y los pondremos al enviar la variable &lt;em&gt;$xml&lt;/em&gt; mediante &lt;b&gt;POST&lt;/b&gt; dentro de la etiqueta &lt;b&gt;urlredir&lt;/b&gt;.&lt;br/&gt;&lt;br /&gt;A continuación pongo parte del código:&lt;br/&gt;&lt;br /&gt;&lt;pre name="code" class="php"&gt;&lt;br /&gt;&amp;lt;?php&lt;br&gt;//Recibimos variable peticion el BBVA, y confirmamos que hayan datos&lt;br&gt;if(!empty($_GET['peticion'])){&lt;br&gt; require_once("includes/admin/Connect_db.php");&lt;br&gt; require_once("includes/admin/info_db.php");&lt;br&gt; require_once('pasarela/mailing.php'); //Usado para el envio de e-mails. Usa la clase PHPMAILER&lt;br&gt; //Abrimos el fichero en modo de escritura&lt;br&gt; $peticion=$_GET['peticion'];&lt;br&gt; $file='peticion/pasarela.xml';&lt;br&gt; $pasarela = fopen($file,"w+");&lt;br&gt; //Escribimos temporalmente el archivo XML recibido por el BBVA. Siempre estará en modo sobreescritura&lt;br&gt; fputs($pasarela,$peticion);&lt;br&gt; chmod($file,0755); //Modificamos los permisos&lt;br&gt; fclose($pasarela); //Cerramos el fichero &lt;br&gt; //Leemos el archivo guardado en XML mediante SimpleXML_load_File, esta funcion esta incluida en PHP 5.1.0&lt;br&gt; //o bien Libxml 2.6.0. Convierte un XML en un objeto, facilitando su parseo y acceso.&lt;br&gt; $resXml = simplexml_load_file($file);&lt;br&gt; foreach ($resXml-&gt;respago as $res){&lt;br&gt;  $idtrans=$res-&gt;idtransaccion;&lt;br&gt;  $coderror=$res-&gt;coderror; //Coderror nos indicará si se realizó o no la compra&lt;br&gt; }&lt;br&gt; //Recuperamos el XML con la misma IDTransaccion y los datos del cliente&lt;br&gt; //Coderror=0000; indica que se realizó correctamente la compra.&lt;br&gt; if($coderror==0000){&lt;br&gt;  $fileTrans="xml/$idtrans.xml";&lt;br&gt;  //Comprovamos que exista el fichero&lt;br&gt;  if(file_exists($fileTrans)){&lt;br&gt;   $resXml = simplexml_load_file($fileTrans);&lt;br&gt;   foreach($resXml-&gt;transid as $res){&lt;br&gt;    $nom=$res-&gt;nombre;&lt;br&gt;    $apellido=$res-&gt;apellido;&lt;br&gt;    $email=$res-&gt;email;&lt;br&gt;    $lang=$res-&gt;idioma; //Idioma que usa el cliente durante la reserva, para enviar el correo según idioma usado&lt;br&gt;    $precio=$res-&gt;precio;&lt;br&gt;    /* ...  Aquí extraeremos el resto del XML guardado, dependerá de lo datos guardados */&lt;br&gt;   }&lt;br&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Como se puede ver en &lt;em&gt;pasarela.php&lt;/em&gt; realizaremos bastantes comprovaciones de errores. &lt;i&gt;(He implementado varias, pero se pueden realizar todo tipo de comprovaciones)&lt;/i&gt;.&lt;br /&gt;Este código no necesita mucha explicación:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Recibimos una variable, guardamos temporalmente sus datos y comprovamos si se realizó la compra, si es asi, accedemos a los datos del cliente guardados en el &lt;b&gt;XML&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;En otro artículo ya dije que este archivo es el más "dinámico", porque según nuestro comercio puede ser diferente, y por lo tanto se debe considerar este ejemplo como tal.&lt;br /&gt;Continuo con otra parte del código:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; //Creamos el e-mail con los datos (estos datos serán usados en el caso de error) y nos conectamos a la Base de Datos&lt;br&gt; $clientname=$nom." ".$apellido; $body="Datos de Contacto del cliente:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;";&lt;br&gt; $body.="Localizador de reserva &amp;lt;b&amp;gt;$idtrans&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;";&lt;br&gt; //... Aqui va el resto del cuerpo del e-mail&lt;br&gt; $conexion = new Connect_db($hostname,$dbname,$username,$password); //Creamos instancia del objeto Connect DB&lt;br&gt; $conexion-&gt;getConnect(); //Nos conectamos a la base de datos&lt;br&gt; //GUARDAMOS LOS DATOS EN LA BASE DE DATOS de la RESERVA  si el estado es OK&lt;br&gt; $sql="INSERT INTO $reservas VALUES($idtrans,'$nom','$apellido','$email','$telf1','$telf2','$nacion','$fecha',$pase,'$servicio',$adults,$nens,'reservado',$precio);";&lt;br&gt; $res=mysql_query($sql);&lt;br&gt; if($res&gt;0){ //Si se guardó correctamente en la base de datos&lt;br&gt;  unlink($fileTrans);//Borramos el archivo del XML con los datos del cliente&lt;br&gt;  //Envio de correo al cliente dela reserva y al cliente de la web&lt;br&gt;  //OPCIONAL: Si nuestro comercio esta en varios idiomas, aquí podremos elegir un envio de correo según el idioma del usuario&lt;br&gt;  switch($lang){&lt;br&gt;   case 'es': $asunto="Reserva $nombre-del-comercio num.$idtrans";&lt;br&gt;    //CLIENTE Creamos instancia para enviar mail al cliente&lt;br&gt;    //Esta clase "Mailing" envía un correo mediante PHPMAILER, aquí en vez de usar esta clase, podemos usar directamente una llamada a PHPMAILER o la funcion que usemos para enviar el correo&lt;br&gt;    $mail= new Mailing($email,$nombre-del-comercio,$asunto,$body);&lt;br&gt;    $mail-&gt;sendMail(); //enviamos mail al cliente&lt;br&gt;    //Instancia para enviar mail al comercio&lt;br&gt;    $mail2= new Mailing($email,$clientname,$asunto,$bodyAlt); //$bodyAlt es un texto alternativo al que se envia al cliente&lt;br&gt;    $mail2-&gt;sendMailWebClient(); //enviamos mail&lt;br&gt;    break;&lt;br&gt;   case 'en': $asunto="$nombre-del-comercio reservation num.$idtrans""; //Idioma inglés&lt;br&gt;    //... Resto del código del envio de correo&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En este código creamos una variable $body donde almacenamos el cuerpo del e-mail, y lo usaremos por si surge algún error.&lt;br /&gt;Dentro del &lt;em&gt;switch&lt;/em&gt; es donde pondremos todos los datos del envio de e-mail al cliente y lo enviaremos. Hay que tener en cuenta que no será necesario usar un &lt;em&gt;switch&lt;/em&gt; si solo usamos un idioma en nuestro comercio.&lt;br /&gt;A continuación pondré el resto del código con los errores, que puedan surgir:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  }else{ //Error al guardar los datos, reintentamos la insercción.&lt;br&gt;   $reintento=0;&lt;br&gt;   while($reintento&lt;5){&lt;br&gt;    sleep(1);//Esperamos 1 segundo antes del siguiente reintento&lt;br&gt;    $res=mysql_query($sql);&lt;br&gt;    if($res&gt;0) break; //Si hubo éxito en la insercción, salimos del bucle con un break&lt;br&gt;    $reintento++;&lt;br&gt;   }&lt;br&gt;   if($res&gt;0){&lt;br&gt;    unlink($fileTrans);//Borramos el archivo del XML con los datos del cliente&lt;br&gt;    $bodyAlt.="&amp;lt;b&amp;gt;Esta reserva a requerido $reintento intentos de registro en la Base de Datos.&amp;lt;/b&amp;gt;"; //Esto se añadirá solo en el envio al comercio a modo informativo&lt;br&gt;    switch($lang){&lt;br&gt;     case 'es': /*... Aqui va el resto de código igual que el anterior */;&lt;br&gt;    }&lt;br&gt;   }else{ //Hubo error en los siguientes 5 intentos, se envia e-mail al comercio indicando el error y un e-mail al cliente con la reserva, puesto que existe un reserva, sin embargo ha fallado la insercción en la base de datos, tras 5 intentos&lt;br&gt;    $errorMysql=mysql_error(); //GUARDAMOS ERROR DE MYSQL&lt;br&gt;    $error2="Ocurrió un problema en la BD tras $reintento intentos de inserción, el error que devolvió MySQL es el siguiente:&amp;lt;br&amp;gt;"; //esto es parte del e-mail que enviaremos al comercio&lt;br&gt;    $error2.="&amp;lt;b&amp;gt;".$errorMysql."&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;";&lt;br&gt;    $dia=date('d');&lt;br&gt;    $mes=date('n');&lt;br&gt;    $hora=date('G\:i\:s');&lt;br&gt;    //AQUI va el resto del e-mail para envia el correo al comercio, y posteriormente el envio de e-mail al cliente, igual que en los anteriores casos&lt;br&gt;   }&lt;br&gt;  }&lt;br&gt; }else{ //En el caso de que no exista el archivo XML&lt;br&gt;  $dia=date('d');&lt;br&gt;  $mes=date('n');&lt;br&gt;  $hora=date('G\:i\:s');&lt;br&gt;  $asunto="Error: xml no encontrado";&lt;br&gt;  $body="Ocurrio un problema el dia $dia del mes $mes a la hora $hora&amp;lt;br&amp;gt;";&lt;br&gt;  //AQUI va el resto de código para el envio de correo al Comercio con el error.&lt;br&gt; }&lt;br&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Primero hago un reintento de insercción en la base de datos. Es posible que esté saturado el servicio o que pueda surgir algún problema, si usamos &lt;b&gt;transacciones&lt;/b&gt; con SQL, este paso no sería necesario.&lt;br /&gt;Para no saturar sel servicio hago un reintento 5 veces con una espera de 1 segundo por reintento. &lt;i&gt;(Podemos cambiar el número de reintentos y tiempo de espera)&lt;/i&gt;&lt;br&gt;&lt;br /&gt;Desde mi punto de vista, es preferible hacer varios reintentos, pues estamos trabajando con compras reales, y siempre es preferible saturar el servicio unos segundos, que perder el registro de la compra en nuestra base de datos.&lt;br&gt;&lt;br /&gt;Posteriormente de los reintentos, si tuvo éxito alguno, salimos del bucle y ejecutamos el envio de e-mail, en caso contrario enviaremos un e-mail con el error ocurrido al comercio y un e-mail normal de compra al cliente, pues la compra existe realmente, aunque no aparecerá en nuestra base de datos.&lt;br&gt;&lt;br /&gt;Para finalizar esta parte del código, depuro el error en el caso de no existir el &lt;b&gt;XML&lt;/b&gt;.&lt;br /&gt;En este caso, el problema sería grabe, pues no tendremos los datos del cliente que realizó la compra.&lt;br /&gt;Este error será común si a la hora de generar la &lt;em&gt;id transacción&lt;/em&gt; no la creamos con 12 dígitos, y el &lt;b&gt;tpv virtual del BBVA&lt;/b&gt; añadirá un cero a la izquierda, por lo que ocasionará una &lt;em&gt;id transacción&lt;/em&gt; erronea. Hay que tener mucho cuidado con la generación de esta &lt;b&gt;clave única&lt;/b&gt;&lt;br&gt;&lt;br /&gt;Por último pongo el resto de código:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; //Este Error se produce cuando el coderror devuelto por el BBVA no coincide con la compra realizada &lt;i&gt;(siempre es 0000)&lt;/i&gt;&lt;br&gt; }else{&lt;br&gt;  //Volvemos a leer el XML para parsear la información del DESERROR&lt;br&gt;  foreach ($resXml-&gt;respago as $res){&lt;br&gt;   $deserror=$res-&gt;deserror; //Aquí esta la descripción del error devuelto por el BBVA&lt;br&gt;  }//Leemos el XML del cliente con su ID Trans&lt;br&gt;  $fileTrans="xml/$idtrans.xml";&lt;br&gt;  if(file_exists($fileTrans)){&lt;br&gt;   $resXml = simplexml_load_file($fileTrans);&lt;br&gt;   foreach($resXml-&gt;transid as $res){&lt;br&gt;    $nom=$res-&gt;nombre;&lt;br&gt;    $apellido=$res-&gt;apellido;&lt;br&gt;    $precio=$res-&gt;precio;&lt;br&gt;    //AQUI va el resto de código de extracción de dato del XML&lt;br&gt;   }&lt;br&gt;   $dia=date('d');&lt;br&gt;   $mes=date('n');&lt;br&gt;   $hora=date('G\:i\:s');&lt;br&gt;   $clientname=$nom." ".$apellido;&lt;br&gt;   $asunto="Compra no realizada: coderror no correcto";&lt;br&gt;   $body="Se intentó realizar una compra el dia $dia del mes $mes a la hora $hora&amp;lt;br&amp;gt;";&lt;br&gt;   $body.="El BBVA devolvió este error (code error:&amp;lt;b&amp;gt;$coderror&amp;lt;/b&amp;gt;): &amp;lt;b&amp;gt;$deserror&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;";&lt;br&gt;   //Enviamos un e-mail al comercio con los datos, por si les intersa ponerse en contacto con el cliente.&lt;br&gt;   $mail= new Mailing('un e-mail','Compra-no-realizada',$asunto,$body);&lt;br&gt;   $mail-&gt;sendMailWebClient(); //enviamos mail al comercio&lt;br&gt;   unlink($fileTrans);//Borramos el archivo del XML con los datos del cliente, al enviar un e-mail con los datos&lt;br&gt;  } //Hay que tener en cuenta que aquí compruebo si existe o no el XML, se puede realizar.&lt;br&gt; }&lt;br&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Esta última parte, compruebo si el BBVA devolvió un error, y recojo que tipo de error es y envio un e-mail al comercio.&lt;br /&gt;En este caso no se debe enviar ningún e-mail al cliente, puesto que la compra no existe, es un e-mail informativo para el comercio, indicandole los datos del cliente que intentó realizar una compra.&lt;br /&gt;&lt;br /&gt;Este es el útimo artículo de la &lt;b&gt;creación de un pasarela de pago con bbva&lt;/b&gt;, estos son los otros 2 artículos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;-&lt;/em&gt; &lt;a href="http://siciliangirl.blogspot.com/2008/12/crear-una-pasarela-de-pago-con-bbva.html" title="pasarela de pago con bbva - primera parte"&gt;crear una pasarela de pago con BBVA, primera parte&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;-&lt;/em&gt; &lt;a href="http://siciliangirl.blogspot.com/2008/12/crear-una-pasarela-de-pago-con-bbva_03.html" title="pasarela de pago con bbva - segunda parte"&gt;crear una pasarela de pago con BBVA, segunda parte&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Puede descargar los archivos del ejemplo aquí:&lt;br /&gt;&lt;div class="ejercicio"&gt;&lt;div class="zip2"&gt;&lt;a href="http://www.gruasorion.com/sg/ejemplos/pasarela-de-pago-con-bbva/pasarela-de-pago-con-bbva.zip"&gt;&lt;img src="http://www.gruasorion.com/sg/images/zip-icon.gif" alt="pasarela de pago con bbva"/&gt;&lt;br/&gt;descargar&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-4409150058810853386?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/4409150058810853386/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=4409150058810853386' title='22 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/4409150058810853386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/4409150058810853386'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/12/crear-una-pasarela-de-pago-con-bbva_09.html' title='Crear una pasarela de pago con BBVA tercera parte'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-4073550003873617267</id><published>2008-12-05T17:15:00.003+01:00</published><updated>2008-12-05T17:29:14.989+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xhtml'/><category scheme='http://www.blogger.com/atom/ns#' term='juegos'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='espacio'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Trabajando con Quinta Dimensión</title><content type='html'>Aunque este es un artículo que se sale un poco de los temas habitualmente escribo, creo que es de interés para algunos.&lt;br /&gt;Hace un tiempo me topé con un &lt;b&gt;juego espacial&lt;/b&gt; llamado &lt;em&gt;5dim&lt;/em&gt; o &lt;em&gt;Quinta Dimensión&lt;/em&gt;, la dirección es: &lt;a href="http://www.5dim.es/" title="Quinta Dimensión" alt="Quinta Dimensión"&gt;http://www.5dim.es&lt;/a&gt; y se juega a través del navegador.&lt;br /&gt;Es un tipo de juego al estilo Ogames, aún así es muy superior, aunque todo hay que decirlo, esta en fase beta y es por ello que decidí colaborar en el proyecto.&lt;br /&gt;Actualmente estoy realizando la parte de diseño y maquetación, para crear un nuevo skin o theme, porque el que hay es algo anticuado. En breve estará listo el diseño y será implementado sobre finales de diciembre, si todo va bien.&lt;br /&gt;&lt;br /&gt;Os invito a que entréis al juego &lt;em&gt;5dim&lt;/em&gt;, un saludo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-4073550003873617267?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/4073550003873617267/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=4073550003873617267' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/4073550003873617267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/4073550003873617267'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/12/trabajando-con-quinta-dimensin.html' title='Trabajando con Quinta Dimensión'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-5715017564003375335</id><published>2008-12-03T15:46:00.015+01:00</published><updated>2008-12-09T15:08:16.219+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tpv'/><category scheme='http://www.blogger.com/atom/ns#' term='proyecto'/><category scheme='http://www.blogger.com/atom/ns#' term='bbva'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='pasarela de pago'/><title type='text'>Crear una pasarela de pago con BBVA segunda parte</title><content type='html'>Este es el segundo artículo de la &lt;b&gt;creacion de una pasarela de pago con BBVA&lt;/b&gt;&lt;br /&gt;Trataremos los archivos incluidos &lt;b&gt;Desofuscar.php&lt;/b&gt; y &lt;b&gt;IdTransaccion.php&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;b&gt;IdTransaccion.php&lt;/b&gt; sirve para crear un número de reserva (id de la transacción), es un número identificativo único para cada compra/reserva que realiza el usuario en nuestro comercio, a continuación os pongo el código y luego lo comento, veréis que es muy sencillo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;/*****************************************************&lt;br&gt;/** @Author: Ricard Catalan&lt;br&gt;/** @return: IDTransaccion&lt;br&gt;/** Clase usada para devolver un identificador de la transacción único&lt;br&gt;/****************************************************/&lt;br&gt;&lt;br&gt;class IdTransaccion{&lt;br&gt; private $y;&lt;br&gt; private $ddd;&lt;br&gt; private $hh;&lt;br&gt; private $mm;&lt;br&gt; private $ss;&lt;br&gt; private $an;&lt;br&gt; private $id;&lt;br&gt; public function __construct(){&lt;br&gt;  $this-&gt;setIdTrans();&lt;br&gt; }&lt;br&gt; private function setIdTrans(){&lt;br&gt;  $this-&gt;y=substr(date('y'),strlen(date('y'))-1,strlen(date('y')));&lt;br&gt;  $this-&gt;ddd=date('z'); //Devuelve el día del año desde 0 a 365&lt;br&gt;  if($this-&gt;ddd &lt; 10) $this-&gt;ddd= '00'.$this-&gt;ddd; //añadimos 2 ceros en el caso de ser menos de 10&lt;br&gt;  else if($this-&gt;ddd &gt; 9 &amp;&amp; $this-&gt;ddd &lt; 100) $this-&gt;ddd= '0'.$this-&gt;ddd; //añadimos un 0 en el caso de ser mayor de 9 y menor de 100&lt;br&gt;  $this-&gt;hh=date('H'); //Devuelve la hora en formato 00 a 24&lt;br&gt;  $this-&gt;mm=date('i'); //Devuelve los minutos desde 00 a 59&lt;br&gt;  $this-&gt;ss=date('s'); //Devueve los segundos en 00 a 59&lt;br&gt;  $this-&gt;an=rand('11','99'); //Devuelve un valor aleatorio ente 10-99&lt;br&gt; }&lt;br&gt; public function getIdTrans(){&lt;br&gt;  return $this-&gt;id=$this-&gt;y.$this-&gt;ddd.$this-&gt;hh.$this-&gt;mm.$this-&gt;ss.$this-&gt;an;&lt;br&gt; }&lt;br&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;He creado una pequeña clase con &lt;b&gt;PHP5&lt;/b&gt;, en la que creo un número único de 12 dígitos con &lt;em&gt;date()&lt;/em&gt; desde la hora del servidor:&lt;br&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;-&lt;/em&gt; Primero recojo el último digito del año&lt;/li&gt;&lt;li&gt;&lt;em&gt;-&lt;/em&gt; Los días del año de 001 a 365, es muy importante que tenga 3 dígitos porque sino &lt;em&gt;date('z')&lt;/em&gt; nos puede devolver por ejemplo &lt;em&gt;32&lt;/em&gt; y el número generado será de 11 dígitos y el &lt;b&gt;TPV virtual del BBV&lt;/b&gt; le añadirá un 0 delante, puesto que siempre debe ser un número de 12 dígitos, y al ser diferente nunca podremos recorger los datos del cliente guardados en XML.&lt;/li&gt;&lt;li&gt;&lt;em&gt;-&lt;/em&gt; El resto de valores son la hora, los minutos y segundos con 2 dígitos cada uno&lt;/li&gt;&lt;li&gt;&lt;em&gt;-&lt;/em&gt; Por último el número aleatorio de 2 dígitos. Hay que tener en cuenta que dependiendo de la versión de &lt;b&gt;PHP&lt;/b&gt; que tengamos en el servidor podrémos usar &lt;em&gt;milisegundos&lt;/em&gt; que siempre será mejor que 2 dígitos aleatorios.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Desofuscar.php&lt;/b&gt; es un script que nos facilitará BBVA en la documentación que encontraremos en el &lt;b&gt;TPV virtual del BBVA&lt;/b&gt;.&lt;br /&gt;Sin embargo, es bastante "tosco" como esta realizado y yo lo he adaptado a &lt;b&gt;PHP5 orientado a objetos&lt;/b&gt; por lo que el código es más elegante y más fácil de hacer la "llamada".&lt;br /&gt;Os pongo la clase como quedaría, pero sin poner todo el código, puesto que ya lo facilita BBVA:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?php&lt;br&gt;/*****************************************************&lt;br&gt;/** @Author: Ricard Catalan&lt;br&gt;/** @return: pal_sec&lt;br&gt;/** Clase usada para devolver la palabra desofuscada&lt;br&gt;/****************************************************/&lt;br&gt;class Desofuscar{&lt;br&gt; private $pal_sec_ofuscada;&lt;br&gt; private $clave_xor;&lt;br&gt; private $cad1_0="0";&lt;br&gt; private $cad2_0="00";&lt;br&gt; private $cad3_0="000";&lt;br&gt; private $cad4_0="0000";&lt;br&gt; private $cad5_0="00000";&lt;br&gt; private $cad6_0="000000";&lt;br&gt; private $cad7_0="0000000";&lt;br&gt; private $cad8_0="00000000";&lt;br&gt; private $pal_sec="";&lt;br&gt; public function __construct($ofuscada,$clave,$idcomercio){&lt;br&gt;  $this-&gt;pal_sec_ofuscada=$ofuscada;&lt;br&gt;  $this-&gt;clave_xor=$clave.substr($idcomercio,0,9).'***';&lt;br&gt;  $this-&gt;Desofuscar(); //Desofuscamos&lt;br&gt; }&lt;br&gt; private function Desofuscar(){&lt;br&gt;  $trozos=explode (";", $this-&gt;pal_sec_ofuscada);&lt;br&gt;  $tope=count($trozos);&lt;br&gt;  for ($i=0; $i&lt;$tope ; $i++){&lt;br&gt;   $res = "";&lt;br&gt;   $pal_sec_ofus_bytes[$i] = decbin(hexdec($trozos[$i])); &lt;br&gt;   if (strlen($pal_sec_ofus_bytes[$i]) == 7){ $pal_sec_ofus_bytes[$i] = $this-&gt;cad1_0.$pal_sec_ofus_bytes[$i]; }&lt;br&gt;    if (strlen($pal_sec_ofus_bytes[$i]) == 6){ $pal_sec_ofus_bytes[$i] = $this-&gt;cad2_0.$pal_sec_ofus_bytes[$i]; }&lt;br&gt;    ... /* aquí va el código restante del manual */&lt;br&gt;  }&lt;br&gt; }&lt;br&gt; public function getDesofuscar(){&lt;br&gt;  return $this-&gt;pal_sec;&lt;br&gt; }&lt;br&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Simplemtente con crear una instancia de la clase &lt;b&gt;Desofuscar&lt;/b&gt; y hacer una llamada al método &lt;em&gt;getIdTrans()&lt;/em&gt; obtendremos la palabra desofuscada.&lt;br&gt;Podéis ver como se realiza la instancia de la dos clases (Desofuscar y IdTransaccion) en la primera parte del artículo &lt;a href="http://siciliangirl.blogspot.com/2008/12/crear-una-pasarela-de-pago-con-bbva.html" title="crear una pasarela de pago con BBVA primera parte"&gt;aquí&lt;/a&gt;.&lt;br/&gt;&lt;br /&gt;Hasta aqui el segundo artículo, en el &lt;a href="http://siciliangirl.blogspot.com/2008/12/crear-una-pasarela-de-pago-con-bbva_09.html" title="crear una pasarela de pago con BBVA - tercera parte"&gt;tercer artículo&lt;/a&gt; veremos el archivo &lt;b&gt;pasarela.php&lt;/b&gt; para que sirve y las múltiples opciones que tendremos en él.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-5715017564003375335?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/5715017564003375335/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=5715017564003375335' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/5715017564003375335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/5715017564003375335'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/12/crear-una-pasarela-de-pago-con-bbva_03.html' title='Crear una pasarela de pago con BBVA segunda parte'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-134208848454008724</id><published>2008-12-03T12:18:00.037+01:00</published><updated>2011-06-15T15:59:30.362+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tpv'/><category scheme='http://www.blogger.com/atom/ns#' term='proyecto'/><category scheme='http://www.blogger.com/atom/ns#' term='bbva'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='pasarela de pago'/><title type='text'>Crear una pasarela de pago con BBVA primera parte</title><content type='html'>Es la primera parte de una serie de artículos relacionados con la &lt;b&gt;creación de una pasarela de pago&lt;/b&gt;.&lt;br /&gt;En concreto pondré un ejemplo con el &lt;b&gt;TPV virtual del BBVA&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Todo el código siguiente esta comentado y es a modo de ejemplo, para poder implementar la pasarela de pago con nuestro comercio.&lt;br /&gt;En este ejemplo no trataré el servicio web SOAP y la implementación se llevará a cabo pasando los datos al TPV virtual y redirigiendo al usuario al mismo.&lt;br /&gt;&lt;br /&gt;Esta parte del código lo pondré dentro de un archivo (por ejemplo: &lt;em&gt;confirmacion.php&lt;/em&gt;) y será el paso final del comercio, donde el cliente confirmará la compra:&lt;br /&gt;&lt;pre&gt;//************************************************************************//&lt;br /&gt;// INTEGRACIÓN PASARELA BBVA con PHP5 (parcialmente orientado a objetos)&lt;br /&gt;// @Author: Ricard Catalan&lt;br /&gt;// Licencia: GNU&lt;br /&gt;// NOTA: Esto es un ejemplo y sigue los pasos de la documentación descargada desde&lt;br /&gt;// el TPV virtual del BBVA para su implementación en PHP ,y en ningún caso substituye&lt;br /&gt;// a la documentación.&lt;br /&gt;//************************************************************************//&lt;br /&gt;&lt;br /&gt;require_once('includes/admin/Connect_db.php'); //Incluimos la clase conexión&lt;br /&gt;require_once('includes/admin/Select_db.php');  //Incluimos una clase con métodos SELECT a MySQL&lt;br /&gt;require_once('includes/admin/info_db.php');  //Incluimos datos de la conexión&lt;br /&gt;require_once('pasarela/IdTransaccion.php'); //Clase que genera la ID de la transacción&lt;br /&gt;require_once('pasarela/Desofuscar.php'); //Clase para Desofuscar la palabra secreta&lt;br /&gt;&lt;br /&gt;$conexion = new Connect_db($hostname,$dbname,$username,$password); //Creamos instancia del objeto Connect DB&lt;br /&gt;$conexion-&amp;gt;getConnect(); //Nos conectamos a la base de datos&lt;br /&gt;&lt;br /&gt;// IDCOMERCIO: es el número del comercio que tendrá el cliente (aparece en el panel de control del TPV del BBVA)&lt;br /&gt;//TERMINAL: el número de terminal (aparece en el panel de control del TPV del BBVA)&lt;br /&gt;//PALABRA: Esta es la palabra clave que se pone en el TPV del BBVA y que posteriormente generará la clave Ofuscada&lt;br /&gt;//OFUSCADA: El el contenido del .TXT descargado una vez puesta la "palabra clave", tiene la estructra siguiente XX;XX;...etc.&lt;br /&gt;$sql="SELECT idcomercio, terminal, palabra, ofuscada FROM rpreferencias;"; //Extraemos los datos necesarios&lt;br /&gt;$res=mysql_query($sql); //recojemos la consulta. NOTA: Hay que tener en cuenta que no hago comprobación de errores&lt;br /&gt;$dades=mysql_fetch_array($res);&lt;br /&gt;$idcomercio=$dades['idcomercio'];&lt;br /&gt;$terminal=$dades['terminal'];&lt;br /&gt;$clave=$dades['palabra'];&lt;br /&gt;$ofuscada=$dades['ofuscada'];&lt;br /&gt;&lt;br /&gt;$clave_xor=$clave.substr($idcomercio,0,9).'***'; //Creamos la CLAVE_XOR según el manual&lt;br /&gt;$trans=new IdTransaccion; //Creamos instancia de la clase IdTransaccion&lt;br /&gt;$idTrans=$trans-&amp;gt;getIdTrans(); //recojemos la ID de transacción para petición&lt;br /&gt;//Obtenemos Palabra desofuscada&lt;br /&gt;$desofuscar=new Desofuscar($ofuscada,$clave,$idcomercio); //Instancia de la clase Desofuscar&lt;br /&gt;$clave=$desofuscar-&amp;gt;getDesofuscar(); //recojemos la clave Desofuscada&lt;br /&gt;&lt;br /&gt;//El paso siguiente es convertir el formato del precio XXX.XX por XXXX (quitando la coma)  -&amp;gt; para calcular la firma&lt;br /&gt;$explo_preu=explode(".",$preuTotal);// formatear el importe de 87,5 a 875&lt;br /&gt;$preuTemp=$explo_preu[1];&lt;br /&gt;if(strlen($preuTemp)==1) $preuTemp=$preuTemp.'0'; //En el caso de tener: XX.5 pasamo a XX.50&lt;br /&gt;elseif(strlen($preuTemp)==0) $preuTemp='00'; //En el caso de tener: XX pasamo a XX00 (añadiendo dos ceros finales)&lt;br /&gt;$importe_formateado=$explo_preu[0].$preuTemp; //Guardamos el importe formateado para el calculo de la firma&lt;br /&gt;$precio=$explo_preu[0].'.'.$preuTemp; //Guardamos el importe con el formato correcto, que usaremos en el envio del XML&lt;br /&gt;$moneda='978'; //Euro&lt;br /&gt;&lt;br /&gt;//Creación de la FIRMA&lt;br /&gt;$datosfirma=$terminal.$idcomercio.$idTrans.$importe_formateado.$moneda.$clave;&lt;br /&gt;$firma=strtoupper(sha1($datosfirma)); //Generación SHA-1 por PHP5&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Los archivos que se incluyen al principio del código &lt;b&gt;IdTransaccion.php&lt;/b&gt; y &lt;b&gt;Desofuscar.php&lt;/b&gt; serán tratado en la segunda parte del artículo, el resto se usan para la conexión a la &lt;b&gt;base de datos&lt;/b&gt; y no hace parte del artículo, ya que me extendería demasiado.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; Primero nos conectamos a nuestra base de datos y recogemos los datos del idcomercio, la terminal, la palabra clave que nosotros habremos puesto, y la palabra ofuscada generada en el TPV del BBVA por la palabra clave.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; La &lt;em&gt;clave_xor&lt;/em&gt; esta implementada dentro del archivo &lt;b&gt;Desofuscar.php&lt;/b&gt; y lo he puesto aquí a modo de ejemplo&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; El siguiente paso es formatear el precio (ej. 99,50 €) a 9950 para generar la firma y 99.50 para el envio del XML al &lt;b&gt;TPV virtual del BBVA&lt;/b&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;em&gt;-&lt;/em&gt; Los datos que hemos ido recogido, son necesarios para la generación de la &lt;em&gt;firma&lt;/em&gt; que se envía mediante POST dentro del XML, y que el BBVA usa para autentificar que el comercio es correcto.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;A continuación sigo con el resto del código:&lt;br /&gt;&lt;pre&gt;//Creamos  una variable en formato XML&lt;br /&gt;//URLCOMERCIO: es el archivo PHP por el cual BBVA hará una llamada pasandole los datos de la compra  (correcta o incorrecta)&lt;br /&gt;//URLREDIR: Una vez realizada la compra y el cliente salga del TPV, será redirigido a esta dirección (OPCIONAL)&lt;br /&gt;$xml="&amp;lt;tpv&amp;gt;&lt;br /&gt; &amp;lt;oppago&amp;gt;&lt;br /&gt;  &amp;lt;idterminal&amp;gt;$terminal&amp;lt;/idterminal&amp;gt;&lt;br /&gt;  &amp;lt;idcomercio&amp;gt;$idcomercio&amp;lt;/idcomercio&amp;gt;&lt;br /&gt;  &amp;lt;idtransaccion&amp;gt;$idTrans&amp;lt;/idtransaccion&amp;gt;&lt;br /&gt;  &amp;lt;moneda&amp;gt;$moneda&amp;lt;/moneda&amp;gt;&lt;br /&gt;  &amp;lt;importe&amp;gt;$precio&amp;lt;/importe&amp;gt;&lt;br /&gt;  &amp;lt;urlcomercio&amp;gt;http://www.tucomercio.com/pasarela.php&amp;lt;/urlcomercio&amp;gt;&lt;br /&gt;  &amp;lt;idioma&amp;gt;$lang&amp;lt;&amp;lt;idioma&amp;gt;&lt;br /&gt;  &amp;lt;pais&amp;gt;$pais&amp;lt;/pais&amp;gt;&lt;br /&gt;  &amp;lt;urlredir&amp;gt;http://www.tucomercio.com/estado_transaccion.php&amp;lt;/urlredir&amp;gt;&lt;br /&gt;  &amp;lt;firma&amp;gt;$firma&amp;lt;/firma&amp;gt;&lt;br /&gt; &amp;lt;/oppago&amp;gt;&lt;br /&gt;&amp;lt;/tpv&amp;gt;";&lt;br /&gt;&lt;br /&gt;&amp;lt;form action="https://w3.grupobbva.com/TLPV/tlpv/TLPV_pub_RecepOpModeloServidor" method="POST"&amp;gt;&lt;br /&gt;/* AQUI VA EL CÓDIGO HTML del FORMULARIO que queramos */&lt;br /&gt;&amp;lt;input type="hidden" name="peticion" value="&amp;lt;?php echo $xml; //ponemos en un campo oculto la variable que contiene el XML ?&amp;gt;" /&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt;/******  Guardamos una copia con los datos del cliente en formato XML en el servidor  ******/&lt;br /&gt;//Aqui guardaremos los datos de la compra de un cliente, esto puede variar según los datos que queramos guardar&lt;br /&gt;//El siguiente XML es un ejemplo:&lt;br /&gt;$xml2="&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;br /&gt;&amp;lt;tpv&amp;gt;&lt;br /&gt; &amp;lt;transid&amp;gt;&lt;br /&gt;  &amp;lt;nombre&amp;gt;$nom&amp;lt;/nombre&amp;gt;&lt;br /&gt;  &amp;lt;apellido&amp;gt;$cognom&amp;lt;/apellido&amp;gt;&lt;br /&gt;  &amp;lt;email&amp;gt;$email&amp;lt;/email&amp;gt;&lt;br /&gt;  &amp;lt;telf1&amp;gt;$telf1&amp;lt;/telf1&amp;gt;&lt;br /&gt;  &amp;lt;telf2&amp;gt;$telf2&amp;lt;/telf2&amp;gt;&lt;br /&gt;  &amp;lt;nacion&amp;gt;$nacion&amp;lt;/nacion&amp;gt;&lt;br /&gt;  &amp;lt;fecha&amp;gt;$fecha&amp;lt;/fecha&amp;gt;&lt;br /&gt;  &amp;lt;pase&amp;gt;$pase&amp;lt;/pase&amp;gt;&lt;br /&gt;  &amp;lt;servicio&amp;gt;$serv&amp;lt;/servicio&amp;gt;&lt;br /&gt;  &amp;lt;adults&amp;gt;$adults&amp;lt;/adults&amp;gt;&lt;br /&gt;  &amp;lt;nens&amp;gt;$nens&amp;lt;/nens&amp;gt;&lt;br /&gt;  &amp;lt;idioma&amp;gt;$language&amp;lt;/idioma&amp;gt;&lt;br /&gt;  &amp;lt;precio&amp;gt;$precio&amp;lt;/precio&amp;gt;&lt;br /&gt; &amp;lt;/transid&amp;gt;&lt;br /&gt;&amp;lt;/tpv&amp;gt;";&lt;br /&gt;//NOTA: la primera línea es para guardar texto codificado en UTF-8, podemos quitarla, si no lo queremos&lt;br /&gt;&lt;br /&gt;$file="xml/$idTrans.xml";&lt;br /&gt;$transc = fopen($file,"w+"); //Creamos un fichero y por nombre le ponemos la ID TRANSACCÓN&lt;br /&gt;fputs($transc,$xml2); //Añadimos el contenido&lt;br /&gt;chmod($file,0755); //Modificamos los permisos para posteriormente poder  hacer un borrado.&lt;br /&gt;fclose($transc); //Cerramos el fichero&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Esta parte del código tambien la pondriamos dentro del ejemplo &lt;em&gt;confirmacion.php&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;El primer XML, se guarda dentro de una variable, y se envía junto con los datos que requiere el BBVA mediante POST a la URL que indica en el manual.&lt;br /&gt;En el formulario que he puesto como ejemplo, la URL es correcta, pero es posible que la modalidad de pago que tenga vuestro comercio sea diferente,  este ejemplo usa la modalidad &lt;b&gt;3D Secure&lt;/b&gt;, pero cambiando la url puede servir para cualquier forma de pago, pues los datos que enviaremos (xml) siempre son iguales.&lt;br /&gt;&lt;br /&gt;En el último XML guardaremos los datos del cliente que necesitemos en el servidor como un archivo XML.&lt;br /&gt;El XML se guardará de la siguiente manera: &lt;em&gt;826511175711.xml&lt;/em&gt;, dentro de la carpeta &lt;em&gt;/XML&lt;/em&gt; o la que se quiera.&lt;br /&gt;Este XML se usará después que el cliente acceda a la &lt;b&gt;pasarela de pago del BBVA&lt;/b&gt; y realize la compra. Es entonces cuando el BBVA hace una llamada a &lt;em&gt;http://www.tucomercio.com/pasarela.php&lt;/em&gt; &lt;i&gt;(o la urlcomercio que nosotros hayamos puesto)&lt;/i&gt; y nos pasará una variable mediante GET, en formato XML con los datos de la compra.&lt;br /&gt;En estos datos devueltos por el BBVA se incluye la &lt;b&gt;ID Transacción&lt;/b&gt; que concuerda con el nombre del XML guardado en el servidor, así se podrá recoger todos los datos del cliente (nombre, apellidos, dirección, etc.) para guardarlo en nuestra base de datos, enviar e-mails etc.&lt;br /&gt;&lt;br /&gt;En la &lt;a href="http://siciliangirl.blogspot.com/2008/12/crear-una-pasarela-de-pago-con-bbva_03.html" title="Crear una pasarela de pago con BBVA segunda parte"&gt;segunda parte&lt;/a&gt;, trataremos los archivos &lt;b&gt;IdTransaccion.php&lt;/b&gt; y &lt;b&gt;Desofuscar.php&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-134208848454008724?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/134208848454008724/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=134208848454008724' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/134208848454008724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/134208848454008724'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/12/crear-una-pasarela-de-pago-con-bbva.html' title='Crear una pasarela de pago con BBVA primera parte'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-134628508491275911</id><published>2008-11-27T15:23:00.006+01:00</published><updated>2008-12-10T10:05:45.753+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='portfolio'/><title type='text'>Gruas Orion</title><content type='html'>&lt;div class="portfolio"&gt;&lt;br /&gt;&lt;img src="http://www.gruasorion.com/sg/images/portfolio/gruas-orion.jpg" title="gruas orion" alt="gruas orion" /&gt;&lt;b&gt;Cliente: &lt;/b&gt;Gruas Orion S.L.&lt;br /&gt;&lt;b&gt;Web: &lt;/b&gt;&lt;a href="http://www.gruasorion.com/" title="gruas orion"&gt;Gruas orion&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Diseño web: &lt;/b&gt;Ricard Catalan Diaz&lt;br /&gt;&lt;b&gt;Maquetación: &lt;/b&gt;HTML 4.1, CSS 2.1&lt;br /&gt;&lt;b&gt;Programación: &lt;/b&gt;Javascript y PHP (junto a la clase &lt;b&gt;phpmailer&lt;/b&gt;) para el formulario&lt;br /&gt;&lt;b&gt;Servicios web: &lt;/b&gt;No&lt;br /&gt;&lt;b&gt;Posicionamiento: &lt;/b&gt;No&lt;br /&gt;&lt;b&gt;CMS: &lt;/b&gt;No&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-134628508491275911?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/134628508491275911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/134628508491275911'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/11/gruas-orion.html' title='Gruas Orion'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-1029958564873178400</id><published>2008-11-27T13:43:00.005+01:00</published><updated>2008-12-10T10:05:58.446+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='portfolio'/><title type='text'>Tablao de carmen</title><content type='html'>&lt;div class="portfolio"&gt;&lt;br /&gt; &lt;img src="http://www.gruasorion.com/sg/images/portfolio/tablao-de-carmen.jpg" title="tablao de carmen" alt="tablao de carmen"/&gt; &lt;b&gt;Cliente: &lt;/b&gt;tablao de carmen&lt;br /&gt; &lt;b&gt;Web: &lt;/b&gt;&lt;a href="http://www.tablaodecarmen.com/" title="tablao de carmen"&gt;Tablao de carmen&lt;/a&gt;&lt;br /&gt; &lt;b&gt;Diseño web: &lt;/b&gt;Deboom&lt;br /&gt; &lt;b&gt;Maquetación: &lt;/b&gt;XHTML 1.0 Strict, CSS 2.1 y Flash&lt;br /&gt; &lt;b&gt;Programación: &lt;/b&gt;Javascript y PHP&lt;br /&gt; &lt;b&gt;Servicios web: &lt;/b&gt;Si XML-RPC para Turismo de Barcelona&lt;br /&gt; &lt;b&gt;Posicionamiento: &lt;/b&gt;No&lt;br /&gt; &lt;b&gt;CMS: &lt;/b&gt;Si&lt;br/&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-1029958564873178400?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/1029958564873178400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/1029958564873178400'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/11/tablao-de-carmen.html' title='Tablao de carmen'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-1184753224258373907</id><published>2008-11-27T13:18:00.009+01:00</published><updated>2008-12-10T10:07:19.778+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='portfolio'/><title type='text'>Oasis piscinas</title><content type='html'>&lt;div class="portfolio"&gt;&lt;br /&gt; &lt;img src="http://www.gruasorion.com/sg/images/portfolio/oasis-piscinas.jpg" title="oasis piscinas" alt="oasis piscinas"/&gt; &lt;b&gt;Cliente: &lt;/b&gt;OasisPool s.l.&lt;br /&gt; &lt;b&gt;Web: &lt;/b&gt;&lt;a href="http://www.oasispiscinas.es/" title="oasis piscinas"&gt;oasis piscinas&lt;/a&gt;&lt;br /&gt; &lt;b&gt;Diseño web: &lt;/b&gt;Ricard Catalan Diaz&lt;br /&gt; &lt;b&gt;Maquetación: &lt;/b&gt;HTML 4.1, CSS 2.1 y Flash 8&lt;br /&gt; &lt;b&gt;Programación: &lt;/b&gt;ActionScript, Javascript y PHP (junto a la clase &lt;b&gt;phpmailer&lt;/b&gt;) para el formulario&lt;br /&gt; &lt;b&gt;Servicios web: &lt;/b&gt;No&lt;br /&gt; &lt;b&gt;Posicionamiento: &lt;/b&gt;No&lt;br /&gt; &lt;b&gt;CMS: &lt;/b&gt;No&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-1184753224258373907?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/1184753224258373907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/1184753224258373907'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/11/oasis-piscinas.html' title='Oasis piscinas'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-4369730788461379221</id><published>2008-11-27T12:43:00.001+01:00</published><updated>2008-11-27T12:43:42.987+01:00</updated><title type='text'>Galeria imagenes</title><content type='html'>Aquí va la galería de imágenes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-4369730788461379221?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/4369730788461379221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/4369730788461379221'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/11/galeria-imagenes.html' title='Galeria imagenes'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-3916132146478558902</id><published>2008-11-27T10:34:00.016+01:00</published><updated>2010-10-07T17:54:35.684+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><title type='text'>Calendario con mootools 1.2</title><content type='html'>Hace unos meses estuve buscando un calendario en &lt;b&gt;javascript&lt;/b&gt; que funcionara con &lt;b&gt;mootools&lt;/b&gt; y que fuese sencillo de implementar.&lt;br /&gt;Después de buscar, me encontré en el blog de &lt;a href="http://www.anieto2k.com/2007/10/29/calendario-para-mootools-y-jquery/"&gt;Andrés Nieto&lt;/a&gt;, pero por desgracia los links de los ejemplos no funcionaban y de nuevo me vi buscando por google, pero al final obtuve la recompensa, lo conseguí encontrar.&lt;br /&gt;Pero no es oro todo lo que reluce y al probarlo vi que solo funcionaba para la versión 1.1 de &lt;b&gt;mootools&lt;/b&gt;, así que me puse manos a la obra y lo arreglé para que funcionara para la versión 1.2&lt;br /&gt;&lt;br /&gt;La implementación es muy simple:&lt;br /&gt;&lt;pre&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Calendario para mootools 1.2&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;link href="calendario.css" el="stylesheet" type ="text/css" media="screen" /&amp;gt;&lt;br /&gt;&amp;lt;script src="mootools.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="calendario.js" type="text/javascript"&amp;gt;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;input class="ncalendar" name="calen" maxlength="20" id="calen" type="text" value="Seleccione una fecha" /&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;Os dejo un link con el ejemplo y otro para descargar el &lt;b&gt;calendario con mootools&lt;/b&gt;&lt;br /&gt;&lt;div class="ejercicio"&gt;&lt;div class="zip"&gt;&lt;a href="http://code.google.com/p/ncalendar/"&gt;descargar&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-3916132146478558902?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/3916132146478558902/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=3916132146478558902' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/3916132146478558902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/3916132146478558902'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/11/calendario-con-mootools-12.html' title='Calendario con mootools 1.2'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-3023552266630466049</id><published>2008-11-25T17:21:00.022+01:00</published><updated>2008-12-10T10:08:09.863+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><title type='text'>Capturar variables con javascript desde una url</title><content type='html'>No hace mucho me surgió la idea de realizar un formulario en &lt;b&gt;HTML&lt;/b&gt; enviando las variables mediante &lt;b&gt;POST&lt;/b&gt; a un &lt;b&gt;php&lt;/b&gt; donde realizaba el envio de e-mail &lt;i&gt;(hasta aquí algo normal)&lt;/i&gt;.&lt;br/&gt;Normalmente el formulario lo realizaba integramente con &lt;b&gt;php&lt;/b&gt; y se cargaba sobre si mismo, o bien lo redireccionaba a otro &lt;b&gt;html&lt;/b&gt; indicando el estado de su envio.&lt;br/&gt;La idea que me surgió es usar la segunda opción de redirigir a otro documento enviando variables mediante &lt;b&gt;GET&lt;/b&gt; y &lt;a href="http://siciliangirl.blogspot.com/2008/11/capturar-variables-con-javascript-desde.html"&gt;&lt;b&gt;capturar variables con javascript desde una url &lt;/b&gt;&lt;/a&gt;, por ejemplo: &lt;em&gt;http://www.undominio.com/formulario.html?estado=ok&lt;/em&gt;.&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;A continuación propongo un ejemplo usando &lt;b&gt;mootools&lt;/b&gt;, por el cual podremos recibir una cantidad &lt;em&gt;n&lt;/em&gt; de variables:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/* Capturamos la variable enviado mediante GET con JavaScript */&lt;br /&gt;window.addEvent('domready', function() {&lt;br /&gt; var estado = window.location.search;&lt;br /&gt; if((/^\?/).test(estado)){&lt;br /&gt;  var resultado = estado.substr(1,estado.length)+'&amp;'; //Quitamos&amp;#160;&amp;#160;? y añadimos &amp; al final&lt;br /&gt;  var variables = resultado.split(/\=\w+\&amp;/);&lt;br /&gt;  var contenido = resultado.split(/\w+\=/);&lt;br /&gt;  for(var i=0; i&amp;lt;contenido.length; i++) contenido[i] = contenido[i].substr(0,contenido[i].length-1);&lt;br /&gt;  contenido.shift(); //Quitamos el valor de la primera posición del array al estar vacio&lt;br /&gt;  &lt;br /&gt;  /* OPCIONAL: ejemplo que muestra una capa indicando el envío correcto o no */&lt;br /&gt;  var capa = $('estado');&lt;br /&gt;  if(variables[0]=='estado' &amp;&amp; contenido[0]=='ok'){&lt;br /&gt;   capa.addClass('enviado'); //Cambiamos la CLASS a ENVIADO&lt;br /&gt;   capa.setStyle('visibility','visible'); //Visible, por defecto hidden&lt;br /&gt;   capa.setStyle('height','16px');&lt;br /&gt;   capa.setStyle('padding','10px');&lt;br /&gt;   capa.setStyle('margin-bottom','20px');&lt;br /&gt;   capa.set('html','Se ha enviado correctamente el formulario de contacto.'); //Ponemos el texto&lt;br /&gt;  }else if(variables[0]=='estado' &amp;&amp; contenido[0]=='ko'){&lt;br /&gt;   capa.addClass('error'); //Cambiamos la CLASS a ERROR&lt;br /&gt;   capa.setStyle('visibility','visible'); //Visible, por defecto hidden&lt;br /&gt;   capa.setStyle('height','16px');&lt;br /&gt;   capa.setStyle('margin-bottom','20px');&lt;br /&gt;   capa.setStyle('padding','10px');&lt;br /&gt;   capa.set('html','Ocurrió un error durante el envio, por favor inténtelo más tarde.'); //Ponemos el texto&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Variables&lt;/b&gt; y &lt;b&gt;contenidos&lt;/b&gt; son dos arrays, el primero contiene el nombre de las variables y el segundo el valor de las variables.&lt;br/&gt;En el comentario donde aparece &lt;b&gt;OPCIONAL&lt;/b&gt;, lo he usado en este &lt;a href="http://siciliangirl.blogspot.com/2008/11/formulario-de-contacto.html" title="SicilianGirl blog de Ricard Catalan"&gt;blog&lt;/a&gt;, y con &lt;b&gt;javascript&lt;/b&gt; oculto i/o muestro el resultado del envío.&lt;br/&gt;&lt;br/&gt;Este pequeño &lt;b&gt;script&lt;/b&gt; tiene muchas más utilidades y solo he mostrado un posible uso, espero que os sirva de ayuda.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-3023552266630466049?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/3023552266630466049/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=3023552266630466049' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/3023552266630466049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/3023552266630466049'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/11/capturar-variables-con-javascript-desde.html' title='Capturar variables con javascript desde una url'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-2311570306284567906</id><published>2008-11-25T10:21:00.005+01:00</published><updated>2009-02-09T12:18:34.835+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='creación web'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='contacto'/><title type='text'>formulario de contacto</title><content type='html'>Rellene el formulario correctamente, y en breve me pondré en contacto con usted:&lt;br /&gt;&lt;i&gt;(Si quiere solicitar información y/o presupuesto para realizar una web, rellene el teléfono correctamente, de lo contrario puede poner ceros si no quiere faciltar esta información)&lt;/i&gt;&lt;br /&gt;&lt;form action="http://www.gruasorion.com/sg/contacto/mail.php" method="post" onsubmit="return validate(this)"&gt;&lt;br /&gt;&lt;input type="text" id="nombre" name="nombre" value="Esriba su nombre *" maxlength="50" onfocus="if(this.value=='Esriba su nombre *')this.value='';" onblur="if(this.value=='')this.value='Esriba su nombre *';"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;input type="text" id="apellido" name="apellido" value="Esriba su apellido *" maxlength="50" onfocus="if(this.value=='Esriba su apellido *')this.value='';" onblur="if(this.value=='')this.value='Esriba su apellido *';"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;input type="text" id="telefono" name="telefono" value="Esriba su teléfono *" maxlength="50" onfocus="if(this.value=='Esriba su teléfono *')this.value='';" onblur="if(this.value=='')this.value='Esriba su teléfono *';"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;input type="text" id="email" name="email" value="Esriba su e-mail *" maxlength="50" onfocus="if(this.value=='Esriba su e-mail *')this.value='';" onblur="if(this.value=='')this.value='Esriba su e-mail *';"/&gt;&lt;br/&gt;&lt;br /&gt;&lt;textarea id="comentario" name="comentario"&gt;Si tiene algún comentario, escríbalo aquí.&lt;/textarea&gt;&lt;br/&gt;* Los datos introducidos solo se usan para el contacto y en ningún momento se facilitan a otras personas.&lt;br/&gt;&lt;br /&gt;&lt;input type="submit" value="Enviar" class="submit" /&gt;&lt;br /&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-2311570306284567906?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/2311570306284567906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/2311570306284567906'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/11/formulario-de-contacto.html' title='formulario de contacto'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-8527421540638450089</id><published>2008-11-24T16:55:00.002+01:00</published><updated>2008-12-10T10:08:35.499+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='safari'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>CSS 3 y Safari 3.1</title><content type='html'>Después de la aparición de Safari 3.1 y posterior, todos aquellos que anhelaban poder aplicar efectos, como sombreado en la tipografía o bien añadir/incrustar una tipografía en un página web, ahora con Safari se ha hecho realidad.&lt;br /&gt;&lt;br /&gt;Lo podéis comprobar desde este mismo &lt;a href="http://siciliangirl.blogspot.com/"&gt;blog&lt;/a&gt;, todo aquel que acceda con Safari, podrá visualizar los 2 efectos antes comentados.&lt;br /&gt;&lt;i&gt;Acualtmente, tanto Opera 9.6 como Firefox 3.0 solo soportan el sombreado de letras en este blog, para poder visualizar al tipografía se requiere Safari&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;En esta web: &lt;a href="http://www.css3.info/"&gt;http://www.css3.info/&lt;/a&gt; tenéis toda la información de las nuevas posibilidades que traerá la nueva versión CSS 3 aún en desarrollo e implementación y que navegadores tienen compatibilidad.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-8527421540638450089?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/8527421540638450089/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=8527421540638450089' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/8527421540638450089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/8527421540638450089'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/11/css-3-y-safari-31.html' title='CSS 3 y Safari 3.1'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-6480063636537264378</id><published>2008-11-24T15:59:00.005+01:00</published><updated>2008-12-04T13:34:18.920+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sobre mi'/><title type='text'>sobre mi</title><content type='html'>&lt;img src="http://www.gruasorion.com/sg/images/sicilian-girl.gif" alt="Sicilian Girl" title="Sicilian Girl" /&gt;&lt;br /&gt;Mi nombre es &lt;b&gt;Ricard Catalán Díaz&lt;/b&gt;.&lt;br /&gt;Nací en Barcelona (Spain) en 1980, y actualmente vivo en Sant Cugat del Vallés con mi novia Gabriella &lt;i&gt;(la auténtica SicilianGirl)&lt;/i&gt; y trabajo en la empresa Sercom.&lt;br /&gt;&lt;br /&gt;Principalmente desarrollo aplicaciones web, con XHTML, CSS 2.1 y CSS 3, PHP5, javascript y &lt;a href="http://www.mootools.net/" title="a javascript framework"&gt;mootools&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Mis conocimientos son:&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;Estudios:&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;  &lt;dd&gt;Ciclo Formativo Superior en Gráfica Publicitaria, año 2002&lt;/dd&gt;    &lt;dd&gt;Curso de Flash para diseñadores, año 2004&lt;/dd&gt;    &lt;dd&gt;Ciclo Formativo Superior en Desarrollo de Aplicaciones Informáticas, 2008&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;Experiencia:&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;  &lt;dd&gt;2007 - 2008 en Sercom, como maquetador y programador web&lt;/dd&gt;    &lt;dd&gt;2006 - 2007 en varias empresas, como diseñador gráfico y maquetador web&lt;/dd&gt;&lt;dd&gt;2002 - 2003 en Originalets, como diseñador gráfico trabajando conjuntamente para el ajuntamiento de Sant Cugat del Vallés&lt;br /&gt;&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;Idiomas:&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;  &lt;dd&gt;Castellano (nativo)&lt;/dd&gt;    &lt;dd&gt;Catalán (nativo)&lt;/dd&gt;    &lt;dd&gt;Inglés (medio)&lt;/dd&gt;    &lt;dd&gt;Italiano (bajo)&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;Programación:&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;  &lt;dd&gt;PHP 5 &lt;i&gt;(Orientado a objetos)&lt;/i&gt;&lt;/dd&gt; &lt;dd&gt;SQL &lt;i&gt;(mysql y oracle)&lt;/i&gt;&lt;/dd&gt; &lt;dd&gt;Javascript 1.5&lt;/dd&gt; &lt;dd&gt;Framework mootools 1.2&lt;/dd&gt; &lt;dd&gt;Ruby y el framework Ruby on Rails&lt;/dd&gt; &lt;dd&gt;ActionScript 2.0 y 3.0&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;Maquetación:&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;  &lt;dd&gt;Xhtml 1.1 &lt;i&gt;(Cumpliendo el estandar W3C)&lt;/i&gt;&lt;/dd&gt; &lt;dd&gt;CSS 2.1 y 3.0&lt;/dd&gt; &lt;dd&gt;XML 1.0&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-6480063636537264378?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/6480063636537264378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/6480063636537264378'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2008/11/sobre-mi.html' title='sobre mi'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author></entry><entry><id>tag:blogger.com,1999:blog-2571831738557073183.post-214166384024439635</id><published>2006-12-09T13:24:00.000+01:00</published><updated>2008-11-24T15:42:50.980+01:00</updated><title type='text'>Bienvenidos a mi Blog "SicilianGirl"</title><content type='html'>En este blog hablaré sobre nuevas tecnologías del desarrollo web y eso llamado web 2.0 :&lt;br /&gt;&lt;div&gt;&lt;br /&gt; &lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Xhtml&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;CSS&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Javascript&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;PHP&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Ruby&lt;/li&gt;&lt;br /&gt; &lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Espero que sea del agrado de todos,&lt;br /&gt;un saludo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2571831738557073183-214166384024439635?l=siciliangirl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://siciliangirl.blogspot.com/feeds/214166384024439635/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2571831738557073183&amp;postID=214166384024439635' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/214166384024439635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2571831738557073183/posts/default/214166384024439635'/><link rel='alternate' type='text/html' href='http://siciliangirl.blogspot.com/2006/12/inicio-del-blog.html' title='Bienvenidos a mi Blog &quot;SicilianGirl&quot;'/><author><name>Katan</name><uri>http://www.blogger.com/profile/15539084433612342521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_Y0tgqd2TsRs/S9XCY5aPjoI/AAAAAAAAAEM/GSSN2jnS0FY/S220/ricard-catalan.png'/></author><thr:total>2</thr:total></entry></feed>
