8797 sujets

Développement web côté serveur, CMS

Hello, je travaille sur un script qui se base sur une galerie photo.
En gros; je récupère une URL; par exemple

http://tinyurl.com/23lmz7/gallery/main.php?g2_view=core.DownloadItem&g2_itemId=19&g2_GALLERYSID=42b3eef82866b4a4586c251b6d3cb4cf

Si l'URL est une image; il doit la copier sur le disque.

Si ce n'en est pas une, il doit l'ignorer.

http://tinyurl.com/23lmz7/gallery/main.php?g2_view=core.DownloadItem&g2_itemId=323&g2_GALLERYSID=08109e1e66153573971ff4c2d81baac6

Problème : comme c'est une URL, la fonction
is_file
ne donne rien (dans les deux cas, renvoie FALSE), et si je fais directement
copy($the_image, $the_new_url)
, ça marche dans le cas de l'image mais ça renvoie un warning dans le deuxième cas.

COmment faire ?

Merci !
Modifié par gordie (05 Nov 2007 - 01:29)

			$ch = curl_init(); // create cURL handle (ch)

			if (!$ch) {

			    die("Couldn't initialize a cURL handle");

			}

			// set some cURL options

			$ret = curl_setopt($ch, CURLOPT_URL,            $the_image);

			$ret = curl_setopt($ch, CURLOPT_HEADER,         1);

			$ret = curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

			$ret = curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

			$ret = curl_setopt($ch, CURLOPT_TIMEOUT,        30);

			

			// execute

			$ret = curl_exec($ch);

			

			$content_type = curl_getinfo( $ch, CURLINFO_CONTENT_TYPE );

			

			curl_close($ch);
Bien que... Gros problème quand même :



$ret = curl_setopt($ch, CURLOPT_URL,            'http://tinyurl.com/23lmz7/gallery/main.php?g2_view=core.DownloadItem&g2_itemId=19&g2_GALLERYSID=42b3eef82866b4a4586c251b6d3cb4cf');
$content_type = curl_getinfo( $ch, CURLINFO_CONTENT_TYPE );

retourne img/jpeg


$ret = curl_setopt($ch, CURLOPT_URL,            $the_image_url); 
$content_type = curl_getinfo( $ch, CURLINFO_CONTENT_TYPE );

retourne retourne text/html, alors que cela revient au même !


$the_image_url =  http://tinyurl.com/23lmz7/gallery/main.php?g2_view=core.DownloadItem&g2_itemId=19&g2_GALLERYSID=42b3eef82866b4a4586c251b6d3cb4cf
 
      $ch = curl_init(); // create cURL handle (ch)

      if (!$ch) {

          die("Couldn't initialize a cURL handle");

      }

      // set some cURL options

      $ret = curl_setopt($ch, CURLOPT_URL,            $the_image_url);

      $ret = curl_setopt($ch, CURLOPT_HEADER,         1);

      $ret = curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

      $ret = curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

      $ret = curl_setopt($ch, CURLOPT_TIMEOUT,        30);

      

      // execute

      $ret = curl_exec($ch);
Bonsoir,

Si je copie ton adresse et que je l'entre, j'obtiens une page d'erreur dont le type mime est bien text/html.

Apparemment il y a une clef de session dans cette url, je suppose que tu as fait ton premier test lorsqu'elle était encore valide et le second lorsqu'elle ne l'était plus. Si tu essayes à l'heure actuelle je suppose que les deux retournent text/html.
C'est bon, j'ai réussi...
Le problème venait de l'adresse que j'envoyait au curl, qui contenait des "&" au format HTML...
Après un petit preg_replace, ça marche !