<?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>Sentido Web &#187; curl</title>
	<atom:link href="http://sentidoweb.com/tag/curl/feed" rel="self" type="application/rss+xml" />
	<link>http://sentidoweb.com</link>
	<description>Desarrollo web, HTML, CSS, Javascript, PHP, MySQL</description>
	<lastBuildDate>Tue, 10 Apr 2012 01:02:09 +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>Enviar mailings con poMMo mediante CURL</title>
		<link>http://sentidoweb.com/2010/10/22/enviar-mailings-con-pommo-mediante-curl.php</link>
		<comments>http://sentidoweb.com/2010/10/22/enviar-mailings-con-pommo-mediante-curl.php#comments</comments>
		<pubDate>Fri, 22 Oct 2010 18:25:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[pommo]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2636</guid>
		<description><![CDATA[poMMo es una de las mejores herramientas para envío de newsletters o mailing, el problema es que la última versión es del 2008 y no tienen ni API ni nada parecido, pero se puede simular mediante CURL, lo cual nos puede venir muy bien para añadir mailing a nuestras aplicaciones con CodeIgniter o WordPress. &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>poMMo es una de las mejores herramientas para envío de newsletters o mailing, el problema es que la última versión es del 2008 y no tienen ni API ni nada parecido, pero se puede simular mediante CURL, lo cual nos puede venir muy bien para añadir mailing a nuestras aplicaciones con CodeIgniter o WordPress.</p>
<pre><code><pre class="php">&nbsp;
<span style="color: #3E6D8F;">$ch</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_HEADER, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>; 
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEFILE, <span style="color: #ff0000;">"cookiefile"</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEJAR, <span style="color: #ff0000;">"cookiefile"</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_FOLLOWLOCATION, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #ff0000;">'http://servidor.com/pommo/index.php'</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_USERAGENT, <span style="color: #ff0000;">"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"</span><span style="color: #66cc66;">&#41;</span>; 
<span style="color: #3E6D8F;">$post</span> = <span style="color: #ff0000;">'referer='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/pommo/admin/admin.php'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;username=admin&amp;password=password&amp;submit=Log In'</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$post</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$result</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>; 
&nbsp;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #ff0000;">'http://servidor.com/pommo/admin/mailings/mailing/setup.php'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$post</span> = <span style="color: #ff0000;">'subject=Asunto&amp;mailgroup=all&amp;fromname=Yo&amp;fromemail=mi%40email.com&amp;frombounce=mi%40email.com&amp;list_charset=UTF-8&amp;submit=Continue'</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$post</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$result</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>; 
&nbsp;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #ff0000;">'http://servidor.com/pommo/admin/mailings/mailing/ajax.rpc.php?call=savebody'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$post</span> = <span style="color: #ff0000;">'body='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Hola a &lt;strong&gt;todos&lt;/strong&gt;'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;altbody='</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$post</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$result</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>; 
&nbsp;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #ff0000;">'http://servidor.com/pommo/admin/mailings/mailing/preview.php'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$post</span> = <span style="color: #ff0000;">'sendaway=true'</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$post</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #3E6D8F;">$result</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2010/10/22/enviar-mailings-con-pommo-mediante-curl.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Peticiones en paralelo de CURL con PHP</title>
		<link>http://sentidoweb.com/2010/08/06/peticiones-en-paralelo-de-curl-con-php.php</link>
		<comments>http://sentidoweb.com/2010/08/06/peticiones-en-paralelo-de-curl-con-php.php#comments</comments>
		<pubDate>Fri, 06 Aug 2010 12:32:59 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[curl]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2394</guid>
		<description><![CDATA[Cuando realizamos una petición CURL normalmente usamos el método sencillo: hacer petición, esperar respuesta. ¿Pero que ocurre cuando queremos hacer varias peticiones de forma simultánea? por ejemplo para un crawler o una aplicación parecida. En estos casos tenemos que echar mano de curl_multi_*. Si nos encontramos en esta situación podemos echar mano de la clase [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando realizamos una petición CURL normalmente usamos el método sencillo: hacer petición, esperar respuesta. ¿Pero que ocurre cuando queremos hacer varias peticiones de forma simultánea? por ejemplo para un crawler o una aplicación parecida. En estos casos tenemos que echar mano de <em>curl_multi_*</em>.</p>
<p>Si nos encontramos en esta situación podemos echar mano de la clase <a href="http://github.com/petewarden/ParallelCurl">ParallelCurl</a>, que de forma muy sencilla nos ayudará en nuestra tarea:</p>
<pre><code><pre class="php"><span style="color: #3E6D8F;">$pc</span> = <span style="color: #000000; font-weight: bold;">new</span> ParallelCurl<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$max_requests</span>, <span style="color: #3E6D8F;">$curl_options</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// 3 peticiones en paralelo que empiezan simultaneamente</span>
<span style="color: #3E6D8F;">$pc</span>-&gt;<span style="color: #006600;">startRequest</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$url1</span>, <span style="color: #ff0000;">'on_request_done'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$pc</span>-&gt;<span style="color: #006600;">startRequest</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$url2</span>, <span style="color: #ff0000;">'on_request_done'</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$pc</span>-&gt;<span style="color: #006600;">startRequest</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$url3</span>, <span style="color: #ff0000;">'on_request_done'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #3E6D8F;">$pc</span>-&gt;<span style="color: #006600;">finishAllRequests</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>
<p><a href="http://www.codediesel.com/php/parallel-curl-execution/">Parallel cURL execution in PHP</a></p>
<p>Vía / <a href="http://www.phpdeveloper.org/news/14907">PHPDeveloper.org</a></p>
 
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2010/08/06/peticiones-en-paralelo-de-curl-con-php.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar la media semanal de lectores de Feedburner con PHP</title>
		<link>http://sentidoweb.com/2010/07/07/mostrar-la-media-semanal-de-lectores-de-feedburner-con-php.php</link>
		<comments>http://sentidoweb.com/2010/07/07/mostrar-la-media-semanal-de-lectores-de-feedburner-con-php.php#comments</comments>
		<pubDate>Wed, 07 Jul 2010 16:33:41 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[feedburnerl]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2370</guid>
		<description><![CDATA[Parece que Feedburner está dando problemas, y ahora parece que te muestra los usuarios que leyeron tu blog el día anterior, y no el numero de suscritos como se mostraba anteriormente, por lo que a los que no escribimos posts a diarios, el número que muestra Feedburner puede variar muchísimo. Por ello, puede ser interesante [...]]]></description>
			<content:encoded><![CDATA[<p>Parece que Feedburner está dando problemas, y ahora parece que te muestra los usuarios que leyeron tu blog el día anterior, y no el numero de suscritos como se mostraba anteriormente, por lo que a los que no escribimos posts a diarios, el número que muestra Feedburner puede variar muchísimo.</p>
<p>Por ello, puede ser interesante mostrar la media semanal o mensual, como queramos, de los usuarios que nos leen:</p>
<pre><code><pre class="php"><span style="color: #000000; font-weight: bold;">function</span> get_average_readers<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$feed_id</span>,<span style="color: #3E6D8F;">$interval</span> = <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #3E6D8F;">$today</span> = <a href="http://www.php.net/date"><span style="color: #000066;">date</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Y-m-d'</span>, <a href="http://www.php.net/strtotime"><span style="color: #000066;">strtotime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"now"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$ago</span> = <a href="http://www.php.net/date"><span style="color: #000066;">date</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Y-m-d'</span>, <a href="http://www.php.net/strtotime"><span style="color: #000066;">strtotime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"-"</span>.<span style="color: #3E6D8F;">$interval</span>.<span style="color: #ff0000;">" days"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$feed_url</span>=<span style="color: #ff0000;">"https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri="</span>.<span style="color: #3E6D8F;">$feed_id</span>.<span style="color: #ff0000;">"&amp;dates="</span>.<span style="color: #3E6D8F;">$ago</span>.<span style="color: #ff0000;">","</span>.<span style="color: #3E6D8F;">$today</span>;
	<span style="color: #3E6D8F;">$ch</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
	curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$feed_url</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$data</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
	curl_close<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$xml</span> = <span style="color: #000000; font-weight: bold;">new</span> SimpleXMLElement<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$data</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #3E6D8F;">$fb</span> = <span style="color: #3E6D8F;">$xml</span>-&gt;<span style="color: #006600;">feed</span>-&gt;<span style="color: #006600;">entry</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'circulation'</span><span style="color: #66cc66;">&#93;</span>;
&nbsp;
	<span style="color: #3E6D8F;">$nb</span> = <span style="color: #cc66cc;">0</span>;
	<span style="color: #723b00;">foreach</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$xml</span>-&gt;<span style="color: #006600;">feed</span>-&gt;<span style="color: #006600;">children</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #723b00;">as</span> <span style="color: #3E6D8F;">$circ</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		<span style="color: #3E6D8F;">$nb</span> += <span style="color: #3E6D8F;">$circ</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'circulation'</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #723b00;">return</span> <a href="http://www.php.net/round"><span style="color: #000066;">round</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$nb</span>/<span style="color: #3E6D8F;">$interval</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #3E6D8F;">$nb</span> = get_average_readers<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'miusuario'</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">"tengo "</span>.<span style="color: #3E6D8F;">$nb</span>.<span style="color: #ff0000;">" suscriptores RSS"</span>;
<span style="color: #808080; font-style: italic;">// o</span>
<span style="color: #3E6D8F;">$nb</span> = get_average_readers<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'miusuario'</span>, <span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">"tengo "</span>.<span style="color: #3E6D8F;">$nb</span>.<span style="color: #ff0000;">" suscriptores RSS"</span>;</pre></code></pre>
<p><a href="http://www.catswhoblog.com/how-to-get-a-more-relevant-feedburner-count">How to get a more relevant Feedburner count</a></p>
<p>Vía / <a href="http://www.dzone.com/links/rss/feedburner_get_your_weekly_average_readers.html">DZone</a></p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2010/07/07/mostrar-la-media-semanal-de-lectores-de-feedburner-con-php.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conocer a quien le gusta tu post en Google Reader con PHP y CURL</title>
		<link>http://sentidoweb.com/2010/07/06/conocer-a-quien-le-gusta-tu-post-en-google-reader-con-php-y-curl.php</link>
		<comments>http://sentidoweb.com/2010/07/06/conocer-a-quien-le-gusta-tu-post-en-google-reader-con-php-y-curl.php#comments</comments>
		<pubDate>Tue, 06 Jul 2010 18:33:13 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[google reader]]></category>
		<category><![CDATA[likers]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2366</guid>
		<description><![CDATA[No es difícil ver en blogs los retweets que hace la gente de tus posts y que estos se muestren en los comentarios. ¿Por qué no hacer lo mismo con Google Reader?. En Google Reader, es posible ver a quienes les gustan tus posts (si tienes tu propio blog en el reader), lo cual te [...]]]></description>
			<content:encoded><![CDATA[<p>No es difícil ver en blogs los retweets que hace la gente de tus posts y que estos se muestren en los comentarios. ¿Por qué no hacer lo mismo con Google Reader?. En Google Reader, es posible ver a quienes les gustan tus posts (si tienes tu propio blog en el reader), lo cual te puede ayudar a saber si tus posts interesan o no, o encontrar usuarios con gustos parecidos y así seguir sus recomendaciones y poder leer posts interesantes.</p>
<p>Google suele dar complicaciones a la hora de hacer uso de sus webs, pero si usamos su API de <a href="http://code.google.com/intl/es-ES/apis/accounts/docs/AuthForInstalledApps.html#Using">ClientLogin</a> lo podemos hacer de forma sencilla.</p>
<p>Primero tendremos que loguearnos en Google, para lo cual tendremos que indicar nuestro usuario y contraseña y los datos posts que tendremos que pasarle:</p>
<pre><code><pre class="php"><span style="color: #3E6D8F;">$usuario</span> = <span style="color: #ff0000;">'micorreo@gmail.com'</span>;
<span style="color: #3E6D8F;">$password</span> = <span style="color: #ff0000;">'mipassword'</span>;
<span style="color: #3E6D8F;">$postdata</span> = <span style="color: #ff0000;">'service=reader&amp;Email='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$usuario</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;Passwd='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$password</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;continue=http://www.google.com/reader/&amp;service=reader'</span>;</pre></code></pre>
<p>Luego nos logueamos y obtenemos el valor de <em>Auth</em> para usarlo en el resto de peticiones usandolo en el header de la petición HTTP:</p>
<pre><code><pre class="php"><span style="color: #3E6D8F;">$ch</span> = crl_init<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span> <span style="color: #3E6D8F;">$ch</span>, CURLOPT_USERAGENT, <span style="color: #ff0000;">'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEJAR, <span style="color: #ff0000;">'./cookie'</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEFILE, <span style="color: #ff0000;">'./cookie'</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #3E6D8F;">$postdata</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_SSL_VERIFYPEER, <span style="color: #000000; font-weight: bold;">false</span> <span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_SSL_VERIFYHOST, <span style="color: #000000; font-weight: bold;">false</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #3E6D8F;">$url</span> = <span style="color: #ff0000;">'https://www.google.com/accounts/ClientLogin'</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_FOLLOWLOCATION, <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$res</span> = crl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/Auth=(.*)/'</span>, <span style="color: #3E6D8F;">$res</span>, <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$auth</span> = <span style="color: #3E6D8F;">$m</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;</pre></code></pre>

<p>Después realizo la búsqueda, para lo cual busco el título del post y le añado el nombre del blog (chapu a la espera de encontrar algo mejor), por ejemplo &#8220;<a href="http://sentidoweb.com/2010/07/01/stanford-javascript-crypto-library.php">Stanford%20Javascript%20Crypto%20Library%20sentidoweb</a>&#8221;
<pre><code><pre class="php"><span style="color: #3E6D8F;">$url</span> = <span style="color: #ff0000;">'https://www.google.com/reader/api/0/search/items/ids?q=Stanford%20Javascript%20Crypto%20Library%20sentidoweb&amp;output=json'</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>,CURLOPT_HTTPHEADER,<a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'Authorization: GoogleLogin auth='</span>.<span style="color: #3E6D8F;">$auth</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; 
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$res</span> = crl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$datos</span> = json_decode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$res</span><span style="color: #66cc66;">&#41;</span>;</pre></code></pre>

<p>De aquí obtengo el ID del post dentro de Google Reader, y con ese ID obtengo los <em>likers</em> y muestro sus fotos:</p>
<pre><code><pre class="php"><span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$datos</span>-&gt;<span style="color: #006600;">results</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>-&gt;<span style="color: #006600;">id</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #3E6D8F;">$url</span> = <span style="color: #ff0000;">'https://www.google.com/reader/api/0/stream/items/contents?client=scroll'</span>;
  crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
  crl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #ff0000;">'i='</span>.<span style="color: #3E6D8F;">$datos</span>-&gt;<span style="color: #006600;">results</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>-&gt;<span style="color: #006600;">id</span><span style="color: #66cc66;">&#41;</span>;
  crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #3E6D8F;">$res</span> = crl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
  
  <span style="color: #3E6D8F;">$datos</span> = json_decode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$res</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$datos</span>-&gt;<span style="color: #006600;">items</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>-&gt;<span style="color: #006600;">id</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #3E6D8F;">$id</span> = <span style="color: #3E6D8F;">$datos</span>-&gt;<span style="color: #006600;">items</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>-&gt;<span style="color: #006600;">id</span>;
    <span style="color: #3E6D8F;">$id</span> = <a href="http://www.php.net/end"><span style="color: #000066;">end</span></a><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/explode"><span style="color: #000066;">explode</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/'</span>, <span style="color: #3E6D8F;">$id</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #3E6D8F;">$url</span> = <span style="color: #ff0000;">'https://www.google.com/reader/api/0/item/likers?i=tag%3Agoogle.com%2C2005%3Areader%2Fitem%2F'</span>.<span style="color: #3E6D8F;">$id</span>.<span style="color: #ff0000;">'&amp;output=json&amp;client=scroll'</span>;
    crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
    crl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #3E6D8F;">$res</span> = crl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #3E6D8F;">$data</span> = json_decode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$res</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$data</span>-&gt;<span style="color: #006600;">friends</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
      <span style="color: #723b00;">foreach</span><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$data</span>-&gt;<span style="color: #006600;">friends</span> <span style="color: #723b00;">as</span> <span style="color: #3E6D8F;">$friend</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #000066;">isset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$friend</span>-&gt;<span style="color: #006600;">photoUrl</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
          <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">'&lt;img src=&quot;https://www.google.com'</span>.<span style="color: #3E6D8F;">$friend</span>-&gt;<span style="color: #006600;">photoUrl</span>.<span style="color: #ff0000;">'&quot; /&gt;'</span>;
        <span style="color: #66cc66;">&#125;</span>
      <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></code></pre>

<p>De los likers se pueden obtener más datos, y si se hace un <em>var_dump($data->friends)</em> se podrá ver cómo acceder a ellos.</p>
<p>Está claro que un plugin para WordPress estaría bien, pero es algo más complejo si se quiere hacer bien, porque se debería obtener los ids segun URLs, entre otras cosas.</p>]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2010/07/06/conocer-a-quien-le-gusta-tu-post-en-google-reader-con-php-y-curl.php/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Login en Facebook con PHP y CURL</title>
		<link>http://sentidoweb.com/2010/06/17/login-en-facebook-con-php-y-curl.php</link>
		<comments>http://sentidoweb.com/2010/06/17/login-en-facebook-con-php-y-curl.php#comments</comments>
		<pubDate>Thu, 17 Jun 2010 11:32:15 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[login]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/?p=2351</guid>
		<description><![CDATA[¿Para que usar CURL si se puede usar la API de Facebook? sencillo, porque la API no te permite obtener todos los datos que se pueden leer cuando navegas por Facebook. Por ello, en alguna ocasión, nos podemos encontrar con la necesidad de loguearnos en Facebook y &#8220;navegar&#8221; usando CURL: echo 'loading &#60;br/&#62;'; $login_email = [...]]]></description>
			<content:encoded><![CDATA[<p>¿Para que usar CURL si se puede usar la API de Facebook? sencillo, porque la API no te permite obtener todos los datos que se pueden leer cuando navegas por Facebook. Por ello, en alguna ocasión, nos podemos encontrar con la necesidad de loguearnos en Facebook y &#8220;navegar&#8221; usando CURL:</p>
<pre><code><pre class="php"><a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">'loading &lt;br/&gt;'</span>;
        <span style="color: #3E6D8F;">$login_email</span> = <span style="color: #ff0000;">'my@sexy.mail'</span>;
        <span style="color: #3E6D8F;">$login_pass</span> = <span style="color: #ff0000;">'my_sexy_password'</span>;
&nbsp;
<span style="color: #3E6D8F;">$fp</span> = <a href="http://www.php.net/fopen"><span style="color: #000066;">fopen</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"fb_cookies.txt"</span>, w<span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/fclose"><span style="color: #000066;">fclose</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$fp</span><span style="color: #66cc66;">&#41;</span>; 
&nbsp;
<a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">'still loading &lt;br/&gt;'</span>;
&nbsp;
<span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span>fb_login<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$login_email</span>,<span style="color: #3E6D8F;">$login_pass</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
<span style="color: #3E6D8F;">$ch</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #ff0000;">'https://login.facebook.com/login.php?login_attempt=1'</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS,<span style="color: #ff0000;">'charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&amp;locale=en_US&amp;email='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$login_email</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;pass='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$login_pass</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;pass_placeholder=&amp;charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84'</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_HEADER, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_FOLLOWLOCATION, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_SSL_VERIFYPEER, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEJAR, <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\</span>'</span>,<span style="color: #ff0000;">'/'</span>,<a href="http://www.php.net/dirname"><span style="color: #000066;">dirname</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">__FILE__</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'/fb_cookies.txt'</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEFILE, <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\</span>'</span>,<span style="color: #ff0000;">'/'</span>,<a href="http://www.php.net/dirname"><span style="color: #000066;">dirname</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">__FILE__</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'/fb_cookies.txt'</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_USERAGENT, <span style="color: #ff0000;">"Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)"</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$html</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
 curl_close<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
  <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #3E6D8F;">$html</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> fb_login<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$login_email</span>, <span style="color: #3E6D8F;">$login_pass</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
&nbsp;
 <span style="color: #3E6D8F;">$ch</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #ff0000;">'https://login.facebook.com/login.php?login_attempt=1'</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS,<span style="color: #ff0000;">'charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&amp;locale=en_US&amp;email='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$login_email</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;pass='</span>.urlencode<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$login_pass</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'&amp;pass_placeholder=&amp;charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84'</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POST, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_HEADER, <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_FOLLOWLOCATION, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_SSL_VERIFYPEER, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEJAR, <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\</span>'</span>,<span style="color: #ff0000;">'/'</span>,<a href="http://www.php.net/dirname"><span style="color: #000066;">dirname</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">__FILE__</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'/fb_cookies.txt'</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEFILE, <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\</span>'</span>,<span style="color: #ff0000;">'/'</span>,<a href="http://www.php.net/dirname"><span style="color: #000066;">dirname</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">__FILE__</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #ff0000;">'/fb_cookies.txt'</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
 curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_USERAGENT, <span style="color: #ff0000;">"Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)"</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$html</span> = curl_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
 <span style="color: #3E6D8F;">$err</span> = <span style="color: #cc66cc;">0</span>;
 <span style="color: #3E6D8F;">$err</span> = curl_errno<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>; 
 curl_close<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
 <span style="color: #723b00;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$err</span> != <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
 <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">'error='</span>.<span style="color: #3E6D8F;">$err</span>.<span style="color: #ff0000;">"<span style="color: #000099; font-weight: bold;">\n</span>"</span>;
 <span style="color: #723b00;">return</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
 <span style="color: #66cc66;">&#125;</span> <span style="color: #723b00;">else</span> <span style="color: #66cc66;">&#123;</span>
 <a href="http://www.php.net/echo"><span style="color: #000066;">echo</span></a> <span style="color: #ff0000;">'fetching..'</span>;
 <span style="color: #723b00;">return</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
 <span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre></code></pre>
<p><a href="http://pastie.org/619912">Código fuente en Pastie</a></p>
<p>Vía / <a href="http://stackoverflow.com/questions/798785/login-into-facebook-with-php-script-but-let-me-logged-in-the-browser-after-the-e">Stack Overflow</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2010/06/17/login-en-facebook-con-php-y-curl.php/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Realizar backups desde cURL</title>
		<link>http://sentidoweb.com/2008/07/31/realizar-backups-desde-curl.php</link>
		<comments>http://sentidoweb.com/2008/07/31/realizar-backups-desde-curl.php#comments</comments>
		<pubDate>Thu, 31 Jul 2008 21:15:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[curl]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2008/07/31/realizar-backups-desde-curl.php</guid>
		<description><![CDATA[Interesante script que mediante cURL realiza un backup de nuestra web y lo inserta en un servidor FTP. No es el método más eficiente ni el más recomendable, pero si nos puede servir como ejemplo para realizar procesos similares o, por ejemplo, para crear sites de administración que necesiten realizar copias de seguridad. El ejemplo [...]]]></description>
			<content:encoded><![CDATA[Interesante script que mediante cURL realiza un backup de nuestra web y lo inserta en un servidor FTP. No es el método más eficiente ni el más recomendable, pero si nos puede servir como ejemplo para realizar procesos similares o, por ejemplo, para crear sites de administración que necesiten realizar copias de seguridad.
El ejemplo es útil.
<a href="http://www.web-development-blog.com/archives/create-custom-backups-from-your-website-using-curl/">Create custom backups from your website using cURL</a>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2008/07/31/realizar-backups-desde-curl.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conexiones en paralelo con cURL</title>
		<link>http://sentidoweb.com/2008/07/30/conexiones-en-paralelo-con-curl.php</link>
		<comments>http://sentidoweb.com/2008/07/30/conexiones-en-paralelo-con-curl.php#comments</comments>
		<pubDate>Wed, 30 Jul 2008 18:15:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[curl]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2008/07/30/conexiones-en-paralelo-con-curl.php</guid>
		<description><![CDATA[Para aquellos que necesiten conexiones múltiples con cURL para acceder a varias web, este ejemplo es un buen comienzo: &#38;lt;?php // Create two cURL handlers $ch1 = curl_init&#40;&#41;; $ch2 = curl_init&#40;&#41;; // Set options on both curl_setopt&#40;$ch1, CURLOPT_URL, "http://example.com/"&#41;; curl_setopt&#40;$ch2, CURLOPT_URL, "http://example2.com/"&#41;; curl_setopt&#40;$ch1, CURLOPT_RETURNTRANSFER, 1&#41;; curl_setopt&#40;$ch2, CURLOPT_RETURNTRANSFER, 1&#41;; $mh = curl_multi_init&#40;&#41;; curl_multi_add_handle&#40;$mh,$ch1&#41;; curl_multi_add_handle&#40;$mh,$ch2&#41;; $running=null; do [...]]]></description>
			<content:encoded><![CDATA[<p>Para aquellos que necesiten conexiones múltiples con cURL para acceder a varias web, este ejemplo es un buen comienzo:</p>
<pre><code><pre class="php">&amp;lt;?php
<span style="color: #808080; font-style: italic;">// Create two cURL handlers</span>
<span style="color: #3E6D8F;">$ch1</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #3E6D8F;">$ch2</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// Set options on both</span>
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch1</span>, CURLOPT_URL, <span style="color: #ff0000;">"http://example.com/"</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch2</span>, CURLOPT_URL, <span style="color: #ff0000;">"http://example2.com/"</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch1</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch2</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$mh</span> = curl_multi_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
curl_multi_add_handle<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$mh</span>,<span style="color: #3E6D8F;">$ch1</span><span style="color: #66cc66;">&#41;</span>;
curl_multi_add_handle<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$mh</span>,<span style="color: #3E6D8F;">$ch2</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$running</span>=<span style="color: #000000; font-weight: bold;">null</span>;
<span style="color: #723b00;">do</span> <span style="color: #66cc66;">&#123;</span>
curl_multi_exec<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$mh</span>,<span style="color: #3E6D8F;">$running</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span> <span style="color: #723b00;">while</span> <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$running</span> &gt; <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$data1</span> = curl_multi_getcontent<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch1</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$data2</span> = curl_multi_getcontent<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch2</span><span style="color: #66cc66;">&#41;</span>;
curl_multi_remove_handle<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch1</span><span style="color: #66cc66;">&#41;</span>;
curl_multi_remove_handle<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch2</span><span style="color: #66cc66;">&#41;</span>;
curl_multi_close<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$mh</span><span style="color: #66cc66;">&#41;</span>;
?&amp;gt;</pre></code></pre>
<p>Se trata de usar en vez de <em>curl_init</em> usar <em>curl_multi_init</em> y sus funciones asociadas.</p>
<p><a href="http://www.developertutorials.com/blog/php/parallel-web-scraping-in-php-curl-multi-functions-375/">Parallel web scraping in PHP: cURL multi functions</a></p>
<p>Vía / <a href="http://www.dzone.com/links/rss/parallel_web_scraping_in_php_curl_multi_functions.html">dzone</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2008/07/30/conexiones-en-paralelo-con-curl.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laboratorio: publicar en Twitter mediante CURL</title>
		<link>http://sentidoweb.com/2008/05/13/laboratorio-publicar-en-twitter-mediante-curl.php</link>
		<comments>http://sentidoweb.com/2008/05/13/laboratorio-publicar-en-twitter-mediante-curl.php#comments</comments>
		<pubDate>Tue, 13 May 2008 17:00:00 +0000</pubDate>
		<dc:creator>displaynone</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://sentidoweb.com/2008/05/13/laboratorio-publicar-en-twitter-mediante-curl.php</guid>
		<description><![CDATA[Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla. Para aquellos que no [...]]]></description>
			<content:encoded><![CDATA[<p>Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla.</p>
<p>Para aquellos que no quieran sufrir lo que <a href="http://bitacoras.com/equipo">hemos</a> sufrido con <a href="http://twitterposter.com/">TwitterPoster</a> (los espacios en blanco es porque la gente actualiza su imagen y no podemos recuperar la de todos los usuarios por el límite en el API de Twitter), les recomiendo usar Twitter mediante CURL.</p>
<p>Os paso un script sencillito que he realizado:</p>
<pre><code><pre class="php">&amp;lt;?php
<span style="color: #808080; font-style: italic;">// Primer hacemos login</span>
<span style="color: #3E6D8F;">$url</span> =<span style="color: #ff0000;">"https://twitter.com/sessions"</span>;
<span style="color: #3E6D8F;">$ch</span> = curl_init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_RETURNTRANSFER, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_HTTPAUTH, CURLAUTH_ANY<span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// Por si tienen limitaci&Atilde;&sup3;n por navegador</span>
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, curlOPT_USERAGENT, <span style="color: #ff0000;">"Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// Poned una ruta para las cookies</span>
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEJAR, <span style="color: #ff0000;">'/temp/'</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_COOKIEFILE, <span style="color: #ff0000;">'/temp/'</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #ff0000;">"username_or_email=&lt;em&gt;[usuario]&lt;/em&gt;&amp;password=&lt;em&gt;[contrase&Atilde;&plusmn;a]&lt;/em&gt;"</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// Para que funcione el https</span>
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_SSL_VERIFYPEER, <span style="color: #000000; font-weight: bold;">FALSE</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, curlOPT_SSL_VERIFYHOST, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
curl_exec <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// Cargamos el home, porque Twitter a&Atilde;&plusmn;ade dos campos ocultos para poder publicar por web</span>
<span style="color: #3E6D8F;">$url</span> =<span style="color: #ff0000;">"http://twitter.com/home"</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$result</span> = curl_exec <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// Recuperamos los campos ocultos</span>
<a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/&lt;input name=&quot;authenticity_token&quot; type=&quot;hidden&quot; value=&quot;(.*)&quot; <span style="color: #000099; font-weight: bold;">\/</span>&gt;/'</span>, <span style="color: #3E6D8F;">$result</span>, <span style="color: #3E6D8F;">$match</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$authenticity_token</span> = <span style="color: #3E6D8F;">$match</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
<a href="http://www.php.net/preg_match"><span style="color: #000066;">preg_match</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'/&lt;input type=&quot;hidden&quot; name=&quot;siv&quot; value=&quot;(.*)&quot; <span style="color: #000099; font-weight: bold;">\/</span>&gt;/'</span>, <span style="color: #3E6D8F;">$result</span>, <span style="color: #3E6D8F;">$match</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #3E6D8F;">$siv</span> = <span style="color: #3E6D8F;">$match</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
<span style="color: #808080; font-style: italic;">// Insertamos el texto</span>
<span style="color: #3E6D8F;">$res</span> = <span style="color: #3E6D8F;">$url</span> =<span style="color: #ff0000;">"http://twitter.com/status/update"</span>;
curl_setopt<span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_URL, <span style="color: #3E6D8F;">$url</span><span style="color: #66cc66;">&#41;</span>;
curl_setopt <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: #ff0000;">'siv='</span>.<span style="color: #3E6D8F;">$siv</span>.<span style="color: #ff0000;">'&amp;authenticity_token='</span>.<span style="color: #3E6D8F;">$auth</span>.<span style="color: #ff0000;">'&amp;status=&lt;em&gt;[texto]&lt;/em&gt;'</span><span style="color: #66cc66;">&#41;</span>;
curl_exec <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
curl_close <span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
<a href="http://www.php.net/unset"><span style="color: #000066;">unset</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #3E6D8F;">$ch</span><span style="color: #66cc66;">&#41;</span>;
?&amp;gt;</pre></code></pre>
<p>¿Qué fallo tiene este script? pues que si cambian el HTML (campos de formulario, &#8230;) o las URLs deja de funcionar, pero al menos no tenemos limitaciones. Eso sí, es más costoso para sus servidores y para los nuestros, porque en vez de hacer una llamada, hacemos 3, y en nuestro caso, a parte parseamos una página para obtener dos campos ocultos.</p>
]]></content:encoded>
			<wfw:commentRss>http://sentidoweb.com/2008/05/13/laboratorio-publicar-en-twitter-mediante-curl.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

