0

Hello, I am trying to do nifty things with the flickr api, but this code does not work on my web host. Something about the url_fopen (?) turned off for security. I'm told that I can use "Curl" to work around that. Will you offer some help, if even a relevant url for RTM? Thank you. :-)

<?php

// includes the images from flickr for the comma seperated $tags

  $tags = urlencode('colorful');

  include( "http://api.flickr.com/services/feeds/photos_public.gne?tags=$tags&format=php" );

  foreach($feed['items'] as $item)
    echo $item['description'];

?>
3
Contributors
3
Replies
4
Views
11 Years
Discussion Span
Last Post by tefflox
0

Try:

http://www.php.net/curl - PHP curl Lib docs
http://curl.haxx.se/libcurl/php/ - Curl Lib Author's site

The nice lil class contributed by Sean Huber to the PHP docs should work quite well for simple HTTP tasks...

<?php
/*
Sean Huber CURL library

This library is a basic implementation of CURL capabilities.
It works in most modern versions of IE and FF.

==================================== USAGE ====================================
It exports the CURL object globally, so set a callback with setCallback($func).
(Use setCallback(array('class_name', 'func_name')) to set a callback as a func
that lies within a different class)
Then use one of the CURL request methods:

get($url);
post($url, $vars); vars is a urlencoded string in query string format.

Your callback function will then be called with 1 argument, the response text.
If a callback is not defined, your request will return the response text.
*/

class CURL {
   var $callback = false;

function setCallback($func_name) {
   $this->callback = $func_name;
}

function doRequest($method, $url, $vars) {
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_HEADER, 1);
   curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
   curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
   if ($method == 'POST') {
       curl_setopt($ch, CURLOPT_POST, 1);
       curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
   }
   $data = curl_exec($ch);
   curl_close($ch);
   if ($data) {
       if ($this->callback)
       {
           $callback = $this->callback;
           $this->callback = false;
           return call_user_func($callback, $data);
       } else {
           return $data;
       }
   } else {
       return curl_error($ch);
   }
}

function get($url) {
   return $this->doRequest('GET', $url, 'NULL');
}

function post($url, $vars) {
   return $this->doRequest('POST', $url, $vars);
}
}
?>

Just include it in your script and use it like:

$curl = new CURL();
$curl->get('.. flickr url here... ');

The only problem is that Flickr returns the <?php ?> tags. So you'll have to strip those out. And then execute the raw PHP using eval().

0

I'm trying to do the same thing and don't really understand your example. In he example, to what local file is the photo obtained via curl written?

Thanks, Len

0

Thanks for coming back on this, but I've just recently abandoned all effort in PHP for Ruby.

Happy new year

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.