March 7, 2009
Posting twitter posts with Curl using PHP, Sobi2 and Joomla
Being experimenting with the API of Twitter. I started out playing with curl to send updates from a joomla directory, once a user added a listing. The concept was to have followers follow the updates live via twitter. Tools used: Joomla , Sobi2 and some basic PHP.
Firstly make sure your server supports curl and that the extension is active. A simple install to linux would look something like this.
Now you have PHP cURL installed, the next thing you need to do is to restart apache2, run the following command in your terminal:
In the command terminal run the following command to test the connection to twitter. You can use the -v dump method to post any errors on the screen if connection fails. example curl -u -v ( and then the command )
I then used the PHP curl features to do the same thing from PHP:
<span class="pun"><?</span><span class="pln">php
</span><span class="com">// Set username and password</span><span class="pln">
$username </span><span class="pun">=</span><span class="pln"> </span><span class="str">'username'</span><span class="pun">;</span><span class="pln">
$password </span><span class="pun">=</span><span class="pln"> </span><span class="str">'password'</span><span class="pun">;</span><span class="pln">
</span><span class="com">// The message you want to send</span><span class="pln">
$message </span><span class="pun">=</span><span class="pln"> </span><span class="str">'is twittering from php using curl'</span><span class="pun">;</span><span class="pln">
</span><span class="com">// The twitter API address</span><span class="pln">
$url </span><span class="pun">=</span><span class="pln"> </span><span class="str">'http://twitter.com/statuses/update.xml'</span><span class="pun">;</span><span class="pln">
</span><span class="com">// Alternative JSON version</span><span class="pln">
</span><span class="com">// $url = 'http://twitter.com/statuses/update.json';</span><span class="pln">
</span><span class="com">// Set up and execute the curl process</span><span class="pln">
$curl_handle </span><span class="pun">=</span><span class="pln"> curl_init</span><span class="pun">();</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$curl_handle</span><span class="pun">,</span><span class="pln"> CURLOPT_URL</span><span class="pun">,</span><span class="pln"> </span><span class="str">"$url"</span><span class="pun">);</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$curl_handle</span><span class="pun">,</span><span class="pln"> CURLOPT_CONNECTTIMEOUT</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$curl_handle</span><span class="pun">,</span><span class="pln"> CURLOPT_RETURNTRANSFER</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$curl_handle</span><span class="pun">,</span><span class="pln"> CURLOPT_POST</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$curl_handle</span><span class="pun">,</span><span class="pln"> CURLOPT_POSTFIELDS</span><span class="pun">,</span><span class="pln"> </span><span class="str">"status=$message"</span><span class="pun">);</span><span class="pln">
curl_setopt</span><span class="pun">(</span><span class="pln">$curl_handle</span><span class="pun">,</span><span class="pln"> CURLOPT_USERPWD</span><span class="pun">,</span><span class="pln"> </span><span class="str">"$username:$password"</span><span class="pun">);</span><span class="pln">
$buffer </span><span class="pun">=</span><span class="pln"> curl_exec</span><span class="pun">(</span><span class="pln">$curl_handle</span><span class="pun">);</span><span class="pln">
curl_close</span><span class="pun">(</span><span class="pln">$curl_handle</span><span class="pun">);</span><span class="pln">
</span><span class="com">// check for success or failure</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">empty</span><span class="pun">(</span><span class="pln">$buffer</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
echo </span><span class="str">'message'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
echo </span><span class="str">'success'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">?></span>
This is just a basic layout, the twitter API allows you to do so much more. Now comes the fun part. If you are using joomla and sobi2 as a directory component, here is a way to place the above code to your sobi2 directory and receive live updates once a user adds a listing.
Open the sobi2.class file , then scroll down to line 533 and insert the above code just above the sql query. You can then use the variables within the sobi2 framework to display to twitter. Here is another sample of this:
$chars = 140;
$text = $text." ";
$text = substr($text,0,$chars);
$text = substr($text,0,strrpos($text,' '));
$text = $text."...";
return $text;
}</em></span></strong>
$password = 'password';
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$twitmessage");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
// check for success or failure
if (empty($buffer)) {
$twitresponse = 'Deal not posted to Twitter';
} else {
$twitresponse = 'Deal posted to Twitter';
}</em></span></strong>
Just adapt it as you need to. you can go as far as adding the url to the post. ( incorporate tiny url to keep the url short ). Will post a seperate tutorial on this shortly.
Written by: admin
Filed Under: Sobi2, Tutorials, Website Ideas, Website Scripts, Website Tools
Tags: curl, php, Sobi2, Twitter
Trackback URL: http://www.website-ideas.co.uk/2009/03/07/getting-twitter-posts-with-curl-and-php/trackback/
Comments
Trackbacks
- Getting twitter posts with Curl and PHP via Joomla and sobi2 … « How To Get Rich 03-08-2009 at 1:16 am
- Getting twitter posts with Curl and PHP via Joomla and sobi2 … 03-08-2009 at 2:40 am


E-TradeCounter
April 2, 2009 at 5:20 pm
Very nice code there. If I get some spare time might have to change it into asp.net.
Very good code, might be worth just getting a PHP server for!
ponnuchamy
August 26, 2009 at 3:28 pm
How to get the followers information
ponnuchamy
August 26, 2009 at 3:30 pm
anyone can give the url to get the followers information from twitter.com
$url = ‘http://twitter.com/statuses/update.xml’;