<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Manel García &#187; PHP</title>
	<atom:link href="http://manelgarcia.com/category/recursos-web/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://manelgarcia.com</link>
	<description>Desarrollo de sitios web para ganar dinero online</description>
	<lastBuildDate>Sat, 14 Jan 2012 23:18:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Cómo Aprender a Programar Orientado a Objetos (POO) en PHP</title>
		<link>http://manelgarcia.com/recursos-web/php/como-aprender-a-programar-orientado-a-objetos-poo-en-php/</link>
		<comments>http://manelgarcia.com/recursos-web/php/como-aprender-a-programar-orientado-a-objetos-poo-en-php/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 13:57:18 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[poo]]></category>
		<category><![CDATA[programacion php]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=1390</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/php/como-aprender-a-programar-orientado-a-objetos-poo-en-php/"><img align="left" hspace="5" width="80" height="80" src="http://manelgarcia.com/wp-content/uploads/2011/04/1_itemPreview-150x150.jpg" class="alignleft wp-post-image tfe" alt="" title="1_itemPreview" /></a>Yo en general me considero lo que algunos llaman &#8216;switcher&#8216; que viene a decir que igual te puedo diseñar la interfaz de tu sitio y maquetarla pero puedo cambiar a rol de programador y desarrollar un panel de administración para gestionar tu sitio, intento tocar un poco de todo, me gusta mucho el marketing online [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Yo en general me considero lo que algunos llaman &#8216;<em>switcher</em>&#8216; que viene a decir que igual te puedo diseñar la interfaz de tu sitio y maquetarla pero puedo cambiar a rol de programador y desarrollar un panel de administración para gestionar tu sitio, intento tocar un poco de todo, me gusta mucho el <a href="http://manelgarcia.com/category/publicidad-marketing-online/"><strong>marketing online</strong></a> así que también me dejo mucho tiempo en leer y educarme sobre cuales son las mejores estrategias de marketing online y cómo aplicarlas a mis proyectos, medirlas etc..</p>
<p>Al final acaban siendo muchas facetas, la mayoría de ellas a nivel básico me muevo muy cómodamente, pero claro, tengo limitaciones. <strong>No soy experto en nada</strong>.</p>
<p>Todo eso lo cuento porque recientemente vengo desarrollando un <span style="text-decoration: underline;">Gestor de contenidos para mantener sitios nicho</span> e intentar <a href="http://ganardineroadsense.net">generar unos ingresos pasivos</a>. Pensé que la mejor manera de hacer eso era hacerlo lo más escalable posible, para poder hacer crecer la estructura de mi CMS sin mayores problemas. Que quiero añadir un módulo de newsletter, lo añado etc..</p>
<p>Así que he entrado en el mundo de los objetos, classes, metodos, propiedades, herencias etc.. Si bien ya lo había tocado, nunca había aprendido realmente cómo funciona y el motivo para usar una manera u otra los métodos por ejemplo.</p>
<p><a href="http://manelgarcia.com/wp-content/uploads/2011/04/1_itemPreview.jpg"><img class="aligncenter size-full wp-image-1391" title="1_itemPreview" src="http://manelgarcia.com/wp-content/uploads/2011/04/1_itemPreview.jpg" alt="" width="590" height="360" /></a></p>
<h2>Aprender a Programar PHP Orientado a Objetos</h2>
<p>Soy de los que les gusta investigar y hacerse las cosas uno mismo, me gusta estar 2 horas leyendo posts y buscando cual es la manera de hacer &#8216;X&#8217;, pero ultimamente estoy descubriendo <strong>el vídeo cómo método definitivo para aprender</strong>, en mi caso, a programar orientado a objetvos.</p>
<p>Desde hace tiempo que sigo bastante de cerca los tutoriales que en <a href="http://net.tutsplus.com/">NetTuts</a> escribe <a href="http://jeffrey-way.com/">Jeffrey Way</a>, y es que me gusta mucho la manera que tiene de explicar a programar, cómo lo plantea, y los ejemplos sencillos pero entendedores que usa.</p>
<p>Y ayer descubrí que él por su cuenta ha grabado muchos videotutoriales que ha colgado en el <a href="http://marketplace.tutsplus.com/?ref=manelgarcia">marketplace de Tutsplus</a>. Habla desde <a href="http://marketplace.tutsplus.com/item/simple-development-with-jquery-mobile/144920?ref=manelgarcia">cómo desarrollar sitios móviles con jQuery</a> a cómo <a href="http://marketplace.tutsplus.com/item/css-noob-to-ninja-videos-14/122040?ref=manelgarcia"><strong>convertirse en in ninja del CSS</strong></a> desde cero, cómo programar usando vim como IDE&#8230; el chaval se lo curra y mucho, a parte hay que decir que los precios son muy módicos desde $3 hasta $9 puedes disponer de un perfecto tutorial para <a href="http://marketplace.tutsplus.com/item/-objectoriented-programming-in-php-videos-14/122845?ref=manelgarcia"><strong>aprender a programar en php orientado a objetos</strong></a>.</p>
<p>Pues en el caso de la série de videotutoriales consta de 11 capítulos de entre 10 y 20 minutos cada capítulo donde va explicando las características de las clases, la diferencia entre objeto y clases, la capacidad de heredar clases, la diferencia entre métodos o propiedades estáticas y no estáticas.. muy interesante la verdad.</p>
<p>Eso sí, el único contra, es que está en inglés, así que si no estas familiarizado con el inglés puede que algo te suene a chino, aunque hay que decir que con los ejemplos y el estar constantemente escribiendo lo que explica, aunque luego lo borre, se hace bastante explicatorio por sí mismo.</p>
<p><a href="http://marketplace.tutsplus.com/item/-objectoriented-programming-in-php-videos-14/122845?ref=manelgarcia">Enlace a los vídeos</a></p>
<div class="shr-publisher-1390"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/php/como-aprender-a-programar-orientado-a-objetos-poo-en-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cómo Leer Archivos Excel con PHP</title>
		<link>http://manelgarcia.com/recursos-web/php/como-leer-archivos-excel-con-php/</link>
		<comments>http://manelgarcia.com/recursos-web/php/como-leer-archivos-excel-con-php/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 11:49:25 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[importar]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=1380</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/php/como-leer-archivos-excel-con-php/"><img align="left" hspace="5" width="80" src="http://manelgarcia.com/wp-content/uploads/2011/04/leer-excel-con-php.png" class="alignleft wp-post-image tfe" alt="" title="leer-excel-con-php" /></a>Para un proyectito que estoy haciendo necesito poder leer archivos excel importados previamente así que he empezado la búsqueda de una clase limpia para poder leer facilmente archivos excel con php. A mi ya me pasaba por la cabeza empezar con un file_get_contents() y que corrieran los explodes() como cerveza en fiesta mayor pero sabía [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://manelgarcia.com/wp-content/uploads/2011/04/leer-excel-con-php.png"><img class="aligncenter size-full wp-image-1381" title="leer-excel-con-php" src="http://manelgarcia.com/wp-content/uploads/2011/04/leer-excel-con-php.png" alt="" width="462" height="71" /></a></p>
<p>Para un proyectito que estoy haciendo necesito poder leer archivos excel importados previamente así que he empezado la búsqueda de una clase limpia para poder <strong>leer facilmente archivos excel con php</strong>.</p>
<p>A mi ya me pasaba por la cabeza empezar con un file_get_contents() y que corrieran los explodes() como cerveza en fiesta mayor pero sabía que acabaría mal, así que mejor buscar algo que alguien ya ha hecho no?</p>
<p>La solución es una clase PHP que podemos <strong>descargar gratuitamente de google code</strong> y que en un plis plas nos permitirá poder leer archivos excel.</p>
<p><a href="http://code.google.com/p/php-excel-reader/downloads/list"><strong>Podéis descargar la clase desde aquí.</strong></a></p>
<p>¿Cómo se usa? Muy fácil cuando la descargas ya dispone de un archivo de ejemplo donde vemos cómo extrae los datos de un archivo excel. Es algo cómo eso:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
error_reporting(E_ALL ^ E_NOTICE);
require_once 'excel_reader2.php';
$data = new Spreadsheet_Excel_Reader(&quot;example.xls&quot;);
?&gt;
&lt;html&gt;
&lt;head&gt;
&lt;style&gt;
table.excel {
	border-style:ridge;
	border-width:1;
	border-collapse:collapse;
	font-family:sans-serif;
	font-size:12px;
}
table.excel thead th, table.excel tbody th {
	background:#CCCCCC;
	border-style:ridge;
	border-width:1;
	text-align: center;
	vertical-align:bottom;
}
table.excel tbody th {
	text-align:center;
	width:20px;
}
table.excel tbody td {
	vertical-align:bottom;
}
table.excel tbody td {
    padding: 0 3px;
	border: 1px solid #EEEEEE;
}
&lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;?php echo $data-&gt;dump(true,true); ?&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<div class="shr-publisher-1380"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/php/como-leer-archivos-excel-con-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comprobar en PHP si una Cadena contiene una Subcadena</title>
		<link>http://manelgarcia.com/recursos-web/php/comprobar-en-php-si-una-cadena-contiene-una-subcadena/</link>
		<comments>http://manelgarcia.com/recursos-web/php/comprobar-en-php-si-una-cadena-contiene-una-subcadena/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 10:42:13 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[comparar cadenas]]></category>
		<category><![CDATA[recursos]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=1283</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/php/comprobar-en-php-si-una-cadena-contiene-una-subcadena/"><img align="left" hspace="5" width="80" height="80" src="http://manelgarcia.com/wp-content/uploads/2010/10/php-150x150.png" class="alignleft wp-post-image tfe" alt="" title="php" /></a>Una de las cosas que más he buscado en internet sobre PHP es cómo saber si una cadena contiene otra subcadena, si, lo sé, es una chorrada, pero se me va de la cabeza cada vez que lo quiero usar, así que para uso personal y para compartir con vosotros os dejo una manera eficiente [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://manelgarcia.com/wp-content/uploads/2010/10/php.png"><img class="aligncenter size-medium wp-image-1284" title="php" src="http://manelgarcia.com/wp-content/uploads/2010/10/php-300x195.png" alt="" width="300" height="195" /></a>Una de las cosas que más he buscado en internet sobre <a href="http://manelgarcia.com/category/recursos-web/php/"><strong>PHP</strong></a> es <strong>cómo saber si una cadena contiene otra subcadena</strong>, si, lo sé, es una chorrada, pero se me va de la cabeza cada vez que lo quiero usar, así que para uso personal y para compartir con vosotros os dejo una manera eficiente y rápida de comprobar en PHP si una cadena contiene cierta subcadena o ciertos carácteres es la siguiente.</p>
<pre class="brush: php; title: ; notranslate">
$cadena1 = &quot;manelgarcia&quot;;
$cadena2 = &quot;manel&quot;;

if( strpos( $cadena1, $cadena2 ) !== false )	echo 'Síp!';
else echo 'Nop';
</pre>
<p><a href="http://miquelcamps.com/"><strong>Miquel Camps</strong></a> nos propone otra forma de hacer exactamente lo mismo, en este caso, usando la función <a href="http://php.net/manual/en/function.strstr.php">strstr()</a>, por ejemplo:</p>
<pre class="brush: php; title: ; notranslate">
$cadena1 = “manelgarcia”;
$cadena2 = “manel”;
$resultado = strstr($cadena1,$cadena2);
</pre>
<div class="shr-publisher-1283"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/php/comprobar-en-php-si-una-cadena-contiene-una-subcadena/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Cómo Generar un Password Aleatorio en PHP</title>
		<link>http://manelgarcia.com/recursos-web/php/como-generar-un-password-aleatorio-en-php/</link>
		<comments>http://manelgarcia.com/recursos-web/php/como-generar-un-password-aleatorio-en-php/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 08:46:31 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=1205</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/php/como-generar-un-password-aleatorio-en-php/"><img align="left" hspace="5" width="80" src="http://www.cksinfo.com/clipart/construction/tools/locks/lock.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Sencillo y útil función en PHP para generar contraseñas aleatorias. Muy útil cuando queremos crear un formulario de registro lo más sencillo posible, dódne el password se genera automáticamente y se envía por e-mail. En la función no se utilizan los carácteres &#8216;l&#8217; (ele) e 1 (uno) debido a su similitud ya que podrías causar [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="alignleft" style="margin-right:15px;" src="http://www.cksinfo.com/clipart/construction/tools/locks/lock.png" alt="" width="150" height="150" />Sencillo y útil función en <a href="http://manelgarcia.com/category/recursos-web/php/"><strong>PHP</strong></a> para generar contraseñas aleatorias. Muy útil cuando queremos crear un formulario de registro lo más sencillo posible, dódne el password se genera automáticamente y se envía por e-mail.</p>
<p>En la función no se utilizan los carácteres &#8216;l&#8217; (ele) e 1 (uno) debido a su similitud ya que podrías causar confusión al usuario.</p>
<h2></h2>
<h2>Función PHP Para Generar Contraseñas Aleatorias</h2>
<pre class="brush: php; title: ; notranslate">
function generarPassword($tamano) {
	$permitidos = &quot;234567890abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
	$i = 0;
	$password = &quot;&quot;;
	while ($i &lt;= $tamano) {
		$password .= $permitidos{mt_rand(0,strlen($permitidos))};
		$i++;
	}
	return $password;
}
</pre>
<p>Para definir el número de carácteres que queremos el password sólo debemos pasar dicho número cómo parámetro en la función, así pues su llamada sería algo así:</p>
<pre class="brush: php; title: ; notranslate">
$password = generarPassword(8);
echo &quot;Contraseña: $password&quot;;
</pre>
<div class="shr-publisher-1205"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/php/como-generar-un-password-aleatorio-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tengo Acortador de ULRs Propio</title>
		<link>http://manelgarcia.com/recursos-web/php/tengo-acortador-de-ulrs-propio/</link>
		<comments>http://manelgarcia.com/recursos-web/php/tengo-acortador-de-ulrs-propio/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 09:08:46 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[acortador url]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[yourls]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=1176</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/php/tengo-acortador-de-ulrs-propio/"><img align="left" hspace="5" width="80" src="http://manelgarcia.com/wp-content/uploads/2010/07/manelco.jpg" class="alignleft wp-post-image tfe" alt="" title="manelco" /></a>¡Sí! aprovechando la salida de los dominios .co me he decidido por comprar manel.co y lo usaré cómo acortador de urls. Para crear el acortador de url he usado el script gratuito YOURLS, un senzillo script escrito en PHP y MySQL que te permite crear links con redirecciones 301. Script Para Crear URLs Cortas: YOURLS [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://manelgarcia.com/wp-content/uploads/2010/07/manelco.jpg"><img class="alignleft size-full wp-image-1177" style="margin-right:15px;" title="manelco" src="http://manelgarcia.com/wp-content/uploads/2010/07/manelco.jpg" alt="" width="242" height="77" /></a>¡Sí! aprovechando la salida de los <strong>dominios .co</strong> me he decidido por comprar <strong>manel.co</strong> y lo usaré cómo <strong>acortador de urls</strong>. Para crear el acortador de url he usado el script gratuito <a href="http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBUQFjAA&amp;url=http%3A%2F%2Fyourls.org%2F&amp;ei=lwhMTOeLFMii4AaPgK2aDA&amp;usg=AFQjCNGXqesxp4ZAzjUGaY9FOfN9kI3Vig&amp;sig2=fOSsqP_5sECBHJ0bboaojA" target="_blank"><strong>YOURLS</strong></a>, un senzillo script escrito en <strong>PHP y MySQL</strong> que te permite crear links con r<strong>edirecciones 301</strong>.</p>
<h2>Script Para Crear URLs Cortas: YOURLS</h2>
<p style="text-align: center;"><img class="aligncenter" src="http://sites.google.com/site/yourlsproject/_/rsrc/1242072622148/Home/yourls-logo.png" alt="" width="201" height="90" /></p>
<p><a href="http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBUQFjAA&amp;url=http%3A%2F%2Fyourls.org%2F&amp;ei=lwhMTOeLFMii4AaPgK2aDA&amp;usg=AFQjCNGXqesxp4ZAzjUGaY9FOfN9kI3Vig&amp;sig2=fOSsqP_5sECBHJ0bboaojA" target="_blank">YOURLS</a> cómo decía es un script gratuito para crear acortadores de URL. Algunas de las características que me han gustado:</p>
<ul>
<li>Dispone de una <strong>API</strong> para integrarlo con otros servicios</li>
<li>Son <strong>redirecciones 301</strong>, por lo tanto, transmiten link juice.</li>
<li>Dispone de <strong>estadísticas</strong> de clicks, país de procedencia, o url de procedencia entre otros.</li>
</ul>
<p><a href="http://manelgarcia.com/wp-content/uploads/2010/07/Captura-de-pantalla-2010-07-25-a-las-11.46.36.png"><img class="alignleft size-medium wp-image-1178" title="Captura de pantalla 2010-07-25 a las 11.46.36" src="http://manelgarcia.com/wp-content/uploads/2010/07/Captura-de-pantalla-2010-07-25-a-las-11.46.36-300x155.png" alt="" width="300" height="155" /></a><a href="http://manelgarcia.com/wp-content/uploads/2010/07/Captura-de-pantalla-2010-07-25-a-las-11.46.45.png"><img class="alignleft size-medium wp-image-1179" title="Captura de pantalla 2010-07-25 a las 11.46.45" src="http://manelgarcia.com/wp-content/uploads/2010/07/Captura-de-pantalla-2010-07-25-a-las-11.46.45-300x149.png" alt="" width="300" height="149" /></a></p>
<h2></h2>
<h2></h2>
<h2></h2>
<h2></h2>
<h2>Cómo Crear Tu Propio Acortador de URL</h2>
<ul>
<li>Necesitas un hosting que acepte PHP y MySQL</li>
<li>Necesitas un dominio que esté apuntando al Hosting</li>
<li><a href="http://code.google.com/p/yourls/downloads/list" target="_blank"><strong>Descargas el script YOURLS</strong></a></li>
<li>Lo subes al FTP y sigues los pasos del archivo README.html</li>
</ul>
<p>Hecho! Ya tienes tu acortador de URLS propio funcionando.</p>
<div class="shr-publisher-1176"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/php/tengo-acortador-de-ulrs-propio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Administrador de Archivos Via Web Open Source: KCFinder</title>
		<link>http://manelgarcia.com/recursos-web/php/administrador-de-archivos-via-web-open-source-kcfinder/</link>
		<comments>http://manelgarcia.com/recursos-web/php/administrador-de-archivos-via-web-open-source-kcfinder/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 07:00:27 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[archivos]]></category>
		<category><![CDATA[fckeditor]]></category>
		<category><![CDATA[kcfinder]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[tinymce]]></category>
		<category><![CDATA[wysiwyg]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=1101</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/php/administrador-de-archivos-via-web-open-source-kcfinder/"><img align="left" hspace="5" width="80" src="http://www.webresourcesdepot.com/wp-content/uploads/kcfinder-web-file-manager.gif" class="alignleft wp-post-image tfe" alt="" title="" /></a>KCFinder es un administrador de archivos, donde podremos suir archivos, borrarlos, crear carpetas para categorizar etc.. open cource, que podemos descargar de manera gratuita y usar en nuestro sitio. El script está creado con PHP y es un muy buen recurso para nuestros proyectos. El script, es fácil de instalar y tiene una cuidada interfaz [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://kcfinder.sunhater.com/" target="_blank"><strong>KCFinder</strong></a> es un <strong>administrador de archivos</strong>, donde podremos suir archivos, borrarlos, crear carpetas para categorizar etc.. open cource, que podemos descargar de manera gratuita y usar en nuestro sitio. El script está <strong>creado con PHP</strong> y es un muy buen recurso para nuestros proyectos.</p>
<p><img class="aligncenter" src="http://www.webresourcesdepot.com/wp-content/uploads/kcfinder-web-file-manager.gif" alt="" width="480" height="266" /></p>
<p>El script, es<strong> fácil de instalar</strong> y tiene una cuidada <strong>interfaz en AJAX</strong>. A parte es muy<strong> fácil de integrar con editores WYSIWYG tipo FCKEditor o TinyMCE</strong> (el mismo que uso yo para mis proyectos web, así cómo <strong>WordPress</strong> para su administración de publicación de contenidos).</p>
<p>Dispone de un menu cuando clicamos con el menu derecho que nos facilita mucho el trabajo, a parte dispone de una funcion tipo clipboard, donde podremos copiar y pegar archivos cómo si del escritorio se tratara.</p>
<div class="shr-publisher-1101"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/php/administrador-de-archivos-via-web-open-source-kcfinder/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cómo Mostrar el Número de Followers en Texto Plano Usando PHP</title>
		<link>http://manelgarcia.com/recursos-web/php/mostrar-numero-followers-texto-plano-usando-php/</link>
		<comments>http://manelgarcia.com/recursos-web/php/mostrar-numero-followers-texto-plano-usando-php/#comments</comments>
		<pubDate>Wed, 12 May 2010 08:30:00 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[followers]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=1024</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/php/mostrar-numero-followers-texto-plano-usando-php/"><img align="left" hspace="5" width="80" src="http://www.amitbhawani.com/blog/Images/T/Twitter-Logo.PNG" class="alignleft wp-post-image tfe" alt="" title="" /></a>Si en el anterior artículo explicaba cómo mostrar el número de suscritos a feedburner en texto plano con PHP ahora es el turno de aprender a mostrar el número de seguidores que tenemos en Twitter en texto plano haciendo uso también de PHP. Cómo el anterior post, en el caso de mi blog estoy usando [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="alignleft" style="margin-right:12px;" src="http://www.amitbhawani.com/blog/Images/T/Twitter-Logo.PNG" alt="" width="191" height="191" />Si en el anterior artículo explicaba <a href="http://manelgarcia.com/recursos-web/php/como-mostrar-el-numero-de-suscritos-a-feedburner-en-texto-plano-con-php/"><strong>cómo mostrar el número de suscritos a feedburner en texto plano con PHP</strong></a> ahora es el turno de aprender a <strong>mostrar el número de seguidores que tenemos en Twitter</strong> en texto plano haciendo uso también de <strong>PHP</strong>.</p>
<p>Cómo el anterior post, en el caso de mi <a href="http://manelgarcia.com">blog</a> estoy usando el <em>chicklet</em> o <em>badge</em> que te perite añadir gratuitamente <a href="http://www.twittercounter.com" target="_blank">twittercounter</a>, pero cómo pasa en muchos otros blogs, también es posible <strong>mostrado el número de followers en texto plano</strong> para así poder darle el estilo que nosotros queramos y se adapte al diseño de nuestro sitio.</p>
<p>En este caso las herramientas que vamos a usar principalmente son: la API de twitter y la classe que viene por defecto de wordpress class-snoopy.php cuya utilidad es hacer peticiones remotas a otros servidores:</p>
<h2>Función PHP Para Mostrar Número de Followers</h2>
<pre class="brush: php; title: ; notranslate">
function num_followers($username)
{

// incluyimos la classe
require_once(ABSPATH . 'wp-includes/class-snoopy.php');

// cargamos la opcion
$twitter = get_option(&quot;twitterfollowers&quot;);
// definimos la urld e la API
$api = &quot;http://twitter.com/statuses/user_timeline/&quot;.$username.&quot;.json?count=1&quot;;

// ha caducado?
if ($twitter['lastcheck'] &lt; ( mktime() - 60 ) )
{
$snoopy = new Snoopy;
$result = $snoopy-&gt;fetch($api);

if ($result)
{
// sacamos los datos en formato json
$data = json_decode($snoopy-&gt;results,true);
$twitter['followers'] = $data[0]['user']['followers_count'];
// actualizamos el valor de la opcion
update_option('twitterfollowers',$twitter);
}
}
// devolvemos el valor
return $twitter['followers'];
}
</pre>
<p>Es importante que pases de <strong>parámetro de la función el nombre de usuario</strong> en Twitter.</p>
<h2>Uso de La Función</h2>
<pre class="brush: php; title: ; notranslate">
&lt;a href=&quot;http://twitter.com/manelgarcia&quot;&gt;
Soy @manelgarcia y tengo &lt;?php echo num_followers(&quot;manelgarcia&quot;) ?&gt; followers en Twitter
&lt;/a&gt;
</pre>
<div class="shr-publisher-1024"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/php/mostrar-numero-followers-texto-plano-usando-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cómo Mostrar El Número de Suscritos a Feedburner En Texto Plano con PHP</title>
		<link>http://manelgarcia.com/recursos-web/php/como-mostrar-el-numero-de-suscritos-a-feedburner-en-texto-plano-con-php/</link>
		<comments>http://manelgarcia.com/recursos-web/php/como-mostrar-el-numero-de-suscritos-a-feedburner-en-texto-plano-con-php/#comments</comments>
		<pubDate>Wed, 12 May 2010 07:00:06 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[count]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[feedburner]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=1019</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/php/como-mostrar-el-numero-de-suscritos-a-feedburner-en-texto-plano-con-php/"><img align="left" hspace="5" width="80" src="http://chrisbaskind.com/wp-content/uploads/2009/01/feedburner-logo-350.jpg" class="alignleft wp-post-image tfe" alt="" title="" /></a>Cómo todos me imagino ya sabréis Feedburner es el gestor de feeds RSS más popular, comprado hace tiempo ya por Google se dedican a gestionar los feeds de tus blogs enlazandolos con tu cuenta de Google para poder acceder cómodamente. En muchos blogs, este mismo por ejemplo, hago uso de la herramienta FeedCount, o lo [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="alignleft" style="margin-right: 12px;" src="http://chrisbaskind.com/wp-content/uploads/2009/01/feedburner-logo-350.jpg" alt="" width="136" height="146" />Cómo todos me imagino ya sabréis <strong>Feedburner</strong> es el <strong>gestor de feeds RSS más popular</strong>, comprado hace tiempo ya por Google se dedican a gestionar los feeds de tus blogs enlazandolos con tu cuenta de Google para poder acceder cómodamente.</p>
<p>En muchos blogs, este mismo por ejemplo, hago uso de la herramienta FeedCount, o lo que ellos llaman el <em>chicklet</em>, dónde tal y cómo podemos ver en la foto, te permite crear una especia de <em>badge</em> donde <strong>mostrar el número de suscritos en tu blog</strong>.</p>
<p><a href="http://manelgarcia.com/wp-content/uploads/2010/05/Captura-de-pantalla-2010-05-11-a-las-13.44.01.png"><img class="aligncenter size-full wp-image-1020" title="Captura de pantalla 2010-05-11 a las 13.44.01" src="http://manelgarcia.com/wp-content/uploads/2010/05/Captura-de-pantalla-2010-05-11-a-las-13.44.01.png" alt="" width="508" height="484" /></a></p>
<p>Hasta aquí todo bien, pero que hacemos si queremos <strong>mostrar el número de suscritos en formato texto para poder darle estilos con CSS</strong>? Seguro que también lo habéis visto en muchos sitios por ejemplo: <strong>smashingmagazine</strong> o <strong>nettuts</strong>.</p>
<p><a href="http://manelgarcia.com/wp-content/uploads/2010/05/screen.jpg"><img class="aligncenter size-full wp-image-1021" title="screen" src="http://manelgarcia.com/wp-content/uploads/2010/05/screen.jpg" alt="" width="481" height="286" /></a></p>
<p>Podemos hacer esto con <strong>PHP</strong> usando la función <strong>cURL</strong> y la API awareness que nos pone a disposición Feedburner, con el siguiente código que podemos guardar en un archivo externo, por ejemplo, feedburner.php:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
// lugar donde guardaremos el archivo txt con el numero de suscritos
$feed_file = '/home/termina/tu/ruta';

 // cada cuanto tiempo queremos actualizar el archivo txt? en minutos
$feed_timer = '240';

if (!file_exists($feed_file)) {
    $time = time() - ($feed_timer * 60) - 60;
    touch($feed_file, $time); // creamos el archivo y le ponemos en tiempo pasado para que se actualize
}

if (filemtime($feed_file) + ($feed_timer * 60) &gt; time()) {  //miramos si es antiguo
    $feedcount = file_get_contents($feed_file);
    echo $feedcount;
} else {
    // plantamos la url a explorar
    $whaturl=&quot;https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=AQUI_TU_ID&quot;;

    // iniciamos la sesion curl
    $ch = curl_init();

    // le decimos a curl, que nada de mostrarlo en el navegador, mejor nos lo devuelves.
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // le decimos que url es
    curl_setopt($ch, CURLOPT_URL, $whaturl);

    // cazando contenido
    $data = curl_exec($ch);

    // gracias por todo, cierro conexion
    curl_close($ch);
    $xml = new SimpleXMLElement($data);
    $fb = $xml-&gt;feed-&gt;entry['circulation'];

    // muestro los suscritos
    echo $fb;
    // guardo el archivo en la cache
    fwrite(fopen($feed_file, &quot;w&quot;), $fb);
}
?&gt;
</pre>
<p>Y para mostrar el numerito en sí tan fácil cómo algo cómo eso:</p>
<pre class="brush: php; title: ; notranslate">
&lt;span style=&quot;font-size:14px; color:red;&quot;&gt;&lt;? include 'feedburner.php'; ?&gt;&lt;/span&gt;
</pre>
<div class="shr-publisher-1019"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/php/como-mostrar-el-numero-de-suscritos-a-feedburner-en-texto-plano-con-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Crea Tu Propio Acortador de URLs Con 2 Líneas de PHP y Una Cuenta en Bit.ly</title>
		<link>http://manelgarcia.com/recursos-web/tutorial/crea-tu-propio-acortador-de-urls-con-2-lineas-de-php-y-una-cuenta-en-bit-ly/</link>
		<comments>http://manelgarcia.com/recursos-web/tutorial/crea-tu-propio-acortador-de-urls-con-2-lineas-de-php-y-una-cuenta-en-bit-ly/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 15:09:56 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[acortador url]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[bit.ly]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[url shortener]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=902</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/tutorial/crea-tu-propio-acortador-de-urls-con-2-lineas-de-php-y-una-cuenta-en-bit-ly/"><img align="left" hspace="5" width="80" height="80" src="http://manelgarcia.com/wp-content/uploads/2010/02/bitly-150x150.jpg" class="alignleft wp-post-image tfe" alt="" title="bitly" /></a>Digamos que necesitas o te hace gracia tener tu propio acortador de URL&#8217;s y encima tienes la potra de que las últimas letras de tu nombre son un ccTLD (un dominio de un país) por ejemplo: Benito, pues bien Benito, si te compras el dominio beni.to y te creas una cuenta en bit.ly en un [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><a href="http://manelgarcia.com/wp-content/uploads/2010/02/bitly.jpg"><img class="alignleft size-full wp-image-907" title="bitly" src="http://manelgarcia.com/wp-content/uploads/2010/02/bitly.jpg" alt="" width="250" height="250" /></a>Digamos que necesitas o te hace gracia tener tu propio <strong>acortador de URL&#8217;s</strong> y encima tienes la potra de que las últimas letras de tu nombre son un <strong>ccTLD</strong> (un dominio de un país) por ejemplo: Benito, pues bien Benito, si te compras el dominio beni.to y te creas una cuenta en bit.ly en un plisplas puedes tener un propio acortador de url&#8217;s, sí sí, cómo Google! (http://goo.gl)</p>
<h2>¿Qué es Bit.ly?</h2>
<p><a href="http://bit.ly" target="_blank"><strong>Bit.ly</strong></a> es uno de los más famosos <strong>acortadores de url</strong> que puedes en encontrar en internet actualmente, se usa sobretodo en redes sociales cómo twitter y sus millones de aplicaciones que hay detrás, casi nada.</p>
<h2>¿Para que sirve Bit.ly?</h2>
<p>En <strong>Twitter</strong> por ejemplo sólo puedes &#8220;twittear&#8221; mensajes de hasta 140 carácteres, un acordator de urls te permite ganar carácteres si tu url original es muuuy larga.</p>
<p>También te puede ser útil para <strong>camuflar tus enlaces</strong> si no quieres que la gente vea la url que hay detrás antes de clicar.</p>
<p>Y encima <strong>Bit.ly te genera estadísticas</strong> de tus clics con lo que encima puedes hasta saber quien te está clicando y desde donde.</p>
<h2>El Código PHP</h2>
<p>Recuerda que debes crearte una cuenta en Bit.ly e ir a buscar tu api key <a href="http://bit.ly/account/your_api_key/" target="_blank">aqui</a>.</p>
<pre class="brush: php; title: ; notranslate">
/* como crear tu propio acortador de urls en 2 líneas de php */
function acortarUrl($url,$login,$apikey,$format = 'xml',$version = '2.0.1')
{
	// creamos la url para hacer la peticion a la API
	$uri = 'http://api.bit.ly/shorten?version='.$version.'&amp;longUrl='.urlencode($url).'&amp;login='.$login.'&amp;apiKey='.$apikey.'&amp;format='.$format;
	// cargamos el fichero xml de respuesta
	$xml = simplexml_load_file($uri);
	// devolvemos la variable con la url
	return $xml-&gt;results-&gt;nodeKeyVal-&gt;shortUrl;

}
</pre>
<p>Y para usar el script tan senzillo cómo:</p>
<pre class="brush: php; title: ; notranslate">
/* uso */
define(API_USER,'usuario');
define(API_KEY,'la_api_key_aqui');

$urlcorta = acortarUrl('http://www.manelgarcia.com',API_USER,API_KEY);
echo 'La URL corta es:  '.$urlcorta;
</pre>
<div class="shr-publisher-902"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/tutorial/crea-tu-propio-acortador-de-urls-con-2-lineas-de-php-y-una-cuenta-en-bit-ly/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Tutorial Sobre Como Crear Tu API</title>
		<link>http://manelgarcia.com/recursos-web/php/tutorial-sobre-como-crear-tu-api/</link>
		<comments>http://manelgarcia.com/recursos-web/php/tutorial-sobre-como-crear-tu-api/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 20:53:40 +0000</pubDate>
		<dc:creator>manelgarcia</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Recursos]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://manelgarcia.com/?p=852</guid>
		<description><![CDATA[<a href="http://manelgarcia.com/recursos-web/php/tutorial-sobre-como-crear-tu-api/"><img align="left" hspace="5" width="80" src="http://en.business.smscity.com/Images/Modules/Services/All/smsApi_374x265.jpg" class="alignleft wp-post-image tfe" alt="" title="" /></a>Bien, esta vez sí, a petición del público y con retraso (perdón por la espera, pero ando muuy liado) intentaré explicar las bases para que uno por sí sólo pueda crear una API para su sitio web. ¿Que es una API? Una API o Application Programming Interface es un grupo de funciones que permiten que [...]]]></description>
			<content:encoded><![CDATA[<p></p><!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="aligncenter" src="http://en.business.smscity.com/Images/Modules/Services/All/smsApi_374x265.jpg" alt="" width="243" height="172" />Bien, esta vez sí, a petición del público y con retraso (perdón por la espera, pero ando muuy liado) intentaré explicar las bases para que uno por sí sólo pueda<strong> crear una API para su sitio web</strong>.</p>
<h2>¿Que es una API?</h2>
<p>Una <strong>API</strong> o <em>Application Programming Interface</em> es un grupo de funciones que permiten que desarrolladores puedan acceder a tus datos, de tal forma que puedan <strong>comunicarse con la base de datos sin necesidad de disponer del código fuente</strong> de nuestro sitio.</p>
<p>Sin ir más lejos Windows dispone de una API para que las empresas desarrollen software para su sistema operativo. Los pioneros en lanzar API&#8217;s en internet creo que fueron Amazon y eBay.</p>
<h2>¿Para que sirve una API?</h2>
<p>Las APIs son una <strong>herramienta perfecta para poder extender tu aplicación más allá de tu sitio web</strong> y crear aún más comunidad alrededor de tu marca. Una buena API puede permitir a nuestros usuarios que creen Mashups con tus datos cruzados con otros y de esta manera acceder a mucho más gente de la que nuestro site pueda abarcar.</p>
<p><strong>El ejemplo más claro es Twitter </strong>que con su API ya se han creado más de 6000 sitios en toda internet que disponiendo de los datos de los usuarios de twitter pueden crear multitud de aplicaciones para ayudar o añadir valor al servicio. Sin duda todo un éxito.</p>
<h2>Empecemos a Construir Nuestra API</h2>
<p>Digamos que nuestra API puede disponer o no de dos grandes funcionalidades:</p>
<ul>
<li>Recojer y disponer de los datos de nuestro sitio para mostrarlos de la forma conveniente</li>
<li>Alterar esos datos, cosas cómo modificar datos, añadir nuevos o eliminarlos.</li>
</ul>
<p>Si la API que queremos contruir no necesita de autentificaión para usarla, las llamadas API Keys, puede ser una buena solución que nuestra API se comunique mediante el servidor usando GET y la url, así pues una consulta para eliminar el articulo numero 5 sería algo cómo:</p>
<pre>http://misitio.com/api/borrar/5</pre>
<p>Pero si son muchos los parámetros a enviar o creemos que nuestra API debe disponer de algo de seguridad para poder ser usada la mejor opción va a ser escoger el método POST. Este sistema nos va a permitir comprobar antes de empezar a procesar la información que la petición tenga los permisos correctos.</p>
<h2>SOAP vs REST</h2>
<p>Hay dos tipos de APIs usadas para en cuanto a web nos referimos. Google por ejemplo usa SOAP y Yahoo usa REST, vamos a ver que es cada cosa:</p>
<ul>
<li>API&#8217;s con REST: Se basan en llamadas HTTP mediante URI y el formato de la respuesta la podemos definir nosotros. Normalmente las APIs con REST són más rápidas y fáciles de implementar.</li>
<li>Las APIs con SOAP suelen ser un poco más complicadas y necesitan la instalación de un plugin dependiendo del lenguaje de programación que estemos usando, en PHP o Python por ejemplo es necesario. Las APIs con SOAP se asemejan más a un sistema de métodos, así, para hacer la misma llamada que antes haciamos mediante URI (usando REST), en SOAP sería algo cómo:
<pre class="brush: php; title: ; notranslate">$api-&gt;borrar(5)</pre>
</li>
</ul>
<p>Nosotros en este caso y aclarando desde un principio que esto es una inicición y un primer enfoque a cómo debería construirse una API y cuales son nuestras opciones, <strong>usaremos REST para este post</strong>.</p>
<h2>Código y Lo Que Ya Debemos Tener</h2>
<p>En este ejemplo doy por supuesto que disponemos de una clase que nos permite interactuar con la base de datos y devolvernos datos, algo como:</p>
<pre class="brush: php; title: ; notranslate">
class Data {

private $id;

function _construct($id){
$this-&gt;id = $id;
}

function borrar($id){
mysql_query(&quot;DELETE * FROM articulos WHERE id = '$id'&quot;);
// etc.. etc..
}

}
</pre>
<p>En nuestro server haríamos lo siguiente:</p>
<pre class="brush: php; title: ; notranslate">
include 'class/class.Data.php';
$obj = new Data();
$obj-&gt;borrar(5);
</pre>
<p>Genial hasta aquí, pero cómo lo hacemos para alguien que <strong>no tiene acceso a nuestro servidor</strong>?<br />
Debemos crear una especie de interfaz entre el usuario y nuestra classe, entonces nuestro archivo alojado en &#8216;api/borrar.php&#8217; queradía así:</p>
<pre class="brush: php; title: ; notranslate">
include '../class/class.Data.php';
if(permiso( $_POST['api_key'] )){
$obj = new Data();
$obj-&gt;borrar(5);
}
</pre>
<p>Eso va a permitir a nuestros usuarios de la API que envien consultas POST al archivo &#8216;api/borrar.php&#8217; y si la clave es la correcta le permitiremos hacer la acción. Entendemos que la función permiso() debe comprobar que esta clave esta aceptada dentro de nuestra base de datos.</p>
<h2>La Petición</h2>
<p>Para realizar la petición HTTP vamos a usar cURL de PHP que va genial y es muy fácil de usar sencillamente necesitamos definir la URL que vamos a llamar y los parametros de la llamada:</p>
<pre class="brush: php; title: ; notranslate">
// definimos nuestras variables POST
$post_vals = array(
    'api_key' =&gt; '0123456789',
    'id' =&gt; '5'
);

foreach($post_vals as $key =&gt; $value) {
    $peticion .= $key.'='.urlencode($value).'&amp;';
}

$peticion = rtrim($peticion, '&amp;');

$ch = curl_init('http://misitio.com/api/borrar.php');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $peticion);
$respuesta = curl_exec($ch);
curl_close ($ch);
);
</pre>
<h2>La Respuesta y su Formato</h2>
<p>Cómo nos lo vamos a hacer para dar la respuesta a la petición? Hay varias maneras, las más conocidas son mediante <strong>XML o JSON</strong>, el consejo es que si puedas ofrezcas las dos formas.</p>
<p>Otra cosa a tener en cuenta y no olvidar es dar las respuestas a los procesos si todo ha funcionado correctamente o si ha fallado alguna cosa, para que el usuario final sea capaz de poder crear una pequeña función isSuccess() etc&#8230;</p>
<p>Un ejemplo de <strong>respuesta en XML</strong> podria ser:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;respuesta estado=&quot;ok&quot;&gt;
&lt;metodo&gt;borrar&lt;/metodo&gt;
&lt;formato&gt;rest&lt;/formato&gt;
&lt;id&gt;5&lt;/id&gt;
&lt;api_key&gt;01234567890&lt;/api_key&gt;
&lt;/respuesta&gt;
</pre>
<p><strong>Disclaimer</strong>: Todo el post esta explicado sobre el método borrar, aunque si hacemos un ejercicio de refleción pronto nos daremos cuenta que un método de estos sólo nos puede perjudicar!</p>
<p><strong>Links de interés</strong></p>
<ul>
<li><a href="http://www.gen-x-design.com/archives/create-a-rest-api-with-php/" target="_blank">http://www.gen-x-design.com/archives/create-a-rest-api-with-php/</a></li>
<li><a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf" target="_blank">How to Design a Good API</a></li>
<li><a href="http://es.php.net/curl" target="_blank">cURL en PHP.net</a></li>
<li><a href="http://en.wikipedia.org/wiki/SOAP" target="_blank">SOAP</a> y <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">REST</a> en la Wikipedia</li>
</ul>
<div class="shr-publisher-852"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://manelgarcia.com/recursos-web/php/tutorial-sobre-como-crear-tu-api/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>

